wypisywanie do pliku
Ostatnio zmodyfikowano 2015-08-04 22:13
mlOOdy Temat założony przez niniejszego użytkownika |
wypisywanie do pliku » 2015-08-04 15:11:10 cześć, mam problem program ma wypisać do pliku wynik4.txt stringi które mają najdłuższą liczbę zer w sobie, program pomija przy wypisywaniu do pliku wynik4.txt jednego stringa. (funkcje: czy_wiecej, czy_2b i związany z nim kod działają poprawnie) link do pliku slowa.txt: http://przeklej.org/file/pach25/slowa.txt #include <iostream> #include <fstream> #include <string> using namespace std;
int czy_wiecej( string n ) { int czy_wiecej = 0; int liczba_0 = 0; int liczba_1 = 0; int x = n.size(); for( int i = 0; i < x; i++ ) { if( n[ i ] == '0' ) liczba_0++; else liczba_1++; } if( liczba_0 > liczba_1 ) czy_wiecej = 1; return czy_wiecej; }
int czy_2b( string n ) { int czy_2b = 0; int x = n.size(); for( int i = 1; i < x; i++ ) { if( n[ i ] != n[ i - 1 ] ) czy_2b++; } if( czy_2b != 1 ) czy_2b = 0; return czy_2b; }
int nbw( string n ) { int poczatkowy_nbw = 0; int koncowy_nbw = 0; int x = n.size(); for( int i = 0; i < x; i++ ) { if( n[ i ] == '0' ) { poczatkowy_nbw++; if( i == x - 1 && poczatkowy_nbw > koncowy_nbw ) koncowy_nbw = poczatkowy_nbw; } else if( poczatkowy_nbw > koncowy_nbw ) { koncowy_nbw = poczatkowy_nbw; poczatkowy_nbw = 0; } else poczatkowy_nbw = 0; } return koncowy_nbw; }
void wypisz_nbw( ofstream & wypisz_wyniki, string n, int wynik4p3 ) { int pomocnicza = 0; int wynikowa = 0; int x = n.size(); for( int i = 0; i < x; i++ ) { if( n[ i ] == '0' ) { pomocnicza++; if( i == x - 1 && pomocnicza > wynikowa ) wynikowa = pomocnicza; } else if( pomocnicza > wynikowa ) { wynikowa = pomocnicza; pomocnicza = 0; } else pomocnicza = 0; } if( wynikowa == wynik4p3 ) wypisz_wyniki << n << endl; }
int main() { int wynik4p1 = 0; int wynik4p2 = 0; int wynik4p3 = 0; string n; ifstream wczytaj( "slowa.txt" ); ofstream wypisz_wyniki( "wynik4.txt" ); while( wczytaj >> n ) { wczytaj >> n; wynik4p1 += czy_wiecej( n ); wynik4p2 += czy_2b( n ); if( nbw( n ) > wynik4p3 ) wynik4p3 = nbw( n ); } wypisz_wyniki << wynik4p1 << endl; wypisz_wyniki << wynik4p2 << endl; wypisz_wyniki << wynik4p3 << endl; wczytaj.clear(); wczytaj.seekg( 0 ); while( wczytaj >> n ) { wczytaj >> n; wypisz_nbw( wypisz_wyniki, n, wynik4p3 ); wczytaj.clear(); } wczytaj.close(); wypisz_wyniki.close(); system( "pause" ); } |
|
Monika90 |
» 2015-08-04 18:12:44 W obydwu tych pętlach while( wczytaj >> n ) { wczytaj >> n; wynik4p1 += czy_wiecej( n ); wynik4p2 += czy_2b( n ); if( nbw( n ) > wynik4p3 ) wynik4p3 = nbw( n ); }
while( wczytaj >> n ) { wczytaj >> n; wypisz_nbw( wypisz_wyniki, n, wynik4p3 ); wczytaj.clear(); }
masz dwa razy wczytaj >> n . Tak jest źle, przez to co drugi ciąg jest ignorowany. wczytaj >> n powinno być tylko w warunku while. |
|
mlOOdy Temat założony przez niniejszego użytkownika |
» 2015-08-04 22:13:27 aha, dziękuję. |
|
« 1 » |