Witam napisałem program który rozklada liczbe w pliku na liczby pierwsze i nie wiem czy dobrze użyłem referencji pliku do zapisu.Program sie kompiluje,ale nie moge sprawdzic czy działa bo jak daje nazwy pliku txt wychodzi bład to,ze zle podany plik wejsciowy,a uruchamiam go tak,ze wchodze w cmd wklejam plik exe i podaje -o plik.txt -i plik2.txt pliki sa w folderze z exe z tym tez sie przyda mała pomoc.
Kod:
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
#include <cstdlib>
#include <sstream>
#include <string.h>
using namespace std;
void rozklad(int x, fstream &plikzap) // rozklad na czyyniki
{
int k = 2;
while (x > 1)
{
while (x % k == 0)
{
plikzap<<k;
x /= k;
}
++k;
}
}
void odczytpliku(const string &plikotwierany, fstream &plikzap)//Funkcja odczytujaca plik wejsciowy
{
fstream plik;
string linia;
int z;
plik.open(plikotwierany.c_str(), ios::in);
if (plik.good())
{
while (getline(plik, linia))
{
z = 0;
int x = 0;
for (unsigned int i = 0; i < linia.length(); i++)//sprawdzanie czy to jest liczba
{
if (!isdigit(linia[i]))//warunek do liczby
{
z = 1;//zmienna okreslajaca czy to jest liczba czy nie.
}
}
if (z != 1)
{
istringstream iss(linia);//konwersja stringu na int.
iss >> x;
rozklad(x, plikzap);//rozpoczecie dzia³ania.
}
else
{
const char* k = "blad wprowadzenia\n";//
plikzap<<k;
}
}
}
cout << "zle podany plik wejsciowy"; //Plik wejsciowy jest niepoprawny
plik.close();
}
int main(int argc, char*argv[])
{
string plikotwierany = "";
string plikzapisywany = "";
if (argc == 1)
{
cout << "Nie podano argumentow.Podaj zrodlo i plik docelowy" << endl << "przyklad:plik.exe -o x.txt -i y.txt";
return 0;
}
else
{
char *stringotwarcia = "-i";
char *stringzapisu = "-o";
for (int a = 1; a<argc; ++a)
{
if (!strcmp(argv[a], stringotwarcia))
{
plikotwierany = argv[a + 1];
}
else if (!strcmp(argv[a], stringzapisu))
{
plikzapisywany = argv[a + 1];
}
}
if (plikotwierany.length() == 0)
{
cout << "nie podano pliku otwarcia";
return 0;
}
if (plikzapisywany.length() == 0)
{
cout << "nie podano pliku zapisu";
return 0;
}
}
fstream plikzap;
plikzap.open(plikzapisywany.c_str(), ios::out);
odczytpliku(plikotwierany, plikzap);
plikzap.close();
return 0;
}