Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

wypisywanie do pliku

Ostatnio zmodyfikowano 2015-08-04 22:13
Autor Wiadomość
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

C/C++
#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" );
}
P-135686
Monika90
» 2015-08-04 18:12:44
W obydwu tych pętlach
C/C++
while( wczytaj >> n ) {
   
    wczytaj >> n;
    wynik4p1 += czy_wiecej( n );
    wynik4p2 += czy_2b( n );
    if( nbw( n ) > wynik4p3 )
         wynik4p3 = nbw( n );
   
}

C/C++
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.
P-135700
mlOOdy
Temat założony przez niniejszego użytkownika
» 2015-08-04 22:13:27
aha, dziękuję.
P-135725
« 1 »
  Strona 1 z 1