Hilfe, kleines C Problem!!



  • #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 du

    if (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! 😋 👍


Anmelden zum Antworten