NWW w C

0

Witam. Jestem początkujący w programowaniu w języku C, a mam napisać mały programik na zaliczenie i mam pewien problem. Siedzę przy tym programie i nie mam już pomysłu.
Mam napisać program który oblicza NWW (jest to tak jakby podprogram dużego programu. Z innymi zdaniami sobie poradziłem tylko to jeszcze;/ )

case '2':
{int m, n, NWD, NWW;

               printf("Podaj dwie liczby calkowite");
               printf(" dodatnie m i n < ");
               scanf("%d %d", &m, &n);
               printf("NWD(%d,%d) = ", m, n);
                while ( n != m)
                 if ( n > m)
                   n = n - m;
                 else
                   m = m - n;
               printf("%d\n", m);
               m=NWD;
             NWW=(m*n)/NWD;
             printf("%d\n",NWW);
             break;
             }

}
return 0;
}

Byłbym bardzo wdzięczny za pomoc.

0

Algorytm euklidesa na nwd:

while b:
c = a % b
a = b
b = c
return a

potem tak jak masz (a*b)/NWD

0

Czyli ma to wyglądać tak??

case '2':
{int a, b, c, NWW, NWD;

               printf("Podaj dwie liczby calkowite");
               printf(" dodatnie a i b < ");
               scanf("%d %d", &a, &b);
               printf("NWD(%d,%d) = ", a, b);
                while (b)
                {c = a % b;
                a = b;
                b = c;
                a=NWD;
                
                }
             NWW=(a*b)/NWD;
             printf("%d\n",NWW);
             break;
             }

}
return 0;
}

0

tak:

int x = a, y = b;
while (b) {
c = a % b;
a = b;
b = c;
}
NWW=(x*y)/a;

0

Chyba tak:
{int a,b,c,x = a, y = b,NWW;

               printf("Podaj dwie liczby calkowite");
               printf(" dodatnie x i y < ");
               scanf("%d %d", &x, &y);
               
               while (b) 
               {
               c = a % b;
               a = b;
               b = c;
               
                }
               NWW=(x*y)/a; 
                printf("%d\n",NWW);
             break;
             }

bo tak jak Ty napisałeś to kompilator wywala mi błędy;/ i w dodatku liczy źle ;/
Już nie mam kompletnie pojęcia jak to napisać;/

0
andylon napisał(a)

bo tak jak Ty napisałeś to kompilator wywala mi błędy;/ i w dodatku liczy źle ;/

Jasnowidzem nie jestem niestety ;/

andylon napisał(a)

Już nie mam kompletnie pojęcia jak to napisać;/

Tak jak napisalem.

#include <stdio.h>

int nwd(int a, int b)
{
	int c;
	while(b) {
		c = a % b;
		a = b;
		b = c;
	}
	return a;
}

int main(void)
{
	int a, b;

	printf("podaj liczby: ");
	scanf("%d %d", &a, &b);

	printf("nww: %d\n", (a*b)/nwd(a,b));

	return 0;
}
0

Twoj kod:

{int  a,b,c,x = a, y =  b,NWW;

                   printf("Podaj dwie liczby calkowite");
                   printf(" dodatnie x i y < ");
                   scanf("%d %d", &x, &y);
                  
// ile u Ciebie tutaj jest rowne a, b i c ? nikt tego chyba nie wie
// jakbys przypisal jeszcze a = x, b = y to bylo by ok
                   while (b)
                   {
                   c = a % b;
                   a = b;
                   b = c;
                   
                    }
                   NWW=(x*y)/a;
                    printf("%d\n",NWW);
                 break;
                 }

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