Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Datei auslesen mit Felderzeugung

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 <
000
29.11.2005, 17:58 Uhr
Blaufusstoelpel



Hallo, alle zusammen.

Folgendes: ich möchte eine Datei einlesen, die int-Zahlen enthält, die jeweils durch eine Leerstelle getrennt sind. Dabei sollen die Werte in ein 100-stelliges Feld übergeben werden, da ich später die kleinste und größte Zahl ausgeben soll, sowie das harmonische Mittel.
Jetzt habe ich allerdings schon das Problem, dass ich zwar eine Schleife geschrieben habe, die die Werte ausgeben soll, aber irgendwo ein type mismatch vorkommt.


C++:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <limits>

using namespace std;

int main(int argc, char *argv[])
{
    int i;
    int zahl[99];
    
    ifstream datei;
    datei.open ("zahlen.dat");
    
    if (datei==0)
    {
       cout << "Konnte Datei nicht öffnen!" << endl;
       return 1;
    };
    
    while (! datei.eof())
    {
       int zahl;
       datei >> zahl;
       system("PAUSE");
       if (! datei.fail())
          {
           for (int i=1; i<100 && zahl[i]!=0; i=i+1)
             {    
             cout << "Zahl: " << zahl << endl;
             };
          };
    };  
    cout << "fertig" << endl;
    datei.close();      
    system("PAUSE");
    return EXIT_SUCCESS;
}



Ich hoffe, ihr könnt mir da weiterhelfen...
Besten Dank im Voraus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.11.2005, 18:09 Uhr
Pler
Einer von Vielen
(Operator)


Wo denn?

soll es vielleicht

C++:
cout << "Zahl: " << zahl[i] << endl;


heißen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.11.2005, 18:11 Uhr
Pler
Einer von Vielen
(Operator)



C++:
datei >> zahl;


Das soll funktionieren? Also ich muss mir unbedingt mal C++ näher anschaun.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.11.2005, 10:17 Uhr
~Blaufusstoelpel
Gast


Das Programm funktioniert ohne die Schleife.
Und ja,

C++:
datei >> zahl;


liest die jeweilige Zahl ein und gibt sie aus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.11.2005, 10:36 Uhr
virtual
Sexiest Bit alive
(Operator)


Du hast zahl zweimal definiert, einmal in der Schleife als int und einmal in main als int[]. Letztere Definition wird in der Schleife überdeckt durch die erstere. Nenne die variablen unterschiedlich and try again.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.11.2005, 13:40 Uhr
~Blaufusstoelpel
Gast


Ok, ich hab jetzt die int Zahl in der while Schleife in Ziffer umbenannt (und natürlich alle anderen Aufrufe auch).
Jetzt kompiliert das Programm zwar, allerdings schliesst sich das Konsolenfenster sofort wieder.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.11.2005, 13:43 Uhr
~Pler(2)
Gast


Wegen Konsolenfenster:
Du nutzt ja bestimmt irgend so ne Entwicklungsumgebung. Da kann man das irgendwo einstellen.
(oder ist das bloß in diesem Programm so?)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.11.2005, 13:47 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)



Zitat von Pler:

C++:
datei >> zahl;


Das soll funktionieren? Also ich muss mir unbedingt mal C++ näher anschaun.

Jo, wäre hilfreich
datei ist in dem Fall ein Stream. Genau wie cout. Nur das cout bereits an STDOUT gebunden ist !
Vergleichbar wäre das, wie du vielleicht siehst, mit cin, das an STDIN gebunden ist.
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
30.11.2005, 19:40 Uhr
Blaufusstoelpel



Ok, sorry. Hatte das Programm vorhin auf nem Fremdcomputer ohne "zahlen.dat" laufen lassen, deswegen der Abbruch.
Jetzt hab ich allerdings das Problem, das er jetzt die hundert Feldeinträge mit gleichen Mengen der angegebenen zahlen vollmacht.
"zahlen.dat" ist einfach eine mit dem editor erzeugte Datei mit der Zahlenfolge 5 3 7 8 9 0.

Habe übrigens jetzt versucht die Prüfung auf die grösste und kleinste Zahl zu implementieren.
Fehler: non-lvalue in assignment


C++:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <limits>

using namespace std;

int main(int argc, char *argv[])
{
    int i;
    int zahl[99];
    
    ifstream datei;
    datei.open ("zahlen.dat");
    
    if (datei==0)
    {
       cout << "Konnte Datei nicht öffnen!" << endl;
       return 1;
    };
    
    while (! datei.eof())
    {
       int ziffer;
       datei >> ziffer;
      
       if (! datei.fail())
          {
           for (int i=1; i<100 && zahl[i]!=0; i=i+1)
             {
             int gross, klein;
             double a, b, test;
             zahl[i]=ziffer;
             a=zahl[i];
             b=zahl[i+1];
             a/b=test;  
             if (test<1)
                {
                klein=a;
                gross=b;
                };
             else
                  {
                    klein=b;
                  if(gross>a)
                  {
                  gross=gross;
                  };
                  else
                  {
                  gross=a;
                  };
             };    
              
             cout << "Zahl: " << ziffer << endl;
             };
          };
    };  
    cout << "fertig" << endl;
    datei.close();      
    system("PAUSE");
    return EXIT_SUCCESS;
}


Dieser Post wurde am 30.11.2005 um 20:02 Uhr von Blaufusstoelpel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: