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; }
:
Verschoben durch User
Zu allererst: was passiert denn wenn du dein Programm ausführst? Was möchtest du denn genau wissen?
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.
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).
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
Ich hab mal das (vergrößerte) Ergebnis des Beispielcodes angehangen.
Blubb schrieb: > Ich hab mal das (vergrößerte) Ergebnis des Beispielcodes angehangen. Und warum ist das jetzt PNG und nicht PPM ;-)
Mark B. schrieb: > Und warum ist das jetzt PNG und nicht PPM ;-) Ich hatte die Befürchtung das Mikrocontroller.net ppm nicht erlaubt und nicht darstellen kann ;-)
Blubb schrieb: > Ich hatte die Befürchtung das Mikrocontroller.net ppm nicht erlaubt und > nicht darstellen kann ;-) Kann es irgendein Windows-Boardmittel-Programm? "Paint" nicht, "Fotoanzeige" nicht, "IE" nicht, ....
Ich schätze am einfachsten wäre ein Balkendiagramm mit fixer Breite und Höhe. Hätte ja jetzt irgendwie auch Bock das mal auszuprobieren ?
Dennis S. schrieb: > Windows-Boardmittel Weiß ich nicht. Hab das mit Linux geöffnet. Das klappte einmal mit dem Bildbetrachter ristretto(Bildbetrachter von XFCE) und ebenfalls mit gimp. Das gibt es ja sogar als portable Version für Windows. der Screenshot ist aus gimp heraus
Zur Not muss man mal Google anwerfen. Suche nach "ppm viewer", erster link http://openseeit.sourceforge.net/ Sieht vielversprechend aus :)
Blubb schrieb: > Zur Not muss man mal Google anwerfen. Suche nach "ppm viewer", > erster > link > > http://openseeit.sourceforge.net/ > > Sieht vielversprechend aus :) In welcher Windows-Version ist das dabei...?
Dennis S. schrieb: > In welcher Windows-Version ist das dabei...? Im standard bei keiner. Das habe ich aber auch nie behauptet ;) Mark B. schrieb: > IrfanView Das wäre wirklich die sinnvollere SW :)
Blubb schrieb: > Im standard bei keiner. Das habe ich aber auch nie behauptet ;) Naja, meine Frage war ja explizit nach Windows-Boardmitteln und ich hatte vermutet, dass du dich auf meine Frage bezogen hast.
Dennis S. schrieb: > dass du dich auf meine Frage bezogen hast Okay.. Ne, so meinte ich das nicht. Hab quasi eine alternative zu den Boardmitteln genannt. Hab das gerade auch nochmal getestet. IrfanView, sowie LibreOffice Draw öffnen dieses Format ebenfalls prächtig.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.