Hilfe, kleines C Problem!!
-
Ich würde dir empfehlen, komplett neu anzufangen.
#include <stdio.h> int main() { int zahl; printf("Bitte die Zahl eingeben:"); scanf("%d",&zahl); return 0; }
Das kannst du übernehmen.
Der Rest ist Müll. Sorry
-
Danke für den Tip:
if (zahl % 7 == 0)
Hätt ich das eher gewusst hätt ich mir 3 Stunden rumgerätsel gespart.
Danke erstmal, meld mich nochmal falls ich wieder feststecke!!
-
#include <stdio.h>
int main(void) { int wert; // Interger Var. printf("Wert: "); scanf("%i", &wert); // Wert einlesen if((wert % 7) == 0) // ergibt der Wert bei der teilung // keinen einen Rest? printf("\nGeht!"); // freu dich! else // wenn's nicht geht printf("\nGeht nicht!"); return 0; }
PS: Ich würd dir ein C-Buch empfehlen!
-
Noch ne kleine Frage:
Welche Formel für die Schleife?
Also z.B eingebene Zahl 16.
Hab mir gedacht:
else {
printf("\nDie Zahl ist nicht durch 7 teilbar\n");
do
{x=zahl-1;
}while (zahl % 7 == 0);
printf("\nDie naechstkleiner durch 7 teilbare Zahl hat den Wert:",x);}Funzt aber irgendwie net!!
-
Überlege nocheinmal, was ich gesagt habe, was der % - Operator zurückliefert.
Und ob du dann immer noch eine Schleife brauchst.
-
Ich brauch doch eine Schleife???oder?
Er soll mir ja die nächst kleinere und größere durch 7 teilbare Zahl ausgeben, falls ich eine Zahl eingebe welche nicht durch 7 teilbar ist.
Also zb. ich geb 180 ein.
Ausgabe: Nicht durch 7 teilbar.
Ausgabe: Nächstkleinere durch 7 teilbare Zahl 175
Ausgabe: Nächstgrößere 182
Das muss ich doch mit einer schleife machen??
-
Seppi schrieb:
Ich brauch doch eine Schleife???oder?
Er soll mir ja die nächst kleinere und größere durch 7 teilbare Zahl ausgeben, falls ich eine Zahl eingebe welche nicht durch 7 teilbar ist.
Also zb. ich geb 180 ein.
Ausgabe: Nicht durch 7 teilbar.
Ausgabe: Nächstkleinere durch 7 teilbare Zahl 175
Ausgabe: Nächstgrößere 182
Das muss ich doch mit einer schleife machen??nehm dir doch mal den tip von deinem namensvetter zu herzen.
gib dir mal den rückgabewert der modulo-operation (also die zeile mit dem %-operator) aus, spiel ein paar zahlen durch und denke kurz nach.
-
Moment, hab glaub ich kapiert was du meinst.
Ich muss nur von meiner Zahl den Rest abziehen und hab die nächstkleinere Zahl!
-
So mein Prog ist jetzt soweit fertig!!
Aber braücht nocheinmal Hilfe.
Am ende wird gefragt nochmal ja/nein.
Hab des so gemacht s.u.
Kapier nur nicht worüber ich die do while Schleife legen muss damit es funktioniert und von vorne anfängt.
Mein Stand:#include <math.h>
#include <windows.h>int main()
do
{ int zahl,b,erg,rest,erg1,erg2,weiter;
b=7;
printf("Bitte geben Sie eine positive ganze Zahl ein:");
scanf("%d",&zahl);
erg = zahl / b;
if
(zahl % 7 == 0)
printf("\nDie Zahl ist durch 7 teilbar!\n");else
{
printf("\nDie Zahl ist nicht durch 7 teilbar!\n");
rest = zahl % 7;
erg1 = zahl - rest;
erg2 = erg1 + 7;
printf("\nDie naechstkleiner durch 7 teilbare Zahl hat den Wert: %d\n",erg1);
printf("\nDie naechstgroesser durch 7 teilbare Zahl hat den Wert: %d\n",erg2);
}printf("\nSoll das Programm wiederholt werden? (Ja= 1, Nein= beliebig) :");
scanf ("%d",weiter);
if (weiter = 1)
printf("\nProgramm wird wiederholt");
else
printf("\nProgramm wird beendet");return 0;
}while (weiter=1);Bitte nochmal helfen!!
-
if (weiter = 1)
du weist der Variablen den Wert 1 zu, und dann fragst du, ob weiter ungleich 1 ist ...
-
Mein Fehler!
Hier richtig, bis auf die Schleife:
#include <math.h>
#include <windows.h>int main()
{
do
{ int zahl,b,erg,rest,erg1,erg2,ja;
b=7;
printf("Bitte geben Sie eine positive ganze Zahl ein:");
scanf("%d",&zahl);
erg = zahl / b;
if
(zahl % 7 == 0)
printf("\nDie Zahl ist durch 7 teilbar!\n");else
{
printf("\nDie Zahl ist nicht durch 7 teilbar!\n");
rest = zahl % 7;
erg1 = zahl - rest;
erg2 = erg1 + 7;
printf("\nDie naechstkleiner durch 7 teilbare Zahl hat den Wert: %d\n",erg1);
printf("\nDie naechstgroesser durch 7 teilbare Zahl hat den Wert: %d\n",erg2);
}printf("\nSoll das Programm wiederholt werden? (ja= 1, nein= beliebig) :");
scanf ("%d",&ja);if (ja == 1)
printf("\nProgramm wird wiederholt");
else
printf("\nProgramm wird beendet");return 0;
}while (ja == 1);
return 0;}
-
Achja, nochwas. Wir haben gelernt, das != ungleich heißt. Stimmt des gar nicht?
Heißt nur = ungleich??
-
Du verlässt das Programm (main fkt.) durch das return, bevor du das while erreichst.
Außerdem würde ich mir das
printf("\nProgramm wird beendet");
bis zum Schluss aufheben, wenn du die Schleife verlassen hast.
Anm.: Bitte angewöhnen, Codetags zu benutzen bei so viel Quellcode.
-
Seppi schrieb:
Achja, nochwas. Wir haben gelernt, das != ungleich heißt. Stimmt des gar nicht?
Heißt nur = ungleich??Hab mich vlt. unklar ausgedrückt.
Wenn duif (weiter)
schreibst, gilt die Bedingung als erfüllt, wenn weiter!=0 ist.
Allerdings wird in deinem Beispiel zuerst 1 zugewiesen durch das = und dann erst verglichen.
-
So jetzt funktioniert alles!!
Wens interessiert:#include <math.h> #include <windows.h> int main() { int zahl,b,erg,rest,erg1,erg2,ja; b=7; do { printf("\nBitte geben Sie eine positive ganze Zahl ein:"); scanf("%d",&zahl); erg = zahl / b; if (zahl % 7 == 0) printf("\nDie Zahl ist durch 7 teilbar!\n"); else { printf("\nDie Zahl ist nicht durch 7 teilbar!\n"); rest = zahl % 7; erg1 = zahl - rest; erg2 = erg1 + 7; printf("\nDie naechstkleiner durch 7 teilbare Zahl hat den Wert: %d\n",erg1); printf("\nDie naechstgroesser durch 7 teilbare Zahl hat den Wert: %d\n",erg2); } printf("\nSoll das Programm wiederholt werden? (ja= 1, nein= beliebig) :"); scanf ("%d",&ja); if (ja == 1) printf("\nProgramm wird wiederholt\n"); else printf("\nProgramm wird beendet\n"); }while (ja == 1); return 0;}
Das einzige was der Compiler jetzt noch meckert ist zu dem 1. printf und scanf
missing prototype.
Wie kann ich das noch beheben?
-
Na das sieht doch schon besser aus
#include <stdio.h>
mit rein, dann passt es.
-
Vielen Dank, ich schuld Dir ein Bier!