Erneuter Programmdurchlauf durch Eingabe eines Wortes.



  • Moin,

    Ok mein Problem ist es das ich bei Eingabe von dem Wort "Ja" ein neuer Programmdurchlauf gestartet wird. Da ich das Leider nur mit Zahlen hinbekomme frage ich mal hier nach:

    #include <stdio.h>
    #include <iostream.h>
    
    int line()
    {	
    		printf("------------------------------------------------------------\n");
    		return 0;
    
    }
    
    int main()
    
    {
    		int A = 0;
    		int B = 0;
    		int C = 0;
    		int V = 0;
    		int F = 0;
    		char i;
    
    do
    	{
    		printf("Hallo\a\n");
    					printf("Geben sie Laenge A ein: ");
    						scanf("%d", &A);
    		printf("Geben sie Laenge B ein:");
    					scanf("%d", &B);
    		printf("Geben sie Laenge C ein:");
    					scanf("%d", &C);
    						line();
    		printf("Ihr Volumen ist: %d cm\x33\n", V = A * B *C);
    					line();
    		printf("Ihre Flaeche ist: %d cm \n\n\n", F=  2*(A*B+A*C+B*C));
    		printf("Wollen sie eine neue Berechnung starten?\n");
    		printf("Dann geben sie 1 ein wenn ja und eine andere Beliebige Zahl bei Nein \n");
    					scanf("%d", &i);
    
    	}
    
    		while (i, "Ja");
    		return 0;
    
    				}
    

    Noch eine frage ist ob void line() und int Line() das selbe ist und worin die beiden Sachen sich unterscheiden.



  • wenn, dann brauchst du ein array von char elementen:

    char i[3];
    

    scanf("%d", &i);

    probier dann mal %s und dann aber kein &

    while (i, "Ja");

    wasn das fuern teil?

    strings kannst du mit strcmp vergleichen...

    da du deine funktion eh nicht auf den rueckgabewert pruefst, kannst du auch void benutzen, was einfach heisst, dass diese funktion keinen rueckgabewert hat.

    edit: ungluecklich ist es auch fuer char elemente den bezeichner i zu verwenden, da es sich eingebuergert hat variablen als ganzzahligen-schleifenzaehler mit i zu bezeichnen...



  • Hier ein "unübliches" Konstrukt, bei dem der Compiler nicht meckert:

    do
        { printf("Schweine im Weltall\n"); 
        }
      while(kochen(), essen(), mittagsschlaf(), 0, 1 == 1);
    

    ist eine Endlosschleife, weil der Compiler immer nur den letzen Ausdruck "1 == 1" als Bedingung auswertet. Die vorherigen Funktionen werden nur aufgerufen, mehr nicht.

    Falsch = FALSE = 0
    Wahr = TRUE = alles außer 0

    Adresse von "Ja" = 0x401438 = ungleich 0, also immer wahr



  • Floho schrieb:

    #include <stdio.h>
    #include <iostream.h>
    
    int main()
    
    {
    		int A = 0;
    		int B = 0;
    		int C = 0;
    		int V = 0;
    		int F = 0;
    		char i;
    

    i ist als char, also einzelnes Zeichen, definiert.

    Floho schrieb:

    do
    	{
    
                    ....
    
    		printf("Wollen sie eine neue Berechnung starten?\n");
    		printf("Dann geben sie 1 ein wenn ja und eine andere Beliebige Zahl bei Nein \n");
    					scanf("%d", &i);
    		
    	} while (i, "Ja");
    	  return 0;
    }
    

    Hier möchtest Du, dass der Anwender in eine char-Variable ein int-Wert eingibt und fragst dann bei while einen String ab?😕
    Das Formatierungszeichen für char in printf() und scanf() ist %c
    Wenn der Anwender eine 1 für ja eingeben soll, dann

    int i;
    /* und */
    while(i == 1);
    

    Floho schrieb:

    Noch eine frage ist ob void line() und int Line() das selbe ist und worin die beiden Sachen sich unterscheiden.

    Das ist nicht dasselbe. Beides sind Funktionen. Die schreibweise ist nicht
    korrekt.
    void line() wird in Ansi C so geschrieben: void line(void)
    int Line() int Line(void)
    void line(void) bekommt keinen Parameter übergeben und hat auch keinen
    Rückgabewert. void leer oder nichts.
    int Line(void) bekommt keinen Parameter übergeben und gibt einen int-Wert
    zurück.

    Viele Grüße

    thomas


Anmelden zum Antworten