Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » rechnen, speichern, auslesen, vergleichen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 < [ 5 ] [ 6 ]
030
25.07.2004, 03:27 Uhr
invalid_username




C++:
    if(l_checkzahl == ???)
    {//wenn ja mach das:
        l_checkzahl++;
        //goto anfang von if und prüfe wieder
    }
    else
    {
        ofstream write("ok.txt");        //datei öffnen
        //checkzahl in ok.txt schreiben
        write<<l_checkzahl<<delim;
        //goto anfang von if und prüfe wieder
    }


mit den streams in der schleife ist auch nicht so doll -> begr. wie bei read_form_file

ich will ja nicht zuviel sagen aber du musst die abfrage (natürlich nicht so wie sie ist )
hinter dass read.getline machen dann kannst du schauen ob if (l_checkzahl== checkzahl_tmp)
aber ich denke hier wirst du nicht weiter kommen ...
ist echt nicht bös gemeint ...
dann müsstest alles noch in eine schleife machen --> zu empfehlen wär meiner meiner meinung nach for (unsigned int loops=0;loops<l_endzahl;loops++)// bei dia muss es aber unsigned long loops sein .. ich denke aber dass l_checkzahl nicht long sein muss also hab ich int genomen !!
darein dann deinen ganzen code ..

so genug geholfen für heudde
naja noch was--> nimm kein goto
--
((void)*)0

Dieser Post wurde am 25.07.2004 um 04:05 Uhr von invalid_username editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
031
25.07.2004, 11:36 Uhr
~Nachtträumer
Gast


Guten morgen



C++:

    while(l_checkzahl_tmp <= l_endzahl)
    {
        ofstream write("trash.txt", ios::app);        //datei öffnen        
        for(int j=2;j<=5;j++)                //checkzahl is nun schon multipliziert
        {
            //in die datei schreiben
            write<<l_checkzahl_tmp*j<<delim;
        }//for schreiben ende

        write.close();        //die datei schliessen

        char read_from_file[20];
        ifstream read("trash.txt");    //datei öffnen
        //aus datei lesen
        while(read.getline(read_from_file,sizeof(read_from_file)/sizeof(char),delim))
        /* getline liesst in dass array "read_from_file" bis zum nächsten "delim" */
    {
        l_checkzahl_tmp=atoi(read_from_file);
        /* checkzahl _tmp bekommt den int aus der datei weil wir aber in nen array lesen müssen
        wir mittels atoi in nen int wandeln ..nun kannste mit checkzahl_tmp weitermachten
        z.b mit dem wert von checkzahl vergleichen oder sonst was */
        
        cout << l_checkzahl_tmp << "\n";        //kontrollausgabe;
        }//while lesen ende
        read.close ();
        l_checkzahl++;
        l_checkzahl_tmp = l_checkzahl;
        cout << l_checkzahl_tmp << "<- checkzahl_tmp checkzahl++\n";        //kontrollausgabe
    }



Gebe ich jetzt als endzahl 3 ein. passiert folgendes:

Ausgabe:
Bitte letzte zu testende Zahl eingeben: 3
2
3
4
5
2<- checkzahl_tmp checkzahl++
2
3
4
5
4
6
8
10
3<- checkzahl_tmp checkzahl++
2
3
4
5
4
6
8
10
6
9
12
15
4<- checkzahl_tmp checkzahl++
Press any key to continue

Die richtigen zahlen werden in die trash.txt geschrieben aber bei der kontrollausgabe für die checkzahl_tmp gib er auch nochmal alle vorgänger aus, statt nur die aktuellen anzuzeigen.Wie kann das sein? checkzahl_tmp wird doch bei jedem durchlauf wieder neu gefüllt (mit den zahlen aus der datei). Kann es z.b. sein das mit "l_checkzahl_tmp=atoi(read_from_file)" alle zahlen eingelsen werden die schon in der datei stehen? Wie kann man so eine ausgabe erreichen:

Gebe ich jetzt als endzahl 3 ein. passiert folgendes:

Ausgabe:
Bitte letzte zu testende Zahl eingeben: 3
2
3
4
5
2<- checkzahl_tmp checkzahl++
4
6
8
10
3<- checkzahl_tmp checkzahl++
6
9
12
15
4<- checkzahl_tmp checkzahl++
Press any key to continue
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
032
25.07.2004, 13:38 Uhr
invalid_username




Zitat:
l_checkzahl_tmp=atoi(read_from_file)


nein read from file hat doch nua eine zahl durch getline erhalten
--
((void)*)0
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
033
25.07.2004, 13:48 Uhr
~Nachtträumer
Gast


Ich habe die sache mal entsprechend erweitert. Jetzt kommt es dem gewünschten ergebnis schon näher. (ist checkzahl in trash.txt dann nimm die nächste zahl. ist checkzahl nicht in trash.txt schreib sie in ok.txt und rechne checkzahl*2, *3, *4, *5, schreibe die ergebnisse dann wieder in trash.txt.)



C++:
// 12345.cpp : neue Datei - Definiert den Einsprungpunkt für die Konsolenanwendung.
//

#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char* argv[])
{
    unsigned long l_endzahl;
    unsigned long l_checkzahl = 1;
    unsigned long l_checkzahl_tmp = l_checkzahl;
    const char delim ='x';

    cout << "Bitte letzte zu testende Zahl eingeben: ";
    cin >> l_endzahl;    


    while(l_checkzahl_tmp <= l_endzahl)
    {
        char read_from_file[20];
        ifstream read("trash.txt");    //datei öffnen
        //aus datei lesen
        while(read.getline(read_from_file,sizeof(read_from_file)/sizeof(char),delim))
        /* getline liesst in dass array "read_from_file" bis zum nächsten "delim" */
        {
            l_checkzahl_tmp=atoi(read_from_file);
            /* checkzahl _tmp bekommt den int aus der datei weil wir aber in nen array lesen müssen
            wir mittels atoi in nen int wandeln ..nun kannste mit checkzahl_tmp weitermachten
            z.b mit dem wert von checkzahl vergleichen oder sonst was */
        
            if(l_checkzahl == l_checkzahl_tmp)
            { //stimmt checkzahl mit zahl aus datei überein erhöhe checkzahl und prüfe nächste zahl
                l_checkzahl++;
            }
            else if (befehl zum feststellen das dateiende erreicht) ///Befehl zum festellen des dateiendes?
            {
                //wenn checkzahl nicht trash.txt dann schreibe sie in ok.txt
                ofstream write("ok.txt", ios::app);        //datei öffnen        
    
                write<<l_checkzahl<<delim;    //in die datei schreiben
                write.close ();
                l_checkzahl++;
            }
        }//while lesen ende
        read.close ();
        ofstream write("trash.txt", ios::app);        //datei öffnen        
        for(int j=2;j<=5;j++)                //checkzahl is nun schon multipliziert
        {
            //in die datei schreiben
            write<<l_checkzahl_tmp*j<<delim;
        }//for schreiben ende
        write.close();        //die datei schliessen

    }
    getchar();
    return 0;
}


Folgendes problem ergibt sich hier:

es muss ja irgendwie geprüft werden ob das dateiende schon erreicht ist, um festzustellen ob die checkzahl in ok.txt geschrieben werden kann.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
034
25.07.2004, 14:00 Uhr
invalid_username



char read_from_file[20];.... du weisst doch wohin damit...
dass datei ende ist nach while erreicht
--
((void)*)0
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
035
25.07.2004, 14:16 Uhr
~Nachtträumer
Gast


Aber wie bekommt man das meine else if-anweisung

C++:
    while(read.getline(read_from_file,sizeof(read_from_file)/sizeof(char),delim))
        /* getline liesst in dass array "read_from_file" bis zum nächsten "delim" */
        {
            l_checkzahl_tmp=atoi(read_from_file);
            /* checkzahl _tmp bekommt den int aus der datei weil wir aber in nen array lesen müssen
            wir mittels atoi in nen int wandeln ..nun kannste mit checkzahl_tmp weitermachten
            z.b mit dem wert von checkzahl vergleichen oder sonst was */
        
            if(l_checkzahl == l_checkzahl_tmp)
            { //stimmt checkzahl mit zahl aus datei überein erhöhe checkzahl und prüfe nächste zahlh
                l_checkzahl++;
            }
            else if (ende der whilescheife) ///Befehl zum festellen des dateiendes?


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
036
25.07.2004, 14:41 Uhr
~Nachtträumer
Gast



Zitat von Nachträumer:

Aber wie bekommt man das meine else if-anweisung


Ich meine wie bekommt man das in meine else if-anweisung
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
037
25.07.2004, 16:24 Uhr
invalid_username



kannst doch nicht if (=
machen und dann else if und was ganz anderes prüfen ... ich meine wo ist denn der logische zusammenhang??
wenn du prüfen willst ob du rein geschreiebn hast nen doch zb nen bool "wrote" oder wie auch immer der heissen soll und wenn if(...) true ist kannste ihn auch auf true setzten und nach der while guxxt du ob er true ist ...
--
((void)*)0
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
038
25.07.2004, 16:36 Uhr
~Nachtträumer
Gast


Na ich will doch prüfen ob checkzahl schon in der datei steht.

Mit if(l_checkzahl == l_checkzahl_tmp) wird doch nur die aktuelle zahl verglichen.
Beim nächsten durchlauf der whileschleife dann die nächste.

Also muss ich doch auch prüfen ob das dateiende erreicht wurde? So kann man ausschließen das die nächste zahl nicht doch die gesuchte ist. Oder habe ich einen denkfehler drin?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
039
25.07.2004, 17:17 Uhr
invalid_username




Zitat:

Die 6 soll in die datei "ok.txt" geschrieben werden und
es soll weiter gerechnet werden:
("checkzahl" ist in diesem falle 6)
"checkzahl" x 2
"checkzahl" x 3
"checkzahl" x 4
"checkzahl" x 5

Die ergebnisse sollen nun wieder in die datei "trash.txt" geschrieben werden.

Ab hier wird wieder der punkt "checkzahl++" ausgeführt und es wiederholen sich die schritte.


ist dir klar dass du nur beim ersten mal "++" machen kannst
beim 2 mal sind es doch schon 6er sprünge ...
naja wollte ich mal drauf hinweisen

ach ja eine frage wenn du 6er schritte machst soll dann die zahl die in ok kommt 1 oder 6 grösser sein als die letzte aus trash??
ist denke ich wichtig für dass prog
--
((void)*)0

Dieser Post wurde am 25.07.2004 um 17:57 Uhr von invalid_username editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 < [ 5 ] [ 6 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: