Pętla w jezyku C

0

Hej! program polega na tym ze ma obliczac y=(a+b/(c+d) siedze nad tym od 2h godzin..

jak na razie moj program wyglada tak:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main()
{
double a, b, c, d, x, y, z;
printf("Witaj w programie obliczajacym wartosc dzialania y=(a+b)/(c+d)\nkliknij DOWOLNY klawisz aby rozpoczac..");
getch();
printf("\nNajpierw licznik a+b. \nPodaj a i b: \na: ");
scanf("%lf", &a);
printf("\nb: ");
scanf("%lf", &b);

x=a+b;

printf("Twoj licznik wynosi %f\n",x);
printf("Teraz mianownik c+d.\nPodaj c i d\nc: ");
scanf("%lf", &c);
printf("\nd: ");
scanf("%lf", &d);

z=c+d;

// for (z==0,z==0,z==0)
	if (z==0)
		{
		printf("c+d wynosi 0 a przez 0 dzielic nie mozna. Podaj inne c i d:\nc: ");
		scanf("%lf", &c);
		printf("\nd: ");
		scanf("%lf", &d);
	    }
	else 
		{
		y=x/z;
		printf("Wynik działania y=(a+b)/(c+d) wynosi: %f",y);	
		
		}
		

getch();
return 0;

}

Mi chodzi o to zeby program po tym jak w mianowniku wyjdzie mu 0 to wyswietla ze jest zero i kaze wprowadzic c i d jeszcze raz. i zeby robil to dopoki ktos nie wprowadzi takich danych aby mianownik byl =/= d zera. poczym przechodzi do rozwiązania działania. w obecnym stanie sprawdza czy mianownik =/= sie zero po czym jak wydzie zero to owszem wyswietla o tm info a jak wprowadze dane jeszcze raz to konczy sie program :O probowalem z petla for i prawie wychodzi z tym ze sprawdza i nawet jak wprowadzis ie ponownie dane to on dalej twierdzi ze mianownik jest zero. Ma ktos pomysl jak to zrobic aby poszlo po mojej mysi?

0
z=c+d;
while (z == 0)
{
    printf("c+d wynosi 0 a przez 0 dzielic nie mozna. Podaj inne c i d:\nc: ");
    scanf("%lf", &c);
    printf("\nd: ");
    scanf("%lf", &d);
    z = c + d;
}
      
y=x/z;
printf("Wynik działania y=(a+b)/(c+d) wynosi: %f",y);    

Przy czym z == 0 niekoniecznie musi dobrze działać, bo z jest zmienną typu double. Zazwyczaj się robi abs(z) < EPSILON.

0

hmm dziękuje za odpowieć. robilem wlasnie z pętlą while tez z tym ze ciągło się w nieskończonosc ("c+d wynosi 0 a przez 0 dzielic nie mozna. Podaj inne c i d:\nc: ") :D brakowało mi na koncu tego z = c + d; .. netępnym razem będe wiedział. a o tym EPSILONie będe musiał poczytac.

0

Możesz zabrać go z końca i sprzed pętli i przenieść do while:

while(!(z=c+d))

1 użytkowników online, w tym zalogowanych: 0, gości: 1