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

Pliki odczytywane tylko raz.

Ostatnio zmodyfikowano 2015-12-07 13:02
Autor Wiadomość
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.

 
C/C++
#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 ) // rozklad na czyyniki
{
    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;
}
P-141523
carlosmay
» 2015-12-06 19:37:31
Zmień temat na wskazujący konkretny błąd. Inni też szukają rozwiązań.
P-141525
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.
P-141529
darko202
» 2015-12-07 13:02:02
1.
w pętli
C/C++
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)"
P-141566
« 1 »
  Strona 1 z 1