C Programmierung ppm Ausgabe Hilfe

Gast #4744466
Lesenswert?

Liebe Leute,
ich wäre total froh, wenn ihr mir helft.

Ich muss eine Notenverwaltungssoftware in der Programmiersprache c 
schreiben und habe keine Ahnung wie man ein ppm ausgibt. Könnt ihr für 
mich den Code korrigieren (unten). Das wäre super nett.

Aufgabenstellung:

Es soll dem Anwender möglich sein eine Prüfung zu erfassen, die als 
Dateiname abgelegt wird.Nachdem dies vorgenommen wurde kann die 
Lehrkraft zu einem beliebigen Zeitpunkt, eine beliebige Anzahl Noten in 
diese Prüfung eintragen.

Nachdem mehr als 2 Prüfungen eingetragen wurden, hat die Lehrkraft die 
möglichkeit ein Diagramm im Dateiformat ppm generieren
  zu lassen. Um dies bewerkstelligen zu können müssen Sie das einfache 
Ascii BildFormat studieren.
  https://de.wikipedia.org/wiki/Portable_Anymap ,heisst es in der 
Aufgabenstellung.

 irgend so ein Diagramm ausgeben für die Noten.
  000000
  111100  Note 4
  000000
  111110  Note 5

  etc.

Vielen Dank Vanessa






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

struct {
   char vorname[20];
   char nachname[30];
   char note1[80];
   char note2[80];
   char note3[80];

} adressen;

void speichern(void) {
   FILE *save = fopen("adressen.dat","r+b");
   if( NULL == save ) {
      save = fopen("adressen.dat","w+b");
      if( NULL == save ) {
         fprintf(stderr,"Kann \"adressen.dat\" nicht öffnen!\n");
         return;
      }
   }
   /* FILE-Zeiger save auf das Ende der Datei setzen */
   fseek(save, 0, SEEK_END);

   /* Wir schreiben eine Adresse ans Ende von "adressen.dat". */
   if(fwrite(&adressen, sizeof(adressen), 1, save) != 1) {
      fprintf(stderr, "Fehler bei fwrite...!!!\n");
      return;
   }
   /* Wir geben unseren FILE-Zeiger wieder frei. */
   fclose(save);
}

void ausgabe(void) {
   FILE *output = fopen("adressen.dat","r+b");
   if( NULL == output ) {
      fprintf(stderr,"Kann \"adressen.dat\" nicht öffnen!\n");
      return;
   }
   /* Wir lesen alle Adressen aus "adressen.dat". */
   while(fread(&adressen, sizeof(adressen), 1, output) == 1) {
      printf("Vorname Schueler1. %s",adressen.vorname);
      printf("Nachname......... %s",adressen.nachname);
      printf("note1...........   %s",adressen.note1);
      printf("\n");
      printf("Vorname.Schueler2. %s",adressen.vorname);
      printf("Nachname......... %s",adressen.nachname);
      printf("note............. %s",adressen.note2);
      printf("\n\n");
      printf("Vorname.Schueler3. %s",adressen.vorname);
      printf("Nachname......... %s",adressen.nachname);
      printf("note............. %s",adressen.note3);
      printf("\n\n");
      printf("Vorname.......... %s",adressen.vorname);
      printf("Nachname..........%s",adressen.nachname);
      printf("note............. %s",adressen.note1);
      printf("\n\n");
       printf("Vorname..........%s",adressen.vorname);
      printf("Nachname..........%s",adressen.nachname);
      printf("note..............%s",adressen.note2);
      printf("\n\n");
     /*WIE GIBT MAN BILD AUS IN KONSOLE??? */
    /* Wir lesen alle Adressen aus "adressen.dat". */
   }
   fclose(output);
}
void eingabe(void) {
   printf("Vorname Schueler1....");
   fgets(adressen.vorname, sizeof(adressen.vorname), stdin);
   printf("Nachname....");
   fgets(adressen.nachname, sizeof(adressen.nachname),stdin);
   printf("note  1:....");
   fgets(adressen.note1, sizeof(adressen.note1), stdin);
    printf("note 2:....");
   fgets(adressen.note2, sizeof(adressen.note2), stdin);
    printf("note 3:....");
   fgets(adressen.note3, sizeof(adressen.note3), stdin);
   printf("Vorname Schueler2....");
   fgets(adressen.vorname, sizeof(adressen.vorname), stdin);
   printf("Nachname....:");
   fgets(adressen.nachname, sizeof(adressen.nachname),stdin);
   printf("note  1....:");
   fgets(adressen.note1, sizeof(adressen.note1), stdin);
   printf("note 2....:");
   fgets(adressen.note2, sizeof(adressen.note2), stdin);
    printf("note 3:....");
   fgets(adressen.note3, sizeof(adressen.note3), stdin);
   printf("Vorname Schueler3....");
   fgets(adressen.vorname, sizeof(adressen.vorname), stdin);
   printf("Nachname:....");
   fgets(adressen.nachname, sizeof(adressen.nachname),stdin);
    printf("note  1:....");
   fgets(adressen.note1, sizeof(adressen.note1), stdin);
     printf("note 2:....");
   fgets(adressen.note2, sizeof(adressen.note2), stdin);
     printf("note 3:....");
   fgets(adressen.note3, sizeof(adressen.note3), stdin);
   speichern();
}

int main(void) {
   int wahl;

   do {
      printf("Was wollen Sie machen\n");
      printf("-1- Neuen Note erfassen\n");
      printf("-2- Alle Datensaetze ausgeben\n");
      printf("-3- Programm beenden\n\n");
      printf("Ihre Auswahl : ");
      do {
         scanf("%d",&wahl);
      } while(getchar() != '\n');
      switch(wahl) {
         case 1 : eingabe();        break;
         case 2 : ausgabe();        break;
         case 3 : printf("...Programm wird beendet\n");
                  break;
         default: printf(">>%d<< ???\n",wahl);
      }
   } while(wahl != 3);

return;
   }
Angehängte Dateien:
Gast #4744635
Lesenswert?

vanessa schrieb:
> Ich muss eine Notenverwaltungssoftware in der Programmiersprache c
> schreiben und habe keine Ahnung wie man ein ppm ausgibt.

Dazu liest Du Dir erstmal die Hausaufgabe gründlich durch. Der Hinweis, 
wie PPM funktioniert, steht da schon drin.

Daß man dazu Datei-Operationen braucht, ist klar. Diese hattest Du in 
der Vorlesung, sonst hättest Du nicht so eine Hausaufgabe bekommen.

Dann liest Du Dir hier vor dem Posten auch durch, wie man Code einfügt. 
Steht bei "Formatierung", wenn Du ein Posting verfaßt. Tip: Man kotzt 
COde nicht einfach als Text rein.
Gast #4744694
Lesenswert?

Das ist hier kein "Mach meine Hausaufgaben für mich"-Service (Bitte an 
die Mitlesenden: Die Aufgabe nicht einfach lösen!). Lies Dir den 
verlinkten Wikipediaartikel durch ( iwS "studiere das Dateiformat"; 
studieren: "gründlich untersuchen, erforschen aus lat. studere „sich um 
etwas bemühen, etwas eifrig betreiben, sich wissenschafllich [sic!] 
beschäftigen“, Zitat wissen.de), überleg Dir wie Dein Diagramm aussehen 
sollte, versuche ein Beispiel ggf. per Hexeditor zu erstellen wenn Du 
Dir unsicher bist und schau dann wie Du es in die Fileausgabe packst. 
Ansonsten lernst Du nichts (und bist übrigens auch in der 
Prüfung/Klausur aufgeschmissen).
Gast #4745769
Lesenswert?

Danke :)

Kannte dieses tolle PPM-Format noch gar nicht :D

Hab mir das gerade mal angeschaut (dein verlinkter Wiki-Artikel)

Die Note "4" würde man mit folgenden Code darstellen:
1
P1
2
# Beispiel für das Bild der Zahl "4"
3
6 9
4
0 0 0 0 0 0
5
0 1 0 0 1 0
6
0 1 0 0 1 0
7
0 1 0 0 1 0
8
0 1 1 1 1 0
9
0 0 0 0 1 0
10
0 0 0 0 1 0
11
0 0 0 0 1 0
12
0 0 0 0 0 0

Einfach in einen Editor kopieren,
Datei als "blubb.ppm" speichern und
sich freuen :p

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren