Witam skończyłem mój program który pobiera z jednego pliku liczby i rozklada je na liczby pierwsze.
Wymysliłem cos takiego:Pobieram ciag z pliku getlinem,sprawdzam czy to jest na pewno liczba,jak jest to liczba to wykonuje działanie,jak nie jest to liczba wypisuje błąd,ale sam kod wydaje mi sie dziwny i troche przekombinowany dodatkowo mam jeden problem chciałbym,zeby po zmianie danych wejsciowych i ponownym odpaleniu programu liczby w pliku 2 sie zamienialy,a nie dopisywały,ale jak nie dam app to program zle dziala. I jeszcze prosze ,bo nie moge znaleŹĆ linka jak zrobic zeby ten program mogl byc odpalony z lini polecen.
#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 | ios::app );
plikos << k;
}
void zapisdo( string plik2, int k )
{
fstream pliko;
pliko.open( "plik2.txt", ios::out | ios::app );
pliko << k<<" ";
pliko.close();
}
void rozklad( int x ) // rozklad na czyyniki
{
string plik2;
const char* s="\n";
int k = 2;
while( x > 1 )
{
while( x % k == 0 )
{
zapisdo( plik2, k );
x /= k;
}
++k;
}
zapisdo2(plik2,s);
}
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 );
iss>> x;
rozklad( x );
}
else
{
const char* k = "blad wprowadzenia\n";
zapisdo2( plik2, k );
}
}
}
else
cout << "nie udalo sie wczytac";
plik.close();
}
int main()
{
string plik1;
odczytpliku( plik1 );
return 0;
}