#8 KIIV
Děkuji mockrát :) Ještě dotaz do budoucna. Tohle budu muset použít vždy, když si vytvořím vlastní soubor, který nebude končit znakem ale odřádkováním, že ano? Kdyby tam to odřádkování nebylo nemusel bych toto řešit,že?
Příspěvky odeslané z IP adresy 83.240.13.–
#6 KIIV
Takže chyba je to, že za posledním číslem v input.txt mám ještě endl a tím pádem se provede ještě jednou cyklus while s předchozí načtenou hodnotou, říkám to správně? Ajestli jo tak jak se dá zjistit zda to znovu načetlo číslo nebo ne?
Aha a ošetřit by se to dalo jak? Nic sem nenašel. A jakto, že mi funguje když tam ty čísla nepíši takto ale tak, že si vytvořím texťák pro (input.txt) do něj dám čísla a funguje to.
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;
}