Der Teil des Codes, der falsch ist, ist das Ende über Mins/Maxes. Ich bin mir nicht sicher, ob man dafür eine Schleife einfügt oder gar selbst Min- und Max-Variablen erstellt.Wie finde ich die Min/Max Werte in einer Datei?
Antwort
Es gibt mindestens drei Ausgaben in der Min/Max-Detektionsschleife:
Zuerst wird, wie durch CHUX angegeben, und min
max
nicht initialisiert werden; Daher ist die Anweisung if (num < min)...
bei der Iteration der Zahlen bei weitem nicht garantiert, ordnungsgemäß zu funktionieren (dasselbe gilt natürlich für max
). initialisieren So min
mit INT_MAX
und initialisieren max
mit INT_MIN
(beide definiert in <limits.h>
), so dass bereits in der ersten Iteration min
und max
wird auf Werte aus der Datei festgelegt werden.
Zweitens, die Überprüfung für if (num < min)...
gibt Ihnen ein "lokales" Minimum, d. H. Das Minimum für alle bisher gelesenen Zahlen, aber nicht das "absolute" Minimum, da zu einem späteren Zeitpunkt kleinere Zahlen kommen können. Also ist min/max am Ende der Schleife gültig, nicht während der Iteration.
Drittens ist if (num < min) ... else if (num > max)
zumindest dann falsch, wenn die Datei nur eine Nummer enthält.
Ihr Code wie folgt aussehen könnte:
int min = INT_MAX;
int max = INT_MIN;
while (fscanf(ifile, "%d", &num) != EOF) {
if (num < min)
min = num;
if (num > max)
max = num;
}
// min/max are valid earliest at this point:
printf ("The minimum is %d\n", min);
printf ("The maximum is %d\n", max);
// Note that min/max will not be correct if the file does not contain any number;
// Note further, that fscanf(ifile, "%d", &num) != EOF may result in an endless loop if the file contains characters that "%d" will not read as a valid integral value.
// But this is left to the OP for further improvement :-)
Betrachten Sie die folgende Änderung an Ihrem Code:
#include <stdio.h>
int main(void) {
int num, i, total, average, min, max;
// open file
FILE *ifile = fopen("scores.txt", "r");
// if opening file fails, print error message and exit 1
if (ifile == NULL) {
perror("Error: Failed to open file.");
return 1;
}
// initialize i and total to zero.
i = total = 0;
// read values from file until EOF is returned by fscanf,
// or until an error (hence the comparison "== 1")
while(fscanf(ifile, "%d", &num) == 1) {
// In first round of loop, initialize min and max
// to the number being read (num)
// After min/max have been initialized, they can then
// be compared and modified in the second if statement
// in the remaining loop rounds
if (i == 0) {
min = num;
max = num;
total += num;
++i;
continue;
}
if (num < min) {
min = num;
} else if (num > max) {
max = num;
}
total += num;
++i;
}
// initialize average
average = total/i;
// summary
printf("The sum of all integers in file is %d.\n", total);
printf("The number of integers in file is %d.\n", i);
printf("The average of all integers in file is %d.\n", average);
printf ("The minimum is %d\n", min);
printf ("The maximum is %d\n", max);
fclose(ifile);
return 0;
}
- 1. Wie finde ich die Erweiterung einer Datei?
- 2. Wie finde ich die Codierung einer Datei? C#
- 3. Wie finde ich teilweise übereinstimmende Werte in einer ObservableCollection?
- 4. Wie finde ich die URL zum Herunterladen einer Datei?
- 5. Wie finde ich die Erstellungszeit einer Datei mit Java?
- 6. Finde die höchste Nummer in einer Datei
- 7. MinMax Normalisierung in Scala
- 8. Wie finde ich die Koordinaten einer Adresse?
- 9. Wie finde ich den Zusammenführungskonflikt in einer großen Datei?
- 10. Wie finde ich Duplikate in einer Zeichenfolge?
- 11. Wie finde ich die Größe einer Struktur?
- 12. Wie finde ich alle in einer PHP-Datei verwendeten Klassen?
- 13. Wie finde ich eine bestimmte Datei in einer Laravel-Anwendung?
- 14. minmax() in Css Grid Layout
- 15. Wie finde ich die Indizes einer Teilmenge in einer Liste?
- 16. Wie finde ich die Länge einer Linkedlist in einer Linkedlist?
- 17. jQuery/Javascript finde Werte in einer Liste
- 18. mongodb - Finde die Anzahl der Werte in einer anderen Sammlung
- 19. Wie finde ich eine Datei in Project?
- 20. Wie finde ich die Größe der Datei in Node.js?
- 21. Wie finde ich die lokalen Variablen in Heap-Datei
- 22. Wie finde ich die Datei, die einen Mysql-Syntaxfehler verursacht
- 23. MinMax Heap-Implementierung ohne Array
- 24. Wie finde ich die Seitennummer für ein bestimmtes Mitglied einer Gruppe in einer .rpt-Datei?
- 25. Wie finde ich einen Wert in einer Spalte, die nur eindeutige Werte mit EclipseLink haben?
- 26. Wo finde ich die Datei sqljdbc_xa.dll?
- 27. Wie finde ich die Signatur der Apk-Datei?
- 28. wo finde ich die Datei `slf4j-api.jar '
- 29. C# minmax Graph Suche
- 30. Unix Shell finde die Max und Min Werte und drucke die Zeile aus einer Datei
'min = num; max = num; 'hier ist' num' nicht initialisiert. Initialisiere "min" und "max" auf einen der Werte aus der Datei in einer der Schleifen bei der ersten Iteration und vergleiche sie dann. –
Was ist der Wert von 'num' in der Codezeile' min = num; '? – chux
Ich habe versucht, eine Nummer aus der Datei zu machen –