Do While Einfügen



  • Hallo da bin ich wieder, habe jetzt meine Semesterarbeit fertig und wollte mal wissen von euch wie es ist.
    Und ich wollte gerne noch eine do while schleifen einfügen aber traue mich nicht jetzt diese noch zu machen da ich sonst mein ganzes Programm nicht mehr läuft, könntet ihr mir bitte helfen wo ich diese schleife einfügen könnte?

    #include <stdio.h>			/*Bibliothek einbindung*/
    #include <math.h>			/*Mathe Bibliothek einbindung*/
    
    void kontrolle_vieta(float x1,float x2)		/*Nebenprogramm zur Kontrolle des Ergebniss von x1 und x2 mit dem satz des Vietas*/
    {
    	float p,q;
    
    	printf("Um das Ergebniss zu bestätigen ob es auch Richtig ist \n");
    	printf("werden die Zahlen in p und q nach dem Satz des Vieta mit \n");
    	printf("p = -(x1 + x2) und q = x1 * x2 und einmal mit\n");
    	printf("p =   b / a    und q = c / a   bestimmt.\n\n");
    	p = -(x1 + x2);
    	q = x1 * x2;
    	printf("Mit dem Satz des Vieta ergibt sich fuer: p = %.2f, q = %.2f\n",p,q);
    }
    
    void kontrolle2(float a,float b,float c)		/*2 Nebenprogramm zur Kontrolle des Ergebniss von x1 und x2 mit p,q*/
    {
    	float p,q;
    
    	p = b/a;
    	q = c/a;
    	printf("Nach p = b/a und q = c/a ergibt sich: p = %.2f, q = %.2f\n",p,q);
    }
    
    void main()
    {
    	int fall;				/*Deklaration der Variabeln*/
    	float a,b,c,x1,x2;
    
    	printf("**********Das Programm loest dir Quadratische Gleichung der Normalform********** \n");
    	printf("ax");
    	putchar(253);
    	printf("+bx+c=0\n");
    	printf("Bitte geben Sie A, B und C ein und suchen Sie sich aus,\n");
    	printf("ob das Programm mit If und Else arbeiten soll oder mit Switch und Case \n");
    	printf("Funktionen ausgeben wollen.\n\n");
    	printf("Bitte geben Sie jetzt a ein:\t");
    	scanf("%f",&a);
    	printf("Bitte geben Sie jetzt b ein:\t");
    	scanf("%f",&b);
    	printf("Bitte geben Sie jetzt c ein:\t");
    	scanf("%f",&c);
    	printf("\nDie Gleichung lautet:\n");
    	printf("%.2fx",a);
    	putchar(253);
    	printf("+%.2fx+%.2f=0\n",b,c);
    	printf("\nBitte waehlen sie nun Ihren Loesungsweg:\n");
    	printf("1 fuer if..else\n");
    	printf("2 fuer switch..case\n");
    	scanf("%i",&fall);			/*Warten auf die Eingabe des Users*/
    
    	switch(fall)				/*Hier geht es um das Hauptprogamm es arbeitet mit if und else sowie case und switch*/
    	{
    	case 1: if(a == 0)			/*Der If-Zweig*/
    			{
    				if(b == 0)
    				{
    					if(c == 0)
    					{
    						printf("Die Gleichung ist trivial wundervoll :)\n.");		/*a=0,b=0,c=0*/
    					}
    					else
    					{
    						printf("Die Gleichung ist nicht loesbar hast pech gehabt\n.");	/*a=0,b=0,c!=0*/
    					}
    				}
    				else
    				{
    					if(c == 0)
    					{
    						printf("Die Loesung ist x=0\n.");				/*a=0,b!=0,c=0*/
    					}
    					else
    					{
    						x1 = c/b;										/*a=0,b!=0,c!=0*/
    						printf("Die Loesung der Gleichung ist: x = c/b = %.2f/%.2f = %.2f.",c,b,x1);
    					}
    				}
    			}
    			else
    			{
    				if(b == 0)
    				{
    					if(c == 0)
    					{
    						printf("Die Loesung der Gleichung ist x=0.\n");	/*a!=0,b=0,c=0*/
    					}
    					else
    					{
    						if(-c/a < 0)										/*a!=0,b=0,c!=0*/
    						{													/*Fallunterscheidung auf negativen Einheit*/
    							printf("Es werden nur Reellen Zahlen angezeigt\n.");
    							printf("Die Loesung dieser Gleichung ist nicht definiert\n.");
    						}
    						else
    						{
    							x1 = sqrt(-c/a);
    							x2 = -sqrt(-c/a);
    							printf("Die Loesungen dieser Gleichung sind:\n");
    							printf("x1 = sqrt-(c/a) = sqrt(-%.2f/%.2f) = %.2f\n",c,a,x1);
    							printf("x2 =-sqrt(-c/a) =-sqrt(-%.2f/%.2f) = %.2f\n",c,a,x2);
    							kontrolle_vieta(x1,x2);
    							kontrolle2(a,b,c);
    						}
    					}
    				}
    				else
    				{
    					if(c == 0)			//a!=0,b!=0,c=0
    					{
    						x1 = 0;
    						x2 = -b/a;
    						printf("\nDie Loesung der Gleichung ist: x = -b/a = -%.2f/%.2f = %.2f.\n",b,a,x2);
    						kontrolle_vieta(x1,x2);
    						kontrolle2(a,b,c);
    					}
    					else
    					{
    						if(pow(b,2)-4*a*c < 0)				/*a!=0,b!=0,c!=0*/
    						{									/*Fallunterscheidung auf negativen EInheit*/
    							printf("Es werden nur Reellen Zahlen angezeigt.\n");
    							printf("Die Loesung dieser Gleichung ist nicht definiert.\n");
    						}
    						else
    						{
    							x1 = 1 / (2 * a) * (-b + sqrt(pow(b,2) - (4 * a * c)));
    							x2 = 1 / (2 * a) * (-b - sqrt(pow(b,2) - (4 * a * c)));
    							printf("Die Loesungen dieser Gleichung sind:\n");
    							printf("x1 = 1/(2a) * (-b + sqrt(b^2 - 4ac) = %.2f\n",x1);
    							printf("x2 = 1/(2a) * (-b - sqrt(b^2 - 4ac) = %.2f\n",x2);
    							kontrolle_vieta(x1,x2);
    							kontrolle2(a,b,c);
    						}
    					}
    				}
    			}
    			break;			/*If-Zweig hoert hier auf*/
    	case 2: fall = 1;		/*Hier fängt der switch-Zweig mit der Automatischen Fallauswahl an*/
    			if(a != 0)
    				fall = fall + 4;
    			if(b != 0)
    				fall = fall + 2;
    			if(c != 0)
    				fall = fall + 1;
    			switch(fall)	
    			{
    			case 1: printf("Die Gleichung ist trivial.");
    					break;
    			case 2: printf("Die Gleichung ist nicht loesbar.");
    					break;
    			case 3: printf("Die Loesung ist x=0.");
    					break;
    			case 4: x1 = c/b;
    					printf("Die Loesung der Gleichung ist: x = c/b = %.2f/%.2f = %.2f.",c,b,x1);
    					break;
    			case 5: printf("Die Loesung der Gleichung ist x=0.");
    					break;
    			case 6: if(-c/a < 0)
    					{
    						printf("Es werden nur Reellen Zahlen angezeigt.");
    						printf("Die Loesung dieser Gleichung ist nicht definiert.");
    					}
    					else
    					{
    						x1 = sqrt(-c/a);
    						x2 = -sqrt(-c/a);
    						printf("Die Loesungen dieser Gleichung sind:");
    						printf("x1 = sqrt-(c/a) = sqrt(-%.2f/%.2f) = %.2f\n",c,a,x1);
    						printf("x2 =-sqrt(-c/a) =-sqrt(-%.2f/%.2f) = %.2f\n",c,a,x2);
    						kontrolle_vieta(x1,x2);
    						kontrolle2(a,b,c);
    					}
    					break;
    			case 7: x1 = 0;
    					x2 = -b/a;
    					printf("Die Loesung der Gleichung ist: x = -b/a = -%.2f/%.2f = %.2f.",b,a,x2);
    					kontrolle_vieta(x1,x2);
    					kontrolle2(a,b,c);
    					break;
    			case 8: if(pow(b,2)-4*a*c < 0)				/*a!=0,b!=0,c!=0*/
    					{									/*Fallunterscheidung auf negativen Einheiten*/
    						printf("Dieses Programm gibt nur Loesungen im Bereich der reellen Zahlen aus.");
    						printf("Die Loesung dieser Gleichung ist nicht definiert.");
    					}
    					else
    					{
    						x1 = 1 / (2 * a) * (-b + sqrt(pow(b,2) - (4 * a * c)));
    						x2 = 1 / (2 * a) * (-b - sqrt(pow(b,2) - (4 * a * c)));
    						printf("Die Loesungen dieser Gleichung sind:\n");
    						printf("x1 = 1/(2a) * (-b + sqrt(b^2 - 4ac) = %.2f\n",x1);
    						printf("x2 = 1/(2a) * (-b - sqrt(b^2 - 4ac) = %.2f\n",x2);
    						kontrolle_vieta(x1,x2);
    						kontrolle2(a,b,c);
    					}
    					break;
    			}
    			break;
    	default: printf("\nUngueltige Eingabe\n");		/*Default bei ungueltiger eingabe*/
    	}
    
    	fflush(stdin);
    	getchar();
    }
    


  • ?? Möchte gerne noch eine Schleife einbauen wo sollte ich diese ansetzen?



  • Du kannst auch deinen Quellcode von Semesterarbeit.c nach Semesterarbeit_01.c kopieren und dann solange im Original rumtesten wie du möchtest, du hast ja noch die Kopie.

    Das 01 kann dann natürlich noch 02, 03, 04 .... sein. Halt für jede gelungene Zwischenversion eins 😉



  • cptburak schrieb:

    ?? Möchte gerne noch eine Schleife einbauen wo sollte ich diese ansetzen?

    Was soll die Schleife machen????



  • Die schleife soll den User Fragen ob er weiter rechnen möchte oder aufhören möchte mit dem programm



  • cptburak schrieb:

    Die schleife soll den User Fragen ob er weiter rechnen möchte oder aufhören möchte mit dem programm

    Dann mach das, was DirkB sagte, und mach sie um alles außenrum, was wiederholt werden soll.



  • Hat zwar nicht wirklich was mit deiner Fragestellung zu tun, aber du bist mit dem user die ganze zeit per sie, nur bei

    printf("Die Gleichung ist nicht loesbar hast pech gehabt\n.");
    

    bist du per du. (und es fehlt ein komma)

    wenn dir des zu kleinlich erscheint, dann ignorier den post einfach 🙂
    hab mir nur gedacht, dass das bei ner semesterarbeit evlt wichtig ist!

    mfg domi


Log in to reply