Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Messwerte überprüfen

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 ]
000
25.02.2007, 18:22 Uhr
mike_2000



Hallo

ich habe folgendes Problem:
Ich soll ein Programm erstellen, mit dem geprüft wird ob in 100 Messwerten ein bestimmter vorkommt. Sobald einer der Messwerte vorhanden ist, kann das Programm beendet werden und eine Ausgabe erfolgen.

Danke für eure Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.02.2007, 18:50 Uhr
Suba Esel



Wie jetzt? Du hast meinetwegen ein Array, in dem die 100 Messwerte sind. Dann musst du doch nur noch mit ner for - Schleife da durch laufen, und wenn der Richtige da ist, das Programm beenden. Oder was meintest du?
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.02.2007, 19:42 Uhr
mike_2000



Hallo

ja ich krieg das mit dem eingeben nicht hin
ich hab die 100 Messwerte per Array eingelesen
wie mach ich das dann mit der ausgabe des bestimmten
Messwertes.
Ich frag z.B "geben sie den gesuchten wert ein"
der benutzer tippt 35 das Programm gibt an "vorhanden" oder "nicht vorhanden".

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.02.2007, 19:50 Uhr
öni




C++:
for(i=0;i<100;i++)
{
  if(eingebenerWert==Messwert[i]) //dein beispiel 35==Messwert[i]
   cout<<"vorhanden";

  else
   cout<<"nicht vorhanden";
}


so mal ungetestet würde ich sagen dürfte das funktionieren hoffe ich mal
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.02.2007, 20:29 Uhr
mike_2000



Hallo

Ich hab das mal so eingebene aber irgendwo muß noch ein Fehler sein.




#include <cstdlib>
#include <iostream>
#include <fstream>


using namespace std;

int main(int argc, char *argv[])
{



double Messwert[100], eingebenerWert=0;
int i=0;

ifstream eingabe("messwerte.dat",ios::in);



char zeile[10];
while(!eingabe.eof()){
eingabe.getline(zeile,10);
Messwert[i++]=atof(zeile) ;
}


cout <<"Bitte den gesuchten Wert eingeben:" <<endl<<endl;
cin >>eingebenerWert;


for(i=0;i<100;i++)
{
if(eingebenerWert==Messwert[i]) //dein beispiel 35==Messwert[i]
cout<<"vorhanden";

else
cout<<"nicht vorhanden";
}
cout <<eingebenerWert <<endl;



system("PAUSE");
return EXIT_SUCCESS;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.02.2007, 20:37 Uhr
mike_2000



Sorry ich bin neu hier
Ich habs nochmal neu eingetippt.


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


using namespace std;

int main(int argc, char *argv[])
{
    
    
    
    double Messwert[100], eingebenerWert=0;
    int i=0;
    
    ifstream eingabe("messwerte.dat",ios::in);
    
    
    
    char zeile[10];
    while(!eingabe.eof()){
          eingabe.getline(zeile,10);
         Messwert[i++]=atof(zeile)  ;
         }
      
cout <<"Bitte den gesuchten Wert eingeben:" <<endl<<endl;    
cin >>eingebenerWert;
    
    
    for(i=0;i<100;i++)
{
  if(eingebenerWert==Messwert[i]) //dein beispiel 35==Messwert[i]
   cout<<"vorhanden";

  else
   cout<<"nicht vorhanden";
}

    
      
    
    system("PAUSE");
    return EXIT_SUCCESS;
}




Ich hab das mal so eingebene aber irgendwo muß noch ein Fehler sein.
Danke für eure Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.02.2007, 20:56 Uhr
Blubber2063



Vorsicht mit Gleitkommawerten, da ist == ein schlechter Operator, da solltest du lieber testen

|(a-b)| < 0.1 * 10^-x
um a und b zu Vergleichen, Genauigkeit kann man da nämlich vergessen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.02.2007, 21:20 Uhr
öni



@ blubber2063 versteh nicht was du meinst mit genauigkeit?

@ mike_2000 was kommen denn genau für fehler

ansonsten könnnte ich dir noch vorschlagen statt system("PAUSE"); und return EXIT_SUCCESS; zu benutzen einfach getchar(); und return 0; zu schreiben. Begründung zu system findest du unter www.fun-soft.de/showtopic.php?threadid=9346
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
25.02.2007, 21:39 Uhr
Blubber2063



Was meine ich damit, das Gleitkommawerte eben ungenau sind und dementsprechend auch der Vergleich meist nicht klappt. Wenn dir das unklar ist schau dir mal Gleitkommawerte an.
getchar (unter C++ )ist auch nicht grad besser, dann doch lieber cin.get(), Achja und EXIT_SUCCESS, ist nicht schlechter als return 0 zu schreiben, ist doch ein Macro des C Standards.

Dieser Post wurde am 25.02.2007 um 21:39 Uhr von Blubber2063 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
25.02.2007, 21:48 Uhr
öni



ach du meinst das 10.5000000 nicht das selbe ist wie 10.4999999 ja das kommt immer drauf an zu welchen zweg du es benötigst und wie genau es sein muss aber ansonsten muss ich dir recht geben.
zu cin.get() muss ich dir vollkommen recht geben.
zu return EXIT_SUCCESS; muss ich sagen schreibt sich return 0; einfach schneller aber (immerhin 11 Zeichen) ansonsten ja wie mans will....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: