Überprüfen von n auf bestimmten Bereich
-
Ist es logisch eine Funktion in main aufzurufen die er erst später kennen lernt?
#include <stdio.h> int abfrage() /* Abfrage einer beliebigen Zahl */ { int buchstabe; fflush (stdin); printf ("Gib eine Zahl im Bereich von 1 - 26 ein!\n"); scanf ("%d", &buchstabe); printf ("Du hast %d eingegeben.\n",buchstabe); return buchstabe; } int pruef(int buchstabe) /* var buchstabe auf Zahlenbereich 1-26 pruefen 1 = var is glültig 0 = ungültig */ { if (buchstabe >= 1 && buchstabe <= 26) return 1; return 0; } int main () { int buchstabe; do { buchstabe = abfrage (); }while(!pruef(buchstabe)) return 0; }
da sind bestimmt auch Fehler drin habs nicht probiert :x
-
zeile 26 fehlt am ende noch ; sonst klappts
-
Mein Kollege meinte gestern ich soll mir angewöhnen die main Funktion oben hin zu schreiben.
Ich dachte das funktioniert so, dass wenn ne Funktion in main aufgerufen wird, schaut das Programm ob diese in der Datei enthalten ist und springt dann da hin, oder nicht?
-
Die Funktionen sind bei der Benutzung nicht bekannt du musst sie vorwärtsdeklarieren oder vor die main schreiben. Bevor du also Funktionen verwendest solltest du auch verstehen wie man damit Werte übergibt und zurückgibt sie deklariert etc...
-
Ja und da ist schon das Problem.
Könnte es mir bitte jemand erklären.
Sonst komm ich im Programmieren wohl auf keinen grünen Zweig.
-
kannst dich ja bisschen durch die kapitel lesen
-
Mit möglichst wenig Änderungen korrigiert. Ging noch einiges kürzer. Wutz hätte bestimmt eine Lösung in 4 Zeilen die man erst nach 10 min überlegen versteht
#include <stdio.h> int pruef(int buchstabe) { /* var buchstabe auf Zahlenbereich 1-26 pruefen */ if ((buchstabe > 0) && (buchstabe < 27)) { return buchstabe; } else { printf("Bitte gib eine Zahl im Bereich von 1 - 26 ein!\n"); return 0; } } int main() /* Abfrage einer beliebigen Zahl */ { int buchstabe; do { printf("Gib eine Zahl im Bereich von 1 - 26 ein!\n"); scanf("%d", &buchstabe); } while (!pruef(buchstabe)); printf("Du hast %d %c eingegeben.\n", buchstabe, buchstabe + 'a' - 1); }
-
Gradiee schrieb:
Mein Kollege meinte gestern ich soll mir angewöhnen die main Funktion oben hin zu schreiben.
Ich dachte das funktioniert so, dass wenn ne Funktion in main aufgerufen wird, schaut das Programm ob diese in der Datei enthalten ist und springt dann da hin, oder nicht?
Dem Programm ist es auch egal, weil es dann schon fertig compiliert ist.
Aber dem Compiler ist es nicht egal. Der läuft im Prinzip nur einmal durch den Quellcode und übersetzt das ganze.
Die Funktionen müssen vor dem ersten Gebrauch bekannt sein, damit der Compiler weiß, welches Format die Parameter haben.
-
erstmal danke für die vielen Antworten.
Werd mich jetzt erst nochmal selber rein wurschteln und präsentier dann die endlösung
-
in main fehlt return
-
ich++ schrieb:
in main fehlt return
Stimmt, aber der gcc meckert überhaupt nicht. Ist es evtl auch ohne C89 oder C99?
-
#include <stdio.h> int abfrage (); int pruefung (); void main() { int input; int pruef = 0; while (pruef == 0) { printf ("Gib eine Zahl ein: "); input = abfrage(); pruef = pruefung(input); if (pruef == 1) { printf ("Du hast %d eingegeben.\n", input); input = input + 64; printf ("Den Buchstabe den du suchst ist: %c", input); } else printf ("Von vorn du Trottel!\n"); } } int abfrage() { int input; fflush (stdin); scanf ("%d", &input); return input; } int pruefung(int input) { if (input >= 1 && input <= 26) return 1; else return 0; }
Das ist jetzt das fertige Endprodukt, vllt nicht die sauberste Lösung, aber es funzt