Wątek przeniesiony 2018-02-28 22:12 z C/C++ przez ŁF.

Algorytm euklidesa - pętla for

0

Potrzebuje napisac w C algorytm Euklidesa obliczajacy NWD 2 lczb przy użyciu pętli for. Niestety nie umiem jej skonstruować ktoś pomoże?

0

Pętli while:

int i = 2;
while (i != 20) {
   i=i+2;
}

odpowiada pętla for:

int i;
for (i = 2 ; i != 20; i=i+2) {}
0

# include <stdio.h>
int main ()
{
    int a,b;
    printf("Podaj dwie liczby calkowite wieksze od 0:\n");
    printf("a = ");
    scanf("%i", &a);
    printf("b = ");
    scanf("%i", &b);
    if (a<=0 | b<=0){
    printf("Podano nieprawidlowe wartosci.");}
    else {
    printf("NWD(%i,%i)=",a,b);}
    while(a!=b){
    if (a>b){
    a=a-b;}
    else {
    b=b-a;}}
    printf("%i\n",a);
    return 0;
}

Tak przepraszam. Jak mozna tutaj zmienić tę pętlę?

0
#include <stdio.h>
int main()
{
    int a, b;
    printf("Podaj dwie liczby calkowite wieksze od 0:\n");
    printf("a = ");
    scanf("%i", &a);
    printf("b = ");
    scanf("%i", &b);
    if (a <= 0 | b <= 0) {
        printf("Podano nieprawidlowe wartosci.");
    }
    else {
        printf("NWD(%i,%i)=", a, b);
    }
    for (;a != b;) {
        if (a > b) {
            a = a - b;
        }
        else {
            b = b - a;
        }
    }
    printf("%i\n", a);
    return 0;
}

Wersja poprawiona: https://ideone.com/jt76AH

0

Zrób, zamiast while:
for(;;)
nieskończona petla i na końcu warunek:
if (a == b) break;
i będzie śmigać:)

0
#include <stdio.h>
int main()
{
    int a, b;
    printf("Podaj dwie liczby calkowite wieksze od 0:\n");
    printf("a = ");
    scanf("%i", &a);
    printf("b = ");
    scanf("%i", &b);
    if (a <= 0 | b <= 0) {
        printf("Podano nieprawidlowe wartosci.");
    }
    else {
        printf("NWD(%i,%i)=", a, b);
    }
    for (;;) {
        if (a > b) {
            a = a - b;
        }
        if (a < b ) {
            b = b - a;
        }
        if (a==b) break;
    }
    printf("%i\n", a);
    return 0;
}

To jest okey?

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