3 Probleme



  • Bashar schrieb:

    int zahl1; 
    int zahl2; 
    int zahl3; 
    
    printf("Bitte Zahl1 eingeben: "); 
    
    int zahl1 = 0;
    

    Ist das beabsichtigt, dass du die Variable hier nochmals deklarierst? Oben steht doch schon eine Deklaration, das soll hier wahrscheinlich nur eine Zuweisung sein.

    Der Compiler beschwert sich übrigens darüber, dass du Anweisungen und Deklarationen mischst. Wahrscheinlich hast du einen Compiler, der den aktuellen C-Standard von 1999 nicht umsetzt. In dem alten C-Standard von 1989 müssen Variablen zusammen am Blockanfang deklariert werden.

    achja das hab ich vergessen, aber auch ohne dem wenn ich das lösche kommen trotzdem noch fehler....denk dir das bitte weg...



  • Es kommen noch Fehler, das ist aber schön. Und welche?



  • Bashar schrieb:

    Es kommen noch Fehler, das ist aber schön. Und welche?

    Wenn ich zahl1=0 zahl2=0 zahl3=0 lösche kommen diese fehler:

    warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    Siehe Deklaration von 'scanf´
    Siehe Deklaration von 'scanf´
    Siehe Deklaration von 'scanf´
    warning C4013: 'print' undefiniert; Annahme: extern mit Rückgabetyp int
    

    Ich verstehs einfach nicht, und ich brauch das bis morgen x(



  • Bitte deine Hausaufgaben:

    #include <stdio.h>
    
    int main()
    {
        int zahl1;
        int zahl2;
        int zahl3;
    
      printf("Bitte Zahl1 eingeben: ");
    
      zahl1 = 0;
      scanf("%d", &zahl1);
    
      printf("\nBitte Zahl2 eingeben: ");
    
      zahl2 = 0;
      scanf("%d", &zahl2);
    
      zahl3 = zahl1 * zahl2;  
    
      printf("\nBitte Zahl3 eingeben: ");
    
      scanf("%d", &zahl2);
    
      printf("\nDas Produkt lautet %d\n", zahl3 * zahl2);
    
      return 0;
    }
    

    Du hattest hier die Fehler:

    1. die doppelten "int"
    2. zahl und zahl3 waren unbenutzt
    3. gravierend:

    print("\nDas Produkt lautet %d", zahl1 * zahl 2);
    

    Schreibfehler, du hast ein Leerzeichen zwischen zahl und der 2 also "zahl 2" statt "zahl2" was den "Konstanten" Fehler verursacht hat...

    Das zweite:

    jahre=tag/365;
    
      tage=tag%365;
      monate=tage/30;
      jahre=tage/365;
      tage=tag%365;
    

    Wo ist da der Sinn, dass du Jahre und tage zweimal setzt?

    jahre=tag/365;
      tag = tag - (jahre * 365);
      monate=tag/30;
      tag = tag - (monate * 30);
    

    So ist es schon mal besser, ob das der Fehler war, weiß ich nicht...



  • Man Danke, auf das hätt ich auch selber kommen können, DANKE !!!

    Ein Beispiel brauch ich aber noch....

    #include <stdio.h>
    
    int main()
    {
      int tag;
      int tage;
      int monate;
      int jahre;
    
      printf("Bitte geben Sie die Anzahl der Tage ein: ");
    
      scanf("%d",&tag);
    
      jahre=tag/365;
    
      tage=tag%365;
      monate=tage/30;
      jahre=tage/365;
      tage=tag%365;
      printf("genauer : %d jahre, %d monate, %d tage",jahre,monate,tage);
    
       return 0;
    
    }
    

    Ich schaff es nicht dass es mir die Monate Tage und Jahre genau ausgibt, Fehler zeigt es keinen an...Hättest du da auch noch ne idee?

    Ach und noch was:

    Schreiben Sie ein Programm, bei dem drei Zahlen multipliziert werden, das aber nur zwei Variablen
    benötigt. Lassen Sie das Ergebnis ausgeben. Entwerfen Sie das Programm so, dass nur das Produkt
    noch weiter verwendet werden könnte.

    Das war die HÜ vom vorigen Beispiel wie schaffe ich es dass ich dann nur mit den Produkt weiterrechnen kann?



  • Zu 2.

    jahre=tag/365;
    
      tage=tag%365;   // 0- 364
      monate=tage/30; 
      jahre=tage/365; // Warum hier nochmal? Da kann nur 0 rauskommen
      tage=tag%365;   // tage=tage%30
    


  • jahre=tag/365;
    
      tage=tag%365;   // 0- 364
      monate=tage/30;
      jahre=tage/365; // Warum hier nochmal? Da kann nur 0 rauskommen
      tage=tag%365;   // tage=tage%30
    

    das eine ist jahre=tag/365 das andere ist jahre=tage/365, das heißt eines gehört weg?



  • Siehe mein Edit in meinem Post....
    Sonst eig:

    jahre=tag/365;
      tag = tag - (jahre * 365);
      monate=tag/30;
      tag = tag - (monate * 30);
    

    tage kannste löschen und im printf durch tag ersetzten....Spart Variabeln...



  • Ich hab jz eingefügt was gekommen ist von euch, und beim ersten Post kommt wenn ich 31 Tage eingebe: 1 monat 31 Tage und beim 2. Post kommtn erorr den ich wiederholen ignoreiren oder abbrechen kann....



  • Du husst wie gesagt es etwas ändern:

    #include <stdio.h>
    
    int main()
    {
      int tag;
      int monate;
      int jahre;
    
      printf("Bitte geben Sie die Anzahl der Tage ein: ");
    
      scanf("%d",&tag);
    
      jahre=tag/365;
      tag = tag - (jahre * 365);
      monate=tag/30;
      tag = tag - (monate * 30);
    
      printf("genauer : %d jahre, %d monate, %d tage",jahre,monate,tag);
    
       return 0;
    
    }
    

    Wegen der Aufgabenstellung, so schwer ist das auch nicht:

    #include <stdio.h>
    
    int main()
    {
        int zahl1;
        int zahl2;
    
      printf("Bitte Zahl1 eingeben: ");
    
      scanf("%d", &zahl1);
    
      printf("\nBitte Zahl2 eingeben: ");
    
      scanf("%d", &zahl2);
    
      zahl1 = zahl1 * zahl2;  
    
      printf("\nBitte Zahl3 eingeben: ");
    
      scanf("%d", &zahl2);
    
      printf("\nDas Produkt lautet %d\n", zahl1 * zahl2);
    
      return 0;
    }
    


  • DirkB schrieb:

    Zu 2.

    jahre=tag/365;
    
      tage=tag%365;   // 0- 364
      monate=tage/30; 
      jahre=tage/365; // Warum hier nochmal? Da kann nur 0 rauskommen
      tage=tag%365;   // tage=tage%30
    

    Wenn ich das hier durch das ersetze kommt bei 761 Tagen: 2 Jahre 1 monat 31 Tage wobei jedoch gehört: 2 jahre 1 monat 1 tag.

    Das steht jz drinnen:

    #include <stdio.h>
    
    int main()
    {
      int tag;
      int tage;
      int monate;
      int jahre;
    
      printf("Bitte geben Sie die Anzahl der Tage ein: ");
    
      scanf("%d",&tag);
    
      jahre=tag/365;
    
      tage=tag%365;   // 0- 364
      monate=tage/30;
      tage=tag%365;   // tage=tage%30 
      printf("genauer : %d jahre, %d monate, %d tage",jahre,monate,tage);
    
       return 0;
    
    }
    


  • Du ermittelst die Jahre:
    jahre=tag/365;

    Dann musst du nur noch die Tage in einem Jahr berücksichtigen:
    tage=tag%365; // 0 <= tage <= 364

    Das gleich für monate:
    monate=tage/30; // 0 <= monate <= 12 ( ab 360 Tage bist du im 12. Monat)

    Bis hierhin ok.
    jahre=tage/365;
    tage sind max 364. Dann kann da 364/365 stehen. Das sind 0,99726... was als int aber 0 ist. Bringt also nichts

    tage=tag%365;
    tage sind max 364. Der Rest der Division mit 365. Da tag immer kleiner als 365 ist, steht da tage=tag. Bringt also nichts

    Du suchst:
    tage=tage%30; // Der Rest der Tage in einem Monat.



  • Wie gesagt, nimm mal den Code von meinem Post hiervor...



  • Ok Danke das mit Monate geht jz, danke 😉

    Aber das es dann nur mit Produkt aus Zahl 1 und Zahl 2 weiterrechnet das geht nicht, z.B. Zahl 1:3
    Zahl2:3
    Zahl3:5

    = 45 kommt raus normalerweise sollte ja 9 rauskommen...



  • tage=tag%365;   // tage=tage%30
    

    Du weißt was // ist? Da ist ein einzeiliger Kommentar. Der geht von // bis zum Ende der Zeile.

    Ich habe dam meine Kommentare als Hinweise hingeschrieben.
    Nachdenken solltest du aber auch noch.



  • ich bin dumm^^ so dumm^^ das von derFer hat eh gepasst, ich bin so eint rottel echt....^^ danke 😃 und noch eine kleinigkeit, das ist für euch sicher nichts aber ich ja, ich schreibs mal rein:

    Schreiben Sie ein Programm, das Sie nach drei Zahlen fragt und dann die Summe der drei Zahlen
    ausgibt. Nachdem die Summe ausgegeben wurde, soll nach einer neuen Zahl gefragt werden, mit der
    die Summe dann multipliziert wird. Dieses Ergebnis soll ebenfalls ausgegeben werden. Die Ein- und
    Ausgabe aussehen wie im folgenden Beispiel:
    Bitte Zahl1 eingeben: 4
    Bitte Zahl2 eingeben: 6
    Die Summe lautet 10
    Bitte Zahl3 eingeben: 8
    Das Produkt lautet 80

    #include <stdio.h>
    
    int main()
    {
    	int zahl1;
    	int zahl2;
    	int zahl3;
    
      printf("Bitte Zahl1 eingeben: ");
    
      int zahl1 = 0;
      scanf("%d", &zahl1);
    
      printf("\nBitte Zahl2 eingeben: ");
    
      int zahl2 = 0;
      scanf("%d", &zahl2);
    
      printf("\nDie Summe lautet %d\n", zahl1 + zahl2);
    
      printf("\nBitte Zahl3 eingeben: ");
    
      int zahl3 = 0;
      scanf("%d", &zahl3);
    
      print("\nDas Produkt lautet %d", zahl1 * zahl2 + zahl3);
    
      return 0;
    }
    


  • DirkB schrieb:

    tage=tag%365;   // tage=tage%30
    

    Du weißt was // ist? Da ist ein einzeiliger Kommentar. Der geht von // bis zum Ende der Zeile.

    Ich habe dam meine Kommentare als Hinweise hingeschrieben.
    Nachdenken solltest du aber auch noch.

    Dass das ein Kommentar ist weiß ich, so blöd bin ich auch wieder nicht, n bisschen versteh ich das auch 😃



  • 3*3*5 != 9



  • Punkt vor Strichrechnung. 😮



  • Hä?
    Der Code macht folgendes:
    eigabe 1 -> Zahl1
    eingabe 2 -> Zahl2
    Zahl1 = Zahl1 * Zahl2 (also Produkt aus Zahl1 und Zahl2)
    eingabe 3 -> ersetzt jetzt wert von Zahl2
    Zahl1 = Zahl1 (also Produkt aus Zahl1 und Zahl2) * Zahl2 (also eingabe 3)
    ausgabe : Produkt aus eingabe 1, eingabe 2 und eingabe 3.

    Wie in der Aufgabenstellung beschrieben:

    Schreiben Sie ein Programm, bei dem drei Zahlen multipliziert werden, das aber nur zwei Variablen
    benötigt. Lassen Sie das Ergebnis ausgeben. Entwerfen Sie das Programm so, dass nur das Produkt
    noch weiter verwendet werden könnte.

    Daraus entnehme ich:
    2 Variabel,
    Ergebnis am ende: Produkt aus ALLLEN DREI Eingaben.
    Am Ende kann NUR noch mit dem PRODUKT aus ALLEN DREI Eingaben weiter gerechnet werden.


Anmelden zum Antworten