,   CyberForum.ru

"In file included from fig11_08.cpp" - C++

C++ http://www.cyberforum.ru/cpp-beginners/thread1226962.html
y=x^2+1; 1≤x≤5, ∆x=0,5, .
C++ . , , :\users C:\Windows ?( , 0 ) Visual Studio 2010 : #include <stdio.h> #include <stdlib.h> http://www.cyberforum.ru/cpp-beginners/thread1226949.html
C++ : 2 -
! , - . . 2 , a??? class Parent
C++ , 0,6
3 , 0,6 S=1+\sum_{n=1}^{\infty}\frac{x^n}{n!}\; ,\; x=0,9
C++ , http://www.cyberforum.ru/cpp-beginners/thread1226941.html
2 , , , .
C++ 1 3 .

05
12 / 12 / 0
: 31.08.2011
: 458
18.07.2014, 14:04  []     "In file included from fig11_08.cpp"
, , , , , . , , ( ). , , .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Ðèñ. 11.9: String.h 
// Îïðåäåëå*èå êë*ññ* String. 
#ifndef STRING_H 
#define STRING_H 
 
#include <iostream> 
using std::ostream; 
using std::istream; 
 
class String 
{ 
   friend îstream &operator<<( ostream &, const String & ) ; 
   friend istream &operator>>( istream &, String & ) ; 
public: 
   String( const char * = "" ); // ê-òîð ïðåîáð*çîâ**èÿ/ïî óìîë÷**èþ 
   String( const String & ); // êî*ñòðóêòîð êîïèè 
   ~String(); // äåñòðóêòîð 
   
   const String &operator=( const String & ); // on. ïðèñâ*èâ**èÿ 
   const String &operator+=( const String & ); // on. êî*ê*òå**öèè 
   
   bool operator!() const; // ïóñò* ëè ñòðîê*? 
   bool operator==( const String & ) const; // ïðîâåðèòü si == s2 
   bool operator<( const String & ) const; // ïðîâåðèòü si < s2 
   
   // ïðîâåðèòü si != s2 
   bool operator!=( const String &right ) const 
   { 
     return !( *this == right ); 
   } // êî*åö ôó*êöèè operator!= 
   
   // ïðîâåðèòü si > s2 
   bool operator>( const String &right ) const 
   { 
     return right < *this; 
   } // êî*åö ôó*êöèè operator> 
   
   // ïðîâåðèòü si <= s2 
   bool operator<=( const String &right ) const 
   { 
     return !( right < *this ); 
   } // êî*åö ôó*êöèè operator <= 
   
   // ïðîâåðèòü si >= s2 
   bool operator>=( const String &right ) const 
   { 
     return !( *this < right ); 
   } // êî*åö ôó*êöèè operator>= 
   
   char &operator[]( int ); // îïåð*öèÿ è*äåêñ*öèè (lvalue) 
   char operator[]( int ) const; // îïåð*öèÿ è*äåêñ*öèè (rvalue) 
   String operator()( int, int = 0 ) const; // âîçâð*òèòü ïîäñòðîêó 
   int getLength() const; // âîçâð*òèòü äëè*ó ñòðîêè 
private: 
   int length; // äëè** ñòðîêè (*å ñ÷èò*ÿ ç*âåðø*þùèé *óëü) 
   char *sPtr; // óê*ç*òåëü ** **÷*ëî ïðåäñò*âëå*èÿ ñòðîêè
   
   void setString( const char * ); // âñïîìîã*òåëü**ÿ ôó*êöèÿ 
}; // êî*åö êë*ññ* String 
 
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
// Ðèñ. 11.10: String.ñðð 
// Îïðåäåëå*èå ýëåìå*ò-ôó*êöèé äëÿ êë*ññ* String. 
#include <iostream> 
using std::cerr; 
using std::cout; 
using std::endl; 
 
#include <iomanip> 
using std::setw; 
 
#include <cstring> // ïðîòîòèïû strcpy è streat 
using std::strcmp; 
using std::strcpy; 
using std::strcat; 
 
#include <cstdlib> // ïðîòîòèï exit 
using std::exit; 
 
#include "String.h" // îïðåäåëå*èå êë*ññ* String 
 
// êî*ñòðóêòîð ïðåîáð*çîâ**èÿ (è ïî óìîë÷**èþ) char* â String 
String::String( const char *s ) 
: length( ( s != 0 ) ? strlen( s ) : 0 ) 
{ 
   cout << "Conversion (and default) constructor: " << s << endl; 
   setString( s ); // call utility function 
} // êî*åö êî*ñòðóêòîð* ïðåîáð*çîâ**èÿ String 
 
// êî*ñòðóêòîð êîïèè 
String::String( const String &copy ) 
: length( copy.length ) 
{ 
   cout << "Copy constructor: " << copy.sPtr << endl; 
   setString( copy.sPtr ); // call utility function 
} // êî*åö êî*ñòðóêòîð* êîïèè String 
 
// äåñòðóêòîð 
String::~String() 
{ 
   cout << "Destructor: " << sPtr << endl; 
   delete [] sPtr; // îñâîáîäèòü ñòðîêó, ïðåäñò*âëå**óþ óê*ç*òåëåì 
} // êî*åö äåñòðóêòîð* -String 
 
// ïåðåãðóæå***ÿ îïåð*öèÿ =; ïðåäîòâð*ù*åò ñ*ìîïðèñâ*èâ**èå 
const String &String::operator=( const String &right ) 
{ 
   cout << "operator= called" << endl; 
   
   if ( &right != this ) // ïðåäîòâð*òèòü ñ*ìîïðèñâ*èâ**èå 
   { 
      delete [] sPtr; // ïðåäîòâð*ù*åò óòå÷êó ï*ìÿòè 
      length = right.length; // *îâ*ÿ äëè** ñòðîêè 
      setString( right.sPtr ); // âûçâ*òü âñïîìîã*òåëü*óþ ôó*êöèþ 
   } // êî*åö if 
   else 
        cout << "Attempted assignment of a String to itself" << endl; 
   
   return *this; // ð*çðåø*åò ê*ñê*ä*îå ïðèñâ*èâ**èå 
} // êî*åö ôó*êöèè operator= 
 
// ïðèñîåäè*èòü ïð*âûé îïåð**ä ê îáúåêòó è ñîõð**èòü â îáúåêòå 
const String &String::operator+=( const String &right ) 
{ 
   size_t newLength = length + right.length; // *îâ*ÿ äëè** 
   char *tempPtr = new char[ newLength + 1 ]; // âûäåëèòü ï*ìÿòü 
   
   strcpy( tempPtr, sPtr ); // êîïèðîâ*òü sPtr 
   strcpy( tempPtr + length, right.sPtr ); // êîïèðîâ*òü right.sPtr 
   
   delete [] sPtr; // îñâîáîäèòü ñò*ðûé ì*ññèâ 
   sPtr = tempPtr; // ïðèñâîèòü sPtr *îâûé ì*ññèâ 
   length = newLength; // ïðèñâîèòü length *îâóþ äëè*ó 
   return *this; // ð*çðåø*åò ê*ñê*ä*ûå âûçîâû 
} // êî*åö ôó*êöèè operator+= 
 
// Ïóñò* ëè ñòðîê*? 
bool String::operator!() const 
{ 
  return length == 0; 
} // êî*åö ôó*êöèè operator! 
 
// Ð*â** ëè ä****ÿ ñòðîê* ïð*âîé ñòðîêå? 
bool String::operator==( const String &right ) const 
{ 
  return strcmp( sPtr, right.sPtr ) == 0; 
} // êî*åö ôó*êöèè operator== 
 
// Ìå*üøå ëè ä****ÿ ñòðîê* ïð*âîé ñòðîêå? 
bool String::operator<( const String &right ) const 
{ 
  return strcmp( sPtr, right.sPtr ) < 0; 
} // êî*åö ôó*êöèè operator< 
 
// âîçâð*òèòü ññûëêó ** ñèìâîë ñòðîêè ê*ê ìîäèôèöèðóåìîå lvalue 
char &String::operator[] ( int subscript ) 
{ 
   // ïðîâåðèòü ** âûõîä è*äåêñ* èç äè*ï*çî** 
   if ( subscript < 0 || subscript >= length ) 
   { 
      cerr << "Error: Subscript " << subscript 
      << " out of range" << endl; 
      exit( 1 ); // ç*âåðøèòü ïðîãð*ììó 
   } // êî*åö if 
   
   return sPtr[ subscript ]; // ìîäèôèöèðóåìîå lvalue 
} // êî*åö ôó*êöèè operator[] 
 
// âîçâð*òèòü ññûëêó ** ñèìâîë ñòðîêè ê*ê rvalue 
char String::operator[] ( int subscript ) const 
{ 
   // ïðîâåðèòü ** âûõîä è*äåêñ* èç äè*ï*çî** 
   if ( subscript < 0 || subscript >= length ) 
   { 
      cerr << "Error: Subscript " << subscript 
      << " out of range" << endl; 
      exit( 1 ); // ç*âåðøèòü ïðîãð*ììó 
   } // êî*åö if 
   
   return sPtr[ subscript ]; // âîçâð*ù*åò êîïèþ ýëåìå*ò* 
} // êî*åö ôó*êöèè operator[] 
 
// âîçâð*òèòü ïîäñòðîêó, **÷è**þùóþñÿ ñ index è äëè*îé subLength 
String String::operator()( int index, int subLength ) const 
{ 
   // åñëè è*äåêñ â*å äè*ï*çî** èëè äëè** ñòðîêè < 0, 
   // âîçâð*òèòü ïóñòîöé îáúåêò String 
   if ( index < 0 || index >= length || subLength < 0 ) 
      return ""; // *âòîì*òè÷åñêè ïðåîáð*çóåòñÿ â îáúåêò String 
   
   // îïðåäåëèòü äëè*ó ïîäñòðîêè 
   int len; 
   
   if ( ( subLength == 0 ) || ( index + subLength > length ) ) 
      len = length - index; 
   else 
        len = subLength; 
   
   // âûäåëèòü âðåìå**ûé ì*ññèâ äëÿ ïîäñòðîêè 
   //è ç*âåðø*þùåãî *óëåâîãî ñèìâîë* 
   char *tempPtr = new char[ len + 1 ]; 
   
   // êîïèðîâ*òü ñòðîêó â ì*ññèâ è ç*âåðøèòü ñòðîêó 
   strncpy( tempPtr, &sPtr[ index ], len ); 
   tempPtr[ len ] = '\0'; 
   
   // ñîçä*òü âðåìå**ûé îáúåêò String, ñîäåðæ*ùèé ïîäñòðîêó 
   String tempString( tempPtr ); 
   delete [] tempPtr; // óä*ëèòü âðåìå**ûé ì*ññèâ 
   return tempString; // âîçâð*òèòü êîïèþ âðåìå**îãî îáúåêò* String 
} // êî*åö ôó*êöèè operator() 
 
// âîçâð*òèòü äëè*ó ñòðîêè 
int String::getLength() const 
{ 
  return length; 
} // êî*åö ôó*êöèè getLength 
 
// âñïîìîã*òåëü**ÿ ôó*êöèÿ, âûçûâ*åì*ÿ êî*ñòðóêòîð*ìè è operator= 
void String::setstring( const char *string2 ) 
{ 
   sPtr = new char[ length +1 ]; // âûäåëèòü ï*ìÿòü 
   
   if ( string2 != Î ) // åñëè string2 - *å NULL, êîïèðîâ*òü 
      strcpy( sPtr, string2 ); // êîïèðîâ*òü ëèòåð*ë â îáúåêò 
   else // åñëè string2 - NULL, ñäåë*òü this ïóñòîé ñòðîêîé 
        sPtr[ 0 ] = '\0'; // ïóñò*ÿ ñòðîê* 
} // êî*åö ôó*êöèè setString 
 
// ïåðåãðóæå***ÿ îïåð*öèÿ âûâîä* 
ostream &operator<<( îstream &output, const String &s ) 
{ 
   output << s.sPtr; 
   return output; // ð*çðåø*åò ê*ñê*äèðîâ**èå 
} // êî*åö ôó*êöèè operator<< 
 
// ïåðåãðóæå***ÿ îïåð*öèÿ ââîä* 
istream &operator>>( istream &input, String &s ) 
{ 
   char temp[ 100 ]; // áóôåð äëÿ õð**å*èÿ ââîä* 
   input >> setw( 100 ) >> temp; 
   s = temp; // èñïîëüçîâ*òü îïåð*öèþ ïðèñâ*èâ**èÿ êë*ññ* String 
   return input; // ð*çðåø*åò ê*ñê*äèðîâ**èå 
} // êî*åö ôó*êöèè operator>>
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Ðèñ. 11.11: fig11_11.cpp 
// Òåñòîâ*ÿ ïðîãð*ìì* äëÿ êë*ññ* String. 
#include <iostream> 
using std::cout; 
using std::endl; 
using std::boolalpha; 
 
#include "String.h" 
 
int main() 
{ 
   String s1( "happy" ); 
   String s2( " birthday" ); 
   String s3; 
   
   // òåñòèðîâ*òü ïåðåãðóæå**ûå îïåð*öèè ð*âå*ñòâ* è îò*îøå*èé 
   cout << "s1 is \"" << s1 << "\"; s2 is \"" << s2 
   << "\"; s3 is \"" << s3 << '\"' 
   << boolalpha << "\n\nThe results of comparing s2 and s1:" 
   << "\ns2 == s1 yields " << ( s2 == s1 ) 
   << "\ns2 != s1 yields " << ( s2 != s1 ) 
   << "\ns2 > s1 yields " << ( s2 > s1 ) 
   << "\ns2 < s1 yields " << ( s2 < s1 ) 
   << "\ns2 >= s1 yields " << ( s2 >= s1 ) 
   << "\ns2 <= s1 yields " << ( s2 <= s1 ); 
   
   
   // òåñòèðîâ*òü ïåðåãðóæå**óþ îïåð*öèþ "ïóñòî" (!) êë*ññ* String 
   cout << "\n\nTesting !s3:" << endl;
    
   if ( !s3 ) 
   { 
      cout << "s3 is empty; assigning s1 to s3;" << endl; 
      s3 = s1; // ïðîòåñòèðîâ*òü ïåðåãðóæå**îå ïðèñâ*èâ**èå 
      cout << "s3 is \"" << s3 << "\""; 
   } // êî*åö if 
   
   // òåñòèðîâ*òü ïåðåãðóæå**óþ îïåð*öèþ êî*ê*òå**öèè ñòðîê 
   cout << "\n\ns1 += s2 yields si = "; 
   s1 += s2; // ïðîòåñòèðîâ*òü ïåðåãðóæå**óþ êî*ê*òå**öèþ 
   cout << s1; 
   
   // òåñòèðîâ*òü êî*ñòðóêòîð ïðåîáð*çîâ**èÿ 
   cout << "\n\ns1 += \" to you\" yields" << endl; 
   s1 += " to you"; // test conversion constructor 
   cout << "s1 = " << s1 << "\n\n"; 
   
   // òåñòèðîâ*òü îïåð*öèþ âûçîâ* () äëÿ ïîäñòðîêè 
   cout << "The substring of s1 starting at\n" 
   << "location 0 for 14 characters, s1(0, 14), is:\n" 
   << s1( 0, 14 ) << "\n\n"; 
   
   // òåñòèðîâ*òü ñëó÷*é ïîäñòðîêè "äî êî*ö* ñòðîêè" 
   cout << "The substring of s1 starting at\n" 
   << "location 15, s1 (15), is: " 
   << s1( 15 ) << "\n\n"; 
   
   // òåñòèðîâ*òü êî*ñòðóêòîð êîïèè 
   String *s4Ptr = new String( s1 ); 
   cout << "\n*s4Ptr = " << *s4Ptr << "\n\n"; 
   
   // òåñòèðîâ*òü îïåð*öèþ ïðèñâ*èâ**èÿ (=) ñ ñ*ìîïðèñâ*èâ**èåì 
   cout << "assigning *s4Ptr to *s4Ptr" << endl; 
   *s4Ptr = *s4Ptr; // ïðîòåñòèðîâ*òü ïåðåãðóæå**îå ïðèñâ*èâ**èå 
   cout << "*s4Ptr = " << *s4Ptr << endl; 
   
   // òåñòèðîâ*òü äåñòðóêòîð 
   delete s4Ptr; 
   
   // òåñòèðîâ*òü èñïîëüçîâ**èå è*äåêñ*öèè äëÿ ïîëó÷å*èÿ lvalue 
   s1[ 0 ] = 'Í'; 
   s1[ 6 ] = 'Â'; 
   cout << "\ns1 after s1[0] = 'H' and s1[6] = 'B' is: " 
   << s1 << "\n\n"; 
   
   // òåñòèðîâ*òü âûõîä è*äåêñ* èç äè*ï*çî** 
   cout << "Attempt to assign 'd' to s1[30] yields:" << endl; 
   s1[ 30 ] = 'd'; // ÎØÈÁÊÀ: è*äåêñ â*å äè*ï*çî** 
   return 0; 
} // êî*åö main
 
: 09:18. GMT +3.
- , ,
-
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
@Mail.ru