Zdravím, nejdříve sem si vytvořil program, který čte z již vytvořeného souboru čísla, která jsou napsaná vždy jedno na řádku a potom do druhého souboru pro zápis je napíše postupně nejdříve sudá potom lichá tedy vyberu sudá a zapíši je a pak skočím na začátek souboru vyberu lichá a zapíši je.
Potom sem si chtěl program upravit tak abych si soubor, z kterého potom čtu vytvořil sám a sám do něj nastrkal hodnoty. Ale problém je v to, že poslední číslo, které zadám se načte dvakrát.
Například mám čísla 1 2 3 4 5 (mezeru berte jako řádek) a ve výstupním souboru se mi napíše 2 4 1 3 5 5 tedy dvakrát ta 5. Jak tuto chybu opravit stále nemůžu zjistit, když sem si do souboru pro čtení sám nezapisoval v programu tak to bylo funkční.
Zde je zdrojový kód:
#include <fstream>
#include <iostream>
using namespace std;
int evenOdd ( const char * srcFileName, const char * dstFileName )
{
int cislo;
ifstream soubor1;
soubor1.open(srcFileName,ios::in);
ofstream soubor2;
soubor2.open(dstFileName,ios::out);
if(soubor1==0 || soubor2==0){
cout<<"soubor se neotevrel"<<endl;
return 1;
}
while(!soubor1.eof()) {
soubor1>>cislo;
if (cislo%2==0){
soubor2<<cislo<<endl;
}
}
soubor1.clear();
soubor1.seekg(0, ios::beg);
while(!soubor1.eof()) {
soubor1>>cislo;
if (cislo%2!=0){
soubor2<<cislo<<endl;
}
}
soubor1.close();
soubor2.close();
return 0;
}
int main ( int argc, char * argv [] )
{
int zapis;
ofstream soubor;
soubor.open("input.txt",ios::out);
if(!soubor.is_open()){
cout<<"soubor se neotevrel"<<endl;
return 1;
}
for(int i=0;i<5;i++){
cout<<"Napis cislo:"<<endl;
cin>>zapis;
soubor << zapis<<endl;
}
soubor.close();
evenOdd("input.txt", "output.txt");
return 0;
}