Anonymní profil Martin – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Martin – Programujte.comAnonymní profil Martin – Programujte.com

 

Příspěvky odeslané z IP adresy 83.240.13.–

Martin
C / C++ › Chyba při čtení z vytvořenéh…
30. 11. 2014   #196699

#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? 

Martin
C / C++ › Chyba při čtení z vytvořenéh…
29. 11. 2014   #196678

#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? 

Martin
C / C++ › Chyba při čtení z vytvořenéh…
29. 11. 2014   #196669

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.

Martin
C / C++ › Chyba při čtení z vytvořenéh…
29. 11. 2014   #196659

#2 KIIV
U této části:
 

for(int i=0;i<5;i++){
            cout<<"Napis cislo:"<<endl;
            cin>>zapis;
        soubor << zapis<<endl;
    }

A jak bych to provedl normálně pomocí cin.fail()?

Martin
C / C++ › Chyba při čtení z vytvořenéh…
28. 11. 2014   #196628

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;
 }


 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý