Dynamisches Zuweisen eines Arrays von Ganzzahlen, Speichern in einer Datei und Ermitteln des Durchschnitts in c

JoJo

Ich löse gerade eine Zuweisung über die dynamische Speicherzuweisung und es heißt, dass ich ein Array von Ganzzahlen dynamisch zuweisen, sie in Form einer Tabelle in einer Datei speichern und später den Durchschnitt dieser Zahlen finden und drucken sollte. Aber wenn es um das Drucken der geht Durchschnitt, ich bekomme falsche Ergebnisse.

#include <stdio.h>
#include <stdlib.h>

int main(){
  FILE *fp=fopen("some.txt","w+");
  printf("How many numbers are you going to input?\n");
  int n,i;
  scanf("%d",&n);

  int *tab;
  int sum=0;
  tab=(int*)malloc(n*sizeof(int));
  for(i=0;i<n && !(feof(fp));i++){
    printf("Enter a number:\n");
    scanf("%d",tab+i);
    fprintf(fp,"%d",*(tab+i));
  }
  for(i=0;i<n && !(feof(fp));i++){
    fscanf(fp,"%d",tab+i);
    printf("%d\t",*(tab+i));
    sum+=*(tab+i);
  }
  float mean=sum/(float)n;
  printf("%f\n",mean);
  free(tab);
}

Dies ist eine Beispieleingabe, die alle Zahlen drucken soll, die ich in die Datei geschrieben habe, und als Wert des Durchschnitts am Ende sollte sie 4,6666 gedruckt haben (so etwas für diese drei spezifischen Eingaben).

    How many numbers are you going to input?
    3

    Enter a number:
    4

    Enter a number:
    5

    Enter a number:
    5

    4   1.333333
Bodo

Es gibt zwei Hauptprobleme in Ihrem Code.

  1. Wenn Sie die Daten in der ersten Schleife in die Datei schreiben, sollten Sie die Zahlen durch ein Leerzeichen oder eine neue Zeile trennen, z

    fprintf(fp,"%d\n",*(tab+i));
    
  2. Zwischen dem Schreiben und Lesen der Datei sollten Sie zum Anfang zurückkehren. Zwischen den beiden Schleifen einfügen

    fseek(fp, 0, SEEK_SET);
    

Der Code enthält einige weitere Fehler, die in einigen Fällen zu Problemen führen können:

Die Funktion feof()kann nur nach einer Leseoperation verwendet werden, z. B. nach fscanfder Unterscheidung zwischen EOF oder Fehlern.

Sie sollten fclosedie Datei, wenn Sie fertig sind.

Sie sollten das Ergebnis aller Funktionen überprüfen, z. B. die fopenkeinen NULLZeiger zurückgegeben haben scanfoder fscanfdie erwartete Anzahl von Elementen erfolgreich konvertiert haben, ...

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

  1. 1

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  2. 2

    Wie füge ich mehrere Spalten in einer Spalte mit derselben Tabelle in SQL Server zusammen?

  3. 3

    Wie kann man Gitterquadrate dazu bringen, die Farbe zu ändern?

  4. 4

    Ich kann nicht verstehen, wie man Go-Code in mehreren Dateien kompiliert

  5. 5

    Zählen Sie die Vorkommen jedes Werts in einem Tupel in Python

  6. 6

    Gibt es eine sauberere Möglichkeit, Konstruktorargumente und Instanzeigenschaften einer Klasse in Typescript zu definieren?

  7. 7

    So implementieren Sie Pushwoosh mit ionic 2

  8. 8

    Wie wird der Wert im Dropdown-Menü basierend auf den ausgewählten Daten / IDs angezeigt?

  9. 9

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  10. 10

    Ändern Sie den Knotenpfad in das aktuelle Verzeichnis

  11. 11

    So erstellen Sie ein Array von Objekten aus zwei Arrays von Objekten mit einem gemeinsamen Schlüssel - JavaScript

  12. 12

    Rufen Sie die ID aus der Datagrid-Ansicht ab und zeigen Sie die Daten in Textfeldern einem anderen Formular an

  13. 13

    base js: Wie füge ich einem Objekt eine Eigenschaft auf die 'alte' Weise hinzu?

  14. 14

    Ersetze einen Teil einer Zeichenfolge durch eine Pandas-Spalte als Muster

  15. 15

    Blättern Sie auf Radio Click zur Abschnitts-ID

  16. 16

    CBCentralManager wird nach dem Verbinden neu gestartet

  17. 17

    Scherz, wie man eine Funktion verspottet, die von einer verspotteten Funktion zurückgegeben wird

  18. 18

    django-allauth Empfängersignal zum Hinzufügen einer Gruppenberechtigung zum Benutzer bei der Anmeldung

  19. 19

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  20. 20

    AQL: Teilweise Übereinstimmung in einer Reihe von Zeichenfolgen

  21. 21

    So summieren Sie die Werte zweier Tabellen und gruppieren sie nach Datum

heißlabel

Archiv