Frage(n) zu Schleifen und Verzweigungen
-
hey ihr,
ich bräuchte dringend Hilfe, da ich nicht viel Zeit habe um mich in c++ einzu arbeiten.
Ich hänge leider an einer sehr "einfachen" Sache.
Ich möchte, wenn mein programm zu ende ist (siehe unten) eine abfrage haben, ob ich noch einmal möchte oder nicht. Wenn ich dann J oder j eingebe, müss mein Programm von vorne beginnen.
Leider weiss ich nicht was ich da verwenden muss (if else, wihle do, do wihle, for?)vielleicht könnte mir einer erst einmal erklären was ich überhaupt benutzen muss, wie die kopf, fuss und besondere kopfgesteuere schleife oder ein zwei mehr seitige verzweigung.
Bitte denkt drann, dass ich nicht keine erfahrung habe, damit ich dies dann auch verstehe müsst ihr dies langsam und bitte ausführlich beschreiben.
kurze info:
Ich arbeite mit borland builder 6 (LEIDER?!?! ^^, muss aba)Ich bedanke mich schon einmal rechtherzlich
gez.
AndyHier mein bisher geschriebenes Programm:
// Nachfolgerzahl und Vorgaengerzahl
#include <stdio.h>
#pragma hdrstop//---------------------------------------------------------------------------
#pragma argsused
int main(){
int zahl, nachfolgerzahlzahl, vorgaengerzahl;printf ("Nachfolgerzahlzahl und Vorgaengerzahl");
printf ("\n\nBitte geben sie eine Zahl ein:");
scanf ("%i", &zahl);nachfolgerzahlzahl = zahl +1;
vorgaengerzahl = zahl -1;printf ("\n\nDie Nachfolgerzahlzahl lautet %i", nachfolgerzahlzahl);
getchar ();printf ("\n\nDie Vorgaengerzahl lautet %i", vorgaengerzahl);
printf ("\n\nMoechten Sie nocheinmal? (J/N)");
// scanf ("%c", &); //was muss ich eig. nach dem & eintragen???getchar ();
return 0; //sollte ihr Fehler haben, wäre es nett, wenn ihr sie mir zeigen könnt}
//---------------------------------------------------------------------------PS:
Meine Frage stellte ich als erstes im c++ thead, ich wurde hier her verwissen, wäre schön, wenn mir hier einer Helfen könnte.
Ich habe bereits heraus gefunden, dass ich es mit do und wihle machen muss, nur leider bekam ich dadurch fehlermeldungen (siehe c++ thead)
-
#include <stdio.h> int main() { char c; // Unsere Variable für die Abfrag J/N mit scanf do{ // Beginn der do-while Schleife // Wir verwenden do-while sodass die Schleife mindestens einmal durchlaufen wird int zahl, nachfolgerzahlzahl, vorgaengerzahl; printf ("Nachfolgerzahlzahl und Vorgaengerzahl"); printf ("\n\nBitte geben sie eine Zahl ein:"); scanf ("%i", &zahl); nachfolgerzahlzahl = zahl +1; vorgaengerzahl = zahl -1; printf ("\n\nDie Nachfolgerzahlzahl lautet %i", nachfolgerzahlzahl); getchar (); printf ("\n\nDie Vorgaengerzahl lautet %i", vorgaengerzahl); printf ("\n\nMoechten Sie nocheinmal? (J/N)"); scanf ("%c", &c); //was muss ich eig. nach dem & eintragen??? }while(c == 'J' || c == 'j'); // Solange die schlaufe durchlaufen, wie c gleich 'J' oder 'j' ist getchar (); return 0; }
-
hey super danke,
ich hab es jetzt hin bekommen.
ich werde jetzt gleich mit dem nächsten weiter machen. evtel werde ich da nochein mal hilfe brauchen, aber danke für diese hilfe
gez.
Andy
-
jetzt habe ich ein neues problem
und zwar, wenn ich das programm so schreibe:
// Nachfolgerzahlen und Vorgaengerzahlen mit Schleife
#include <stdio.h>
int main ()
{
int zahl,nachfolgerzahl,vorgaengerzahl;
char c;do {
printf ("Nachfolgerzahlen und Vorgaengerzahlen:\t");
printf ("\n\nBitte geben Sie eine Zahl ein:\t");
scanf ("%i", &zahl);nachfolgerzahl = zahl +1;
vorgaengerzahl = zahl -1;printf ("\n\nDie Nachfolgerzahl lautet %i", nachfolgerzahl);
printf ("\n\nDie Vorgaengerzahl lautet %i", vorgaengerzahl);printf ("\n\nMoechten Sie noch einmal? (J/N)");
scanf ("%c",&c);}while (c =='J' || c =='j');
getchar ();
return 0;
}kann ich bei der abfrage ob ich noch einmal möchte eingeben was ich will, das programm wieder aba beendet!
und wenn ich das ganze so ein gebe:
printf ("\n\nMoechten Sie noch einmal? (J/N)");
scanf ("%s",&c);}while (c =='J' || c =='j');
getchar ();
return 0;
}funktioniert das ganze.
Wer kann mir das erklären mit dem %c und dem %s?
ich gebe bei der abfrage doch einen buchstaben ein, also ein char (c). Das muss doch im grunde gehengez.
Andy
-
Hallo!
bitte verwende die C-Code Tags für deine C Code,damit das ganze lesbarer wird.
Beispiel:
[ cpp ] -> ohne die zwei Leerzeichen
DEIN C CODE
[/cpp]Das mit %c funktioniert nicht da im EingabeBuffer noch immer das Enter (0x0A = LF) von vorher drinnen steht. Daher wird beim einlesen in c das Enter übernommen und nicht der Buchstabe. Mit einem fflush(stdin) leerst du den Buffer sodass das nächste eingelesene Zeichen dein auszuwertender Buchstabe ist. (-> Das meine Erklärung zu 100% stimmt kann ich dir aber nicht garantieren.) funktionieren tut es aber.
Warum %s funktioniert kann ich dir nicht sagen, wichtig wäre aber dass wenn du %s verwendest, das c nicht EINEN Char groß ist sondern mindestens 2 Chars groß sein muss -> Buchstabe plus abschließendes \0 (für Stringende) , da du ja mit %s eine String einliest.#include <stdio.h> int main () { int zahl,nachfolgerzahl,vorgaengerzahl; char c; do { printf ("Nachfolgerzahlen und Vorgaengerzahlen:\t"); printf ("\n\nBitte geben Sie eine Zahl ein:\t"); scanf ("%i", &zahl); nachfolgerzahl = zahl +1; vorgaengerzahl = zahl -1; printf ("\n\nDie Nachfolgerzahl lautet %i", nachfolgerzahl); printf ("\n\nDie Vorgaengerzahl lautet %i", vorgaengerzahl); fflush(stdin); printf ("\n\nMoechten Sie noch einmal? (J/N)"); scanf ("%c",&c); }while (c =='J' || c =='j'); getchar (); return 0; }
Lg THE_ONE
-
hey super vielen danke,
jetzt hab ich es raus