Pliki odczytywane tylko raz.
Ostatnio zmodyfikowano 2015-12-07 13:02
divider212 Temat założony przez niniejszego użytkownika |
Pliki odczytywane tylko raz. » 2015-12-06 19:29:16 Witam napisałem program który pobiera z pliku liczby i zamienia je na liczby pierwsze(1 liczba na 1 linijke). Program wyglada tak,ze odczytuje liczbe sprawdzam czy to jest liczba jak tak to wykonuje działanie jak nie to wypisuje błąd. Problem w tym,ze dzialanie sie nie wykonuje,a błąd wyskakuje w jednej linijce nawet jak mama 4 liczby złe.Nie wiem czy z tymi niewiadomymi czegos nie poknociłem,bo juz sie troche w tym pogubiłem. #include <iostream> #include <fstream> #include <conio.h> #include <string> #include <cstdlib> #include <sstream> using namespace std;
void zapisdo2( string plik2, const char * k ) { fstream plikos; plikos.open( "plik2.txt", ios::out ); plikos << k << endl; }
void zapisdo( string plik2, int k ) { fstream pliko; pliko.open( "plik2.txt", ios::out ); pliko << k << endl; }
void rozklad( int x ) { string plik2; int k = 2; while( x > 1 ) { while( x % k == 0 ) { zapisdo( plik2, k ); x /= k; } ++k; } }
void odczytpliku( string plik1 ) { string plik2; fstream plik; string linia; int z; plik.open( "plik1.txt", ios::in ); if( plik.good() ) { while( getline( plik, linia ) ) { z = 0; int x = 0; for( unsigned int i = 0; i < linia.length(); i++ ) { if( !isdigit( linia[ i ] ) ) { z = 1; } } if( z != 1 ) { istringstream iss( linia ); linia = x; rozklad( x ); } else { const char * k = "blad wprowadzenia\n"; zapisdo2( plik2, k ); } } } else cout << "nie udalo sie wczytac"; }
int main() { string plik1; odczytpliku( plik1 ); return 0; }
|
|
carlosmay |
» 2015-12-06 19:37:31 Zmień temat na wskazujący konkretny błąd. Inni też szukają rozwiązań. |
|
divider212 Temat założony przez niniejszego użytkownika |
» 2015-12-06 19:41:48 Sęk w tym,że nie wiem gdzie jest błąd....wiem tylko,że działa znajdywanie ze to nie jest liczba,ale czemu blad jest wypisywany tylko raz?w jednej lini?I czemu nie wykonywane jest działanie. |
|
darko202 |
» 2015-12-07 13:02:02 1. w pętli for( unsigned int i = 0; i < linia.length(); i++ ) { if( !isdigit( linia[ i ] ) ) { z = 1; } }
nie obsługujesz prawidłowo błędu sprawdź np. dla linia ="3er4" po wyjściu z==1 2. Zapoznaj się z techniką debugowania programu poszukaj na https://www.google.pl/?gws_rd=ssl#q=debugging%20c%2B%2B"Debugging your program (stepping and breakpoints)" |
|
« 1 » |