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 ]
000
24.07.2004, 01:22 Uhr
~Nachtträumer
Gast


Hallo ich brauche ein programm das folgende sachen lösen kann, leider kann ich sowas nicht mit visual c++ realisieren, ich habe zwar das konzept und mit dem compilen komme ich auch schon klar aber am hauptteil komm ich nicht weiter

checkzahl = 1

jetzt wird gerechnet:
"checkzahl" x 2
"checkzahl" x 3
"checkzahl" x 4
"checkzahl" x 5

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

Als nächstes soll folgendes passieren:
checkzahl++ (ist ja noch = 1 soll um eins erhöht werden)

Jetzt soll überprüft ob die neue "checkzahl" (2) schon in der datei "trash.txt" steht.

Wenn sie drinne steht soll das programm die nächste ziffer überprüfen bis die "checkzahl" so groß ist das sie nicht mehr in der "trash.txt" steht (in diesem beispiel wäre das die zahl 6, da 5 schon drinne steht.

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.

Was noch ganz nett wär, wär eine stop funktion bei einer bestimmten zahl, damit das programm nicht ewig läuft
Z. b. so:
Am anfang gibt man bei dem befehl "cin" die stopzahl ein. z.b. 100, wenn die checkzahl jetzt hundert ist wird der programablauf gestopt und man kann das programm beenden.

Für dieses beispiel habe ich kleine zahlen genommen, wenn die sache funktioniert möchte ich es aber auch mal mit grossen zahlen versuchen (10000000 x 1000000), da gibs doch sicher einen spezielen datentyp für oder? evtl. "long" oder so?

Danke für eure Hilfe

Nachtträumer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.07.2004, 04:09 Uhr
~Nachtträumer
Gast


Hab mich nochmal rangesetzt aber komme kein stück weiter.
Hier habe ich mal mein testprogram zum schreiben und lesen aufgeführt.

C++:
void main()
{
//datei öffnen
    ofstream ausgabe_datei("trash.txt", ios::out );
if (! ausgabe_datei)
  {
    cout <<"kann nicht geöffnet werden";
  }

//daten reinschreiben
    ausgabe_datei << "10" << endl;
    ausgabe_datei << "20" << endl;

//datei öffnen
    fstream eingabe_datei ("trash.txt",ios::in);
if (! eingabe_datei)
  {
    cout <<"eingabedatei kann nicht geöffnet werden";
  }
long b;
eingabe_datei.seekp (1, ios::cur);

      eingabe_datei>>b;
cout << b;
}


mit "eingabe_datei.seekp" klappt das schon einigermaßen aber nen richtiges programm, wie ich brauch beko
mm ich nich gebacken


Bearbeitung von typecast:
code-Tags durch cpp-Tags ersetzt

Dieser Post wurde am 24.07.2004 um 11:00 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.07.2004, 04:46 Uhr
~Nachtträumer
Gast


Mit dem Vergleichen wird das sicher nich ganz so schwer, wenn man es hinbekommen würde das er die erste zahl in eine variable lädt, dann vergleicht varibale == checkzahl wenn keine übereinstimmung festgestellt werden kann "lese nächste zeile" aber das bekomm ich noch nicht hin.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.07.2004, 10:00 Uhr
Pablo
Supertux
(Operator)


Ich hab nicht ganz deinen ersten Post verstanden. Und void main????? Das ist ANSI Forum, und nach ANSI soll main int sein.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.07.2004, 10:32 Uhr
~Nachtträumer
Gast


Oh sorry, bin ich im falschen forum gelandet? Könnt ihr das ins richtige verschieben? Wäre nett.

Hab wieder was ausprobiert und es funktioniert

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

#include "stdafx.h"
#include <iostream.h>


int main(int argc, char* argv[])
{
    long l_endzahl;
    long l_checkzahl = 2;
    long l_i;

    cout << "Bitte Endzahl eingeben: ";
    cin >> l_endzahl;

    l_i = l_checkzahl*2;
    //l_i muss hier die in trash.txt geschrieben werden (bekomme ich nicht hin) :(
    cout << l_i <<"\n";  //ausgabe am bildschirm, um zu kontrollieren ob richtig gerechnet wurde

    l_i = l_checkzahl*3;
    //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    l_i = l_checkzahl*4;
    //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    l_i = l_checkzahl*5;
    //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    //l_checkzahl um eins erhöhen
    l_checkzahl++;

    return 0;
}



Wäre aber trotzdem nett wenn ihr mir mit diesem programm weiterhelfen könntet. Damit am ende das rauskommt was ich im ersten post geschrieben habe


Bearbeitung:
code-Tags durch cpp-Tags ersetzt

Dieser Post wurde am 24.07.2004 um 11:01 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.07.2004, 10:45 Uhr
~Nachtträumer
Gast


Ich mache fortschritte

Jetzt funktioniert sogar das schreiben in die datei schon. *stolzbin*


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

#include "stdafx.h"
#include <iostream.h>
#include <fstream.h>


int main(int argc, char* argv[])
{
    long l_endzahl;
    long l_checkzahl = 2;
    long l_i;

    cout << "Bitte Endzahl eingeben: ";
    cin >> l_endzahl;

    l_i = l_checkzahl*2;
    //datei öffnen
    ofstream ausgabe_datei("trasch.txt", ios::out); //ios::out leichter zu kontrollieren, später app
if (! ausgabe_datei)
  {
    cout <<"trash.txt kann zum schreiben nicht geöffnet werden";
  }

    //daten reinschreiben
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n";  //ausgabe am bildschirm, um zu kontrollieren ob richtig gerechnet wurde

    l_i = l_checkzahl*3;
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    l_i = l_checkzahl*4;
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    l_i = l_checkzahl*5;
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    //l_checkzahl um eins erhöhen
    l_checkzahl++;

    return 0;
}



Jetzt müsste er wieder checkzahl*2 ausführen. Wie kann man das erreichen? Muss doch sicher alles in eine funktion gepackt werden und dann als parameter checkzahl übergeben werden? Wie geht sowas, mit funktionen kenn ich mich nicht aus


Bearbeitung von typecast:
code-Tags durch cpp-Tags ersetzt

Dieser Post wurde am 24.07.2004 um 11:02 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.07.2004, 10:58 Uhr
~Nachtträumer
Gast


Meine erste funktionierende while schleifen


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

#include "stdafx.h"
#include <iostream.h>
#include <fstream.h>


int main(int argc, char* argv[])
{
    long l_endzahl;
    long l_checkzahl = 2;
    long l_i;

    cout << "Bitte Endzahl eingeben: ";
    cin >> l_endzahl;



    while(l_checkzahl < l_endzahl) //Anweisungen so lange ausführen bis l_checkzahl grösser als l_endzahl
    {
    l_i = l_checkzahl*2;
    //datei öffnen
    ofstream ausgabe_datei("trasch.txt", ios::app);
    if (! ausgabe_datei)
  {
    cout <<"trash.txt kann zum schreiben nicht geöffnet werden";
  }

    //daten reinschreiben
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n";  //ausgabe am bildschirm, um zu kontrollieren ob richtig gerechnet wurde

    l_i = l_checkzahl*3;
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    l_i = l_checkzahl*4;
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    l_i = l_checkzahl*5;
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    //l_checkzahl um eins erhöhen
    l_checkzahl++;
    }
    return 0;
}


Es funktioniert Das ich so grosse fortschritte mach hät ich nie gedacht Auf zum nächsten punkt


Bearbeitung von typecast:
und nocheinmal die code-Tags durch cpp-Tags ersetzt

Dieser Post wurde am 24.07.2004 um 11:02 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.07.2004, 11:08 Uhr
~Nachtträumer
Gast


Hier brauch ich hilfe. Siehe kommentar hinter der whileschleife.


Code:

// 12345.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <iostream.h>
#include <fstream.h>


int main(int argc, char* argv[])
{
    long l_endzahl;
    long l_checkzahl = 2;
    long l_i;

    cout << "Bitte Endzahl eingeben: ";
    cin >> l_endzahl;



    while(l_checkzahl < l_endzahl) //Anweisungen so lange ausführen bis l_checkzahl grösser als l_endzahl
    {
        //
        //Hier muss überprüft werden ob l_checkzahl schon in der trash.txt steht
        //Ich denke mal eine IF-Anweisung kommt dafür in frage, aber ich weiß nicht wie ich das machen soll
        //(öffne trash.txt, vergleiche zahlen die schon drinstehen mit l_checkzahl.
        //Wenn sie schon drinsteht mach mit der nächsten zahl weiter wenn nicht schreibe checkzahl
        //in ok.txt und teste die nächste zahl)
        //Hier brauch ich eure hilfe :) Danke.
        //
    l_i = l_checkzahl*2;
    //datei öffnen
    ofstream ausgabe_datei("trasch.txt", ios::app);
    if (! ausgabe_datei)
  {
    cout <<"trash.txt kann zum schreiben nicht geöffnet werden";
  }

    //daten reinschreiben
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n";  //ausgabe am bildschirm, um zu kontrollieren ob richtig gerechnet wurde

    l_i = l_checkzahl*3;
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    l_i = l_checkzahl*4;
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    l_i = l_checkzahl*5;
    ausgabe_datei << l_i << endl;      //l_i wieder in die trash.txt schreiben
    cout << l_i <<"\n"; //kontrollausgabe

    //l_checkzahl um eins erhöhen
    l_checkzahl++;
    }
    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.07.2004, 13:44 Uhr
~Nachtträumer
Gast


Na ihr (leser),

evtl. könnt ihr mir bei dem problem helfen:

Ich hab folgendes aus nem tutorial versucht, aber richtige ergebnisse bekomm ich damit nicht :


Code:

ifstream in("trash.txt");
   while(!in.eof())
   {
      long ch;
      ch=in.get();
      cout<<ch;
   };

Muss das symikolon am ende stehen?

PS:
trasch.txt hab ich in trash geändert sonst hat sich an dem code nix verändert.

Code:

ofstream ausgabe_datei("trasch.txt", ios::app);

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
24.07.2004, 18:18 Uhr
invalid_username




Zitat:
Muss das symikolon am ende stehen?


nein dass kommt nur bei do {...}while(...);...

zu write ich würde es so machen -->
C++:

int checkzahl=1;
int checkzahl_tmp;
const char delim='x';//deliminator also das kommt zwischen die zahlen
char read_from_file[20];// nur nen beispiel 20 stellig sollte aber reichen

for(int j=2;j<=5;j++){
       write<<checkzahl_tmp*j<<delim;
       checkzahl_tmp=checkzahl;
}

// dann kannste read so anfangen ->
while(read.getline(read_from_file,sizeof(read_from_file)/sizeof(char),delim)){
                        checkzahl_tmp=atoi(read_from_file);
//.......................
}



naja den ganzen code schick ich aber nicht machst ja fortschritte


dein lesen ging danke ich nicht wenn du mehrstellige zahlen hast
zb wenns mehr als 2 durchlüfe machst .. ne
hoffe ich konnte helfen und habe nicht wieder wa falsch gelesen
--
((void)*)0

Dieser Post wurde am 24.07.2004 um 18:19 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: