c Datei einlesen und Daten verarbeiten

zuerst einmal: halte Dich bitte an die Netiquette:
http://www.tutorials.de/index.php?pg=netiquette

Besonders auf lesbare Texte Dank Groß- und Kleinschreibung etc. wird hier sehr viel Wert gelegt!

mhh das ist nicht das was ich suche ich möchte zeile für zeile mit meiner variable vergleichen und dann in jeder schleife praktisch den abstand zwischen dateiwert und variable ermitteln und wenn die datei ferrtig durchsucht ist will ich haben das der wert mit der geringsten differenz aus meiner datei ausgegeben wird.... eine zahl aus einer datei suchen ist was anderes oder steh ich jetzt völlig aufm schlauch

Hmm, das ist ja nun eine völlig andere Aufgabenstellung :-(

So auf die Schnelle:
(a) dann brich halt die Schleife NICHT ab .....
(b) mach KEINEN Vergleich zw. 'temp' und Variable auf Gleichheit, sondern prüfe die Differenz!
(c) merke Dir bei jedem Schleifenduchlauf zum einen die Differenz (wenn sie kleiner als die bisherige ist) und dann ggf. den dazugehörigen Wert!

Es sollte eigentlich kein Problem, die zuvor gepostete Schleife dahingehend anzupassen .....

Gruß
Klaus
 
Hi, vielleicht kann hier mal einer drüberschauen wo liegt der Fehler?
C ist eine Variable die global definiert ist. Mein Vergleichswert bzw. Variable


void auswahl1 (void)
{

FILE*fp;
float minalt=100,minneu=0, WERT,temp;

fp= fopen ("C:\\ProgramFiles\\cpp\\Katalog1.txt","a+");
if (fp==NULL)
printf("Fehler beim Oeffnen.\n");
else
printf("Datei erfolgreich eingelesen.\n");


while (!feof(fp))
{
fscanf(fp, "%d", &temp);
minneu=(C- temp);

if (minneu<minalt)
WERT=temp;
minalt=minneu;

}


fclose (fp);

}
 
Zuletzt bearbeitet:
Nutze bitte auch die Code-Tags ! ! !
Entweder den '#'-Button im Editor oder durch Einklammerung von [*CODE][*/CODE] (ohne die Sternchen) ! !

Erste Frage: was für ein Fehler ? ? ? :confused:
Zweite Frage: warum GLOBALE Variablen ? ? ? :confused:

Gruß
Klaus
 
Also ich habe ein main in diesem main wird die funktion aus dem letzten beitragaufgerufen.
Von einer anderen Funktion wird meine Vergleichsvariable C errechnet, dass ich sie nun in meiner anderen Funktion verwenden kann muss ich sie doch global machen.

Fehler ist dass ich für meinen WERT immer 0.00000 erhalte.

Danke
 
Hi,
hoffe der Code ist nach den Vorschriften und gut lesbar problem ist denke ich das er aus der datei nicht den nächsten WERT holt und neu vergleicht denn es kommt an der stelle
printf("minneu: %f\n",minneu);
immer das gleiche ergebnis raus. Danke

Code:
FILE*fp;

float minalt=100,minneu=0, WERT,temp;

fp= fopen ("C:\\ProgramFiles\\cpp\\Katalog1.txt","a+");
   if (fp==NULL)
               printf("Fehler beim Oeffnen.\n");
       else
               printf("Datei erfolgreich eingelesen.\n");
               
       
 while (!feof(fp))      
       { 
            fscanf(fp, "%d", &temp);
              minneu=(C-temp);
            printf("minneu: %f\n",minneu);
            
            if (minneu<minalt)  
               {  
                  WERT=temp;
                  minalt=minneu;
               }   
       }
       
       
               
            printf("WERT: %f\n",WERT);
 
Von einer anderen Funktion wird meine Vergleichsvariable C errechnet, dass ich sie nun in meiner anderen Funktion verwenden kann muss ich sie doch global machen.

Du könntest/solltest sie auch als Parameter die Funktion übergeben! Globale Variablen sind immer unschön und gefährlich - vor allem, wenn sie nur C heißen und keinen sprechenden Bezeichner haben! ;-]

Fehler ist dass ich für meinen WERT immer 0.00000 erhalte.
Na, logisch ! ! Vgl. meinen letzten Post ! !
Du merkst Dir zwar den WERT nur, wenn die Differenz kleiner ist, setzt die neue Differenz aber jedes Mal auf Dein 'minalt' ! ! ! :eek:

gruß
Klaus
 
Hab halt im bezug auf dateien verarbeiten mal sowas von gar keinen plan das ist schon sch***

Glaube unsere Posts überschneiden sich manchmal hab klammern gesetz müsst doch so jetzt passen hast den post von gerade 12:23 schon gesehen?
 
Zuletzt bearbeitet:
Codetags fehlen immer noch !!

also ....

float minalt=100,minneu=0, WERT,temp;
Sind es denn wirklich Fließkommazahlen ? ? ?
Warum nicht Integer :confused:
Zudem sind WERT und TEMP NICHT initialisiert .....
Was für ein Datentyp ist denn nun Dein 'C' :confused:

Gruß
Klaus
 
C ist von datentyp float, deshalb muss der rest auch float sein...

temp ist auch immer 0.0000 ich denke er durchläuft immernoch nicht die datei...
das ist mein problem den rest muss im anschluss verfeinern....
 
Zuletzt bearbeitet:
Zurück