Hi, ich rätsel an der folgenden Aufgabe.
Mein Problem ist, dass ich die Do-While schleife nicht richtig anwenden kann, weil ich die Praktikumsstunde verpasst habe. Normale +-*/ formeln kann ich normalerweise aber nicht die folge....
Kann mir da einer helfen? Danke im Vorraus.
Kurze Programmierhilfe in c++...
-
-
-
Willst du wissen, wie eine do-while-Schleife funktioniert?
Z.B.:
Dasselbe könntest du auch mit einer while-Schleife erreichen:
Oder mit einer for-Schleife:
Jede do-while-Schleife lässt sich in ein Konstrukt mit einer while-Schleife umwandeln. In manchen Fällen ist aber eine do-while-Schleife eleganter, z.B.:
In diesem Fall würdest du unter Verwendung einer while-Schleife schreiben:
Codeint i = 1; printf ("%d. Ich bin cool!\n", i); while (i < 1) { printf ("%d. Ich bin cool!\n", i); i++; };
Du müsstest also die printf-Anweisung zweimal in deinen Programmcode einbauen.
Jede while-Schleife lässt sich auch durch eine for-Schleife emulieren und umgekehrt. In C ist die for-Schleife nur "syntactic sugar" für eine while-Schleife plus Initialisierung.
Du könntest auch auf alle Schleifen pfeifen und nur goto verwenden. Davon wird aber im Allgemeinen abgeraten, weil der Programmcode unübersichtlich wird ("Spaghetti-Code").
Noch viel Spaß beim Programmieren!
-
In C ist die for-Schleife nur "syntactic sugar" für eine while-Schleife plus Initialisierung.
Ja, abgesehen vom Zusammenspiel von continue und dem dritten Ausdruck im Kopf der for-Schleife. Aber das nur am Rande -
Hi, danke erstmal. versuchs mal mit der while-schleife. welche bibliotheks muss ich denn einbinden?
<stdio.h> und noch andere?@ stefan Kögl: ich will auchnicht meine Hausaufgeben von euch gemacht bekommen, aber ohne erklärung tu ich mir schwer mit z.b einer While-schleife weil ich noch nicht lange mit Informatik zutun habe!
Die erklärung und nen bisschen hilfe bzw kontrolle wollt ich hier finden...
danke -
ich will auchnicht meine Hausaufgeben von euch gemacht bekommen, aber ohne erklärung tu ich mir schwer mit z.b einer While-schleife weil ich noch nicht lange mit Informatik zutun habe!
Die erklärung und nen bisschen hilfe bzw kontrolle wollt ich hier finden...
dankeEine Erklärung hast du wahrscheinlich dort bekommen, wo du auch die Aufgabenstellung her hast. Ansonsten hilft immer noch Google. Konkrete Fragen werden hier übrigens immer gern beantwortet.
-
ja klar, normalerweise hilft einem unser prof immer, aber ich bin zum lernen nach hause gefahren und erreiche den daher nicht.
ich bin gerad dabei zu schreiben...kommt bestimmt bald ne konkrete frage...
-
ok, bin gerade am tüfteln....versuch gerade zu schreiben, dass die eingabe überprüft wird!
Mein prbolem is, dass ich nicht genau weiß was anweisung und bedingung ist, wenn ich das in 2 schritte unterteile (also in überprüfen der eingabe und ausrechnen der gleichung)!
beim überprüfen ist doch:
anweisung: überprüfen
bedingung: n>=0#include <stdio.h>
#include <conio.h>
#include <math.h>
int main ()
{
int n,i;
n=getchar();
do
{
scanf("%d \ n");
}
while
n=getchar();
n>=0; -
ok, bin gerade am tüfteln....versuch gerade zu schreiben, dass die eingabe überprüft wird!
So weit, so gut.
Mein prbolem is, dass ich nicht genau weiß was anweisung und bedingung ist
Die Schleife wird wiederholt, wenn die Bedingung erfüllt ist. Die Bedingung könnte zB "0 < n" sein.
anweisung: überprüfen
bedingung: n>=0
Hab' ich nicht kapiert....
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main ()
{
int n,i;
n=getchar();
do
{
scanf("%d \ n");
}
while
n=getchar();
n>=0;
Was willst du überhaupt machen? Du liest hier an drei verschiedenen Stellen/Zahlen zeichen ein...BTW: Bitte Code-Tags verwenden
-
Hi, danke erstmal. versuchs mal mit der while-schleife. welche bibliotheks muss ich denn einbinden?
<stdio.h> und noch andere?Für while, do, for brauchst du keine Bibliotheken, weil es sich um Elemente der Sprache C und nicht um Funktionen handelt. Du brauchst stdio.h aber für printf.
-
-
Dieser Code wird aus einigen Gründen nicht funktionieren.
1. Die Zeile
ist fehlerhaft. Richtig wäre:2. Was macht der Code? Er liest ganze Zahlen ein, solange sie größer als 0 sind, und speichert sie in der Variablen n ab. Dadurch wird die Variable n immer wieder überschrieben. Somit wird am Ende nur die letzte Zahl gespeichert. Wenn du aber alle Zahlen haben willst, musst du einen Array verwenden. Z.B.:
Damit werden zehn Zahlen eingelesen und gespeichert.
-
ok, aber das brauche ich doch nicht, wenn ich nur kontrollieren will ob die eingabe korrekt ist oder? Das soll ich ja mit der ersten schleife erreichen, dass kontrolliert wird ob die eingabe eine zahl ist...
wieso wird denn im moment immer bei system ("pause") ein fehler angezeigt???
-
wieso wird denn im moment immer bei system ("pause") ein fehler angezeigt???
Das ganze ist zwar weder portabel noch sonst was, aber wenn du es trotzdem verwenden willst:
-
ok, aber das brauche ich doch nicht, wenn ich nur kontrollieren will ob die eingabe korrekt ist oder? Das soll ich ja mit der ersten schleife erreichen, dass kontrolliert wird ob die eingabe eine zahl ist...
Dafür verwendet man nicht while, sondern if. Aber streng genommen kannst du auf diese Weise gar nicht kontrollieren, ob die Eingabe eine Zahl ist. Wenn der Benutzer "Hallo" eingibt, ergibt scanf ("%d", &n), dass n der Wert 0 zugewiesen wird. Um wirklich zu checken, ob der Benutzer eine Zahl eingegeben hat, musst du die Eingabe als String einlesen und dann überprüfen, ob sich der String verlustfrei in eine Zahl und dann zurück in einen String konvertieren lässt.
Code
Alles anzeigenchar eingabe [1000], konvert [1000]; int n; gets (eingabe); n = atoi (eingabe); konvert = itoa (n, konvert, 10); if (strcmp (eingabe, konvert)) { printf ("Fehler: Keine Zahl eingegeben!"); return; }
wieso wird denn im moment immer bei system ("pause") ein fehler angezeigt???
Das weiß ich nicht, aber ich würde dir empfehlen, statt dessen getch () zu verwenden. Das ist eleganter. -
bin jetzt soweit:
C
Alles anzeigen#include <stdio.h> #include <stdlib.h> int main() { int n=0; do { printf("bitte geben sie einen Wert fuer n an:"); scanf("%d", &n); } while (n>0); system("pause"); return 0; }
es wird nach einer eingabe für n gefragt und n wird kontrolliert.
wie kann ich denn jetzt anzeigen lassen ob n "richtig"(zahl) oder "falsch"(buchstabe) ist? -
gets (eingabe);
Das war eine recht misslungene Demonstration dessen, wie man Benutzereingaben richtig verarbeitet. (Nein, ich bin kein Sysprog-Tutor; gets ist von sich aus böse.)ZitatDas weiß ich nicht, aber ich würde dir empfehlen, statt dessen getch () zu verwenden. Das ist eleganter.
Die Implementierung unnötiger Features mit unportablen Mitteln ist nicht elegant. -
ach scheisse, das rall ich nichmehr bis morgen....
Kann das nich biitttee einer für mich schreiben in dev c++? bitte...
bis zur klausur lern ich das ja eh, aber so schnell nichtmehr... -
wie kann ich denn jetzt anzeigen lassen ob n "richtig"(zahl) oder "falsch"(buchstabe) ist?
scanf gibt einen Wert zurück, der die Anzahl der erfolgreich eingelesenen Elemente angibt. D.h. du kannst das ungefähr so abprüfen: -
Das war eine recht misslungene Demonstration dessen, wie man Benutzereingaben richtig verarbeitet. (Nein, ich bin kein Sysprog-Tutor; gets ist von sich aus böse.)
Solange er - in diesem Fall - nicht mehr als 1000 Zeichen eingibt, passiert nichts Böses.
Die Implementierung unnötiger Features mit unportablen Mitteln ist nicht elegant.
getch ist unportabel?
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!