Weiss jemand weiter
-
Hab für mein STudium eine Aufgabe wo ich ein Stack programmieren soll.
Problem: name soll vom Typ char und alter vom Typ int sein. Leider liest mein Prog alle Zeichen ein und gibt sie dann verständlicherweise alle in dezimal aus.
Kann mir vielleicht jemand helfen eine Art Abbruchfunktion einzubauen, damit er beim einlesen vom Namen nur char und beim alter nur int akzeptiert.#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <eigene.h> void input(void); void output(void); struct person { char name[100]; int alter; person *next; }; person *top; void main(void) { int auswahl; top = NULL; do { auswahl = 0; clrscr(); printf("\n"); printf("3 Aufgabe Stapel(stack)\n"); printf("\n"); printf("Menue:\n"); printf("\n"); printf("Dateneingabe [1]\n"); printf("Datenausgabe [2]\n"); printf("Programmende [3]\n"); printf("\nBitte Menue auswaehlen: "); fflush(stdin); scanf("%d", &auswahl); clrscr(); switch (auswahl) { case 1: input(); break; case 2: output(); break; case 3: printf("\n"); printf("\nAuf Wiedersehen!!\n"); printf("\n"); exit(0); break; default: printf("\n"); printf("\aUngueltige Auswahl!\n"); printf("\n"); break; } printf("\n"); printf("\n<press any key>"); getch(); } while (1); } void input(void){ person *tempperson; tempperson = (person *) malloc(sizeof(person)); printf("\n"); printf("Einlesen von Daten\n"); printf("\n"); printf("Bitte Namen eingeben: "); fflush(stdin); scanf("%s", tempperson->name); printf("Bitte Alter eingeben: "); fflush(stdin); scanf("%d", &tempperson->alter); printf("\nDaten wurden erfolgreich gespeichert!"); printf("\n"); tempperson->next = top; top = tempperson; } void output(void) { person *temp; if (top == NULL) { printf("\n"); printf("\aEs sind keine Elemente vorhanden!\n"); printf("\n"); return; } printf("\nDatenausgabe:"); printf("\n"); printf("\n%-30s Alter\n", "Name"); while (temp = top) { printf("%-30s %d\n", temp->name, temp->alter); temp = top; top = top->next; free(temp); } printf("\n"); printf("\nAlle Daten wurden erfolgreich ausgegeben und werden nun geloescht!"); printf("\n"); }
-
Ist es denn soooooo schwierig die korrekten Tags zu verwenden?
-
Dieses Kommentar hilft mir auch nicht weiter. Eine anständige Antwort hätte auch gereicht
-
wavemaster schrieb:
Dieses Kommentar hilft mir auch nicht weiter.
Es bricht mir das Herz.
Eine anständige Antwort hätte auch gereicht
Mit einer anständigen Frage - dazu gehört auch anständige Formatierung und ein aussagekräftiger Threadtitel - hättest du vermutlich schon eine anständige Antwort
-
versuchs doch mal so:
1. deine Zahl als char* einlesen (der Stern ist übrigens oben in deiner Erklärung nicht drin, demnach würde dein Programm nur ein Zeichen einlesen..)
2. in der stdlib gibts eine Funktion isdigit(). Hiermit musst du zeichenweise deinen string testen, ob er ein digit ist.
3. Die stdlib.h liefert dir eine Funktion atoi(). Damit kannst du deinen String in ein int umwandeln.
-
Ah merke schon heutzutage werden Foren nur noch dafür verwendet seinen überflüssigen Hirnschmalz ausfliessen zu lassen. Inteligente Menschen hätten sich jeglichen Kommentar verkniffen und einfach versucht das Problem zu lösen, aber was will man denn auch schon von Leuten erwarten, die den ganzen Tag nichts besseres zu tun haben als Beiträge zu kritisieren anstelle anderen zu helfen.
MFG
Adrian
-
wavemaster schrieb:
Inteligente Menschen hätten sich jeglichen Kommentar verkniffen und einfach versucht das Problem zu lösen...
nicht gleich nervös werden - wart's doch erstmal ab. da kommt bestimmt noch was hilfreiches...
-
wavemaster schrieb:
Inteligente Menschen hätten sich jeglichen Kommentar verkniffen ...
Soll ich das wirklich kommentieren?
-
wavemaster schrieb:
Ah merke schon heutzutage werden Foren nur noch dafür verwendet seinen überflüssigen Hirnschmalz ausfliessen zu lassen.
Oder um den Mangel desselben zu demonstrieren
Inteligente Menschen hätten sich jeglichen Kommentar verkniffen und einfach versucht das Problem zu lösen,
Wie willst du das beurteilen?
aber was will man denn auch schon von Leuten erwarten, die den ganzen Tag nichts besseres zu tun haben als Beiträge zu kritisieren anstelle anderen zu helfen.
Ich weiß nicht. Ich helfe eigentlich gern, kommt halt auf das Verhalten des Fragenden an. Wie das mit deinen Erwartungen zusammenpasst, kann ich nicht beurteilen. Aber vielleicht, nur vielleicht, liegts ja auch an dir?
Und um auch mal hilfreich zu sein - nicht, dass du noch weinst: scanf hat einen Rückgabewert.
-
Es hätte so einfach sein können ...
und nur mal nebenbei erwähnt -> Sachen wie:
void main(void)
gehen ja mal überhaupt nicht an. Es gibt einen ISO-Standard für die Sprache C++.
Halte dich einfach daran und du wirst weniger Probleme beim coden mit der Sprache haben.
Dein Verhalten, obwohl _du_ ne Frage hast, ist m.E. auch inakzeptabel, aber wer bin ich anderen vorzuschreiben, wie sie ihre Fragen zu stellen haben
-
wavemaster schrieb:
Inteligente Menschen hätten sich jeglichen Kommentar verkniffen und einfach versucht das Problem zu lösen, [...]
Intelligente Menschen quälen sich nicht mit dem Lesen eines unformatierten Codefragments. Du hättest wenigstens den Beitrag editieren können, nachdem du schon darauf hingewiesen wurdest.
BTW falsches Forum.