rozdz. 20 przykład 20.1
Ostatnio zmodyfikowano 2010-04-14 15:56
marek Temat założony przez niniejszego użytkownika |
rozdz. 20 przykład 20.1 » 2010-04-13 21:33:04 Do folderu wrzuciłem mojplik.txt, skompilowałem i uruchomiłem program. Pojawił się komunikat 20.1.exe has encountered a problem and needs to close. We are sorry for the inconvenience. |
???????????? |
|
GoldWolf |
» 2010-04-14 15:56:03 Było kilka błędów do usunięcia. 1 - gdy nie było pliku aplikacja nie potrzebnie ten plik tworzyła. 2 - zmienne wynik i x nie były potrzebne. Tu masz to poprawione, ja jednak będę musiał się jeszcze temu bliżej przyjrzeć bo jest jeszcze jeden mały błąd no i lekcję trzeba poprawić. #include <conio.h> #include <iostream> #include <string> #include <fstream> #include <sstream> int OdczytPliku( const std::string & nazwapliku, std::string & bufor ); void Algorytm( std::string & bufor, short a, int b ); void ZapisPliku( const std::string & nazwapliku, const std::string & bufor ); std::string PL( std::string & znak );
int main() { using std::string; using std::cout; const string NAZWAPLIKU = "mojplik.txt"; string danepliku; if( OdczytPliku( NAZWAPLIKU, danepliku ) == 0 ) { Algorytm( danepliku, 0, 0 ); ZapisPliku( NAZWAPLIKU, danepliku ); cout << PL( danepliku ); } getch(); return 0; }
int OdczytPliku( const std::string & nazwapliku, std::string & bufor ) { using std::fstream; fstream plik; std::string bufor1; plik.open( nazwapliku.c_str(), std::ios::in ); if( plik.is_open() ) { while( !plik.eof() ) { getline( plik, bufor1 ); bufor1 += "\n"; bufor += bufor1; } plik.close(); return 0; } else { std::cout << "Brak mojego pliku !"; return 1; } }
void Algorytm( std::string & bufor, short a, int b ) { short pozycja, pozycja1; std::string bufor1; std::stringstream IntToStr; if( bufor.find( 'ż' ) ) { pozycja = bufor.find( 'ż' ); pozycja += 2; bufor1.assign( bufor, pozycja, 10 ); if( bufor1.find( ' ' ) ) { pozycja1 = bufor1.find( ' ' ); bufor1.assign( bufor1, 0, pozycja1 ); sscanf( bufor1.c_str(), "%d", & zmienna ); Wynik = 2 * ++zmienna + 15; IntToStr << zmienna; IntToStr >> bufor1; IntToStr.clear(); bufor.replace( pozycja, pozycja1, bufor1 ); if( bufor.find( "funkcja" ) ) { pozycja = bufor.find( '2', bufor.find( "funkcja" ) ); bufor.replace( pozycja + 4, pozycja1, bufor1 ); } if( bufor.find( "k to " ) ) { pozycja = bufor.find( ' ', bufor.find( "k to " ) ); IntToStr << Wynik; IntToStr >> bufor1; bufor.replace(( pozycja + 4 ), bufor1.length(), bufor1 ); } } } else std::cout << "Brak szukanej litery!"; }
void ZapisPliku( const std::string & nazwapliku, const std::string & bufor ) { using std::fstream; fstream plik; plik.open( nazwapliku.c_str(), std::ios::out ); if( plik.is_open() ) { plik << bufor; } else std::cout << "Brak mojego pliku !"; }
std::string PL( std::string & znak ) { for( unsigned i = 0; i < znak.length(); i++ ) { switch( znak[ i ] ) { case 'ą': znak[ i ] = static_cast < char >( 165 ); break; case 'ć': znak[ i ] = static_cast < char >( 134 ); break; case 'ę': znak[ i ] = static_cast < char >( 169 ); break; case 'ł': znak[ i ] = static_cast < char >( 136 ); break; case 'ń': znak[ i ] = static_cast < char >( 228 ); break; case 'ó': znak[ i ] = static_cast < char >( 162 ); break; case 'ś': znak[ i ] = static_cast < char >( 152 ); break; case 'ź': znak[ i ] = static_cast < char >( 171 ); break; case 'ż': znak[ i ] = static_cast < char >( 190 ); break; case 'Ą': znak[ i ] = static_cast < char >( 164 ); break; case 'Ć': znak[ i ] = static_cast < char >( 143 ); break; case 'Ę': znak[ i ] = static_cast < char >( 168 ); break; case 'Ł': znak[ i ] = static_cast < char >( 157 ); break; case 'Ń': znak[ i ] = static_cast < char >( 227 ); break; case 'Ó': znak[ i ] = static_cast < char >( 224 ); break; case 'Ś': znak[ i ] = static_cast < char >( 151 ); break; case 'Ź': znak[ i ] = static_cast < char >( 141 ); break; case 'Ż': znak[ i ] = static_cast < char >( 189 ); break; } } return znak; }
|
|
« 1 » |