Sumowanie liczb parzystych i nieparzystych. Dzielenie liczby naturalnej przez 11

0

Dopiero zaczynam i nie wiem jak to dokładnie napisać w języku C.
Zbadać za pomocą odpowiedniego programu (tylko dla liczb w podanym przedziale z zakresu integer) prawdziwość twierdzenia, że jeśli suma cyfr na nieparzystych pozycjach (od prawej) jest równa sumie cyfr na pozycjach parzystych to dana liczba naturalna n jest podzielna przez 11.
Dodaje algorytm

1

Najbardziej łopatologicznie: zamień sobie integera na tablicę znaków za pomocą sprintfa i potem tylko od ich wartości poodejmuj '0', w ten sposób otrzymasz tablicę cyfr.

0

Napisałem coś takiego. Nie ma możliwości chyba, aby suma cyfr parzystych i nieparzystych była sobie równa.

int main()
{

    int liczba,a,b;
     puts("Podaj liczbe");
     scanf ("%d %d", &a, &b);
     int sumaPar=0,sumaNiepar=0;
     liczba=a;

    while(liczba<=b)
    {

        if((liczba % 2) == 0)
        {
            sumaPar+=liczba;
        }
        else
        {
            sumaNiepar+=liczba;
        }
        liczba++;


    }


    if(sumaPar==sumaNiepar)
    puts("Podzielna przez 11");
    else
    printf("Niepodzielna");

    return 0;
}
0

Jeśli podasz 1 i 3. To masz Nieparzyste 1+3=4 i parzystą tylko 2

0

W tym algorytmie (schemacie blokowym) który podałeś masz błąd. Tam powinno być:

parz+=liczba%10;
liczba1=liczba1/10;
nieparz+=liczba1%10;
liczba1=liczba1/10;

Jak rozumiem przykładowy output z programu ma wyglądać mniej więcej tak:

Wprowadz dwie liczby:
pierwsza liczba: 120
druga liczba: 124
Liczba 120:
  suma cyfr na miejscach parzystych: 2
  suma cyfr na miejscach nieparzystych: 1
  Wniosek: niepodzielna przez 11
Liczba 121:
  suma cyfr na miejscach parzystych: 2
  suma cyfr na miejscach nieparzystych: 2
  Wniosek: PODZIELNA przez 11
Liczba 122:
  suma cyfr na miejscach parzystych: 2
  suma cyfr na miejscach nieparzystych: 3
  Wniosek: niepodzielna przez 11 
Liczba 123:
  suma cyfr na miejscach parzystych: 2
  suma cyfr na miejscach nieparzystych: 4
  Wniosek: niepodzielna przez 11
Liczba 124:
  suma cyfr na miejscach parzystych: 2
  suma cyfr na miejscach nieparzystych: 5
  Wniosek: niepodzielna przez 11
0
Delor napisał(a):

W tym algorytmie (schemacie blokowym) który podałeś masz błąd. Tam powinno być:

parz+=liczba%10;
liczba1=liczba1/10;
nieparz+=liczba1%10;
liczba1=liczba1/10;

Jak rozumiem przykładowy output z programu ma wyglądać mniej więcej tak:

Wprowadz dwie liczby:
pierwsza liczba: 120
druga liczba: 124
Liczba 120:
  suma cyfr na miejscach parzystych: 2
  suma cyfr na miejscach nieparzystych: 1
  Wniosek: niepodzielna przez 11
Liczba 121:
  suma cyfr na miejscach parzystych: 2
  suma cyfr na miejscach nieparzystych: 2
  Wniosek: PODZIELNA przez 11
Liczba 122:
  suma cyfr na miejscach parzystych: 2
  suma cyfr na miejscach nieparzystych: 3
  Wniosek: niepodzielna przez 11 
Liczba 123:
  suma cyfr na miejscach parzystych: 2
  suma cyfr na miejscach nieparzystych: 4
  Wniosek: niepodzielna przez 11
Liczba 124:
  suma cyfr na miejscach parzystych: 2
  suma cyfr na miejscach nieparzystych: 5
  Wniosek: niepodzielna przez 11

O coś takiego chodzi. Tylko mam problem w napisaniu tego w c z użyciem pętli while.

0

Nie musisz cytować całego postu jeśli odpowiadasz tuż pod nim.

int main()
{
	int a, b;
	int liczba;
	//tu wczytanie od uzytkownika liczb a i b
	...
	
	liczba=a;
	while(liczba <= b)
	{
		
		//tu wypisanie liczby,
		//sprawdzenie czy jest podzielna przez 11
		//wypisanie wniosków
		...
		
		liczba++;
	}
}
0

Ogarnia ktoś o co chodzi? Program nie robi tego co powinien. Pan ma sprawdzić poprawność twierdzenia dla liczb w podanym zakresie. Proszę napisać program na podstawie wykonanego algorytmu.

#include <stdio.h>
 
int main()
{
 
    int liczba1,liczba2,reszta;
     puts("Wprowadz dwie liczby");
     puts("Pierwsza Liczba: ");
     scanf ("%d", &liczba1);
     puts("Druga Liczba: ");
     scanf ("%d", &liczba2);
 
     int i;
     for(i=liczba1; i<=liczba2; i=i+1)
     {
        printf("Liczba : %d\n", i);
        int liczba=i;
        int parzysta=0;
        int sumaPar=0,sumaNiepar=0;
        while(liczba>0)
    {
        reszta=liczba%10;
        liczba = liczba/10;
 
        if(parzysta==1)
        {
            sumaPar+=reszta;
            parzysta=0;
            continue;
        }
        if(parzysta==0)
            {sumaNiepar+=reszta;
            parzysta=1;
 
            }
 
 
 
    }
 
    printf("suma cyfr na miejscach parzystych : %d\n", sumaPar);
    printf("suma cyfr na miejscach nieparzystych : %d\n",sumaNiepar);
    if(sumaPar==sumaNiepar)
    puts("Wniosek: podzielna przez 11");
    else 
    puts("Wniosek: niepodzielna przez 11");
     }
 
    return 0;
}
0

Na końcu pętli for:

        if ((sumaPar == sumaNiepar) == (i % 11)) {
            printf("Twierdzenie nieprawdziwe dla liczby: %d !\n", i);
            return 1;
        }
        else {
            printf("Twierdzenie prawdziwe dla liczby: %d.\n", i);
        }

Tuż przed wyjściem z programu:

printf("Twierdzenie prawdziwe dla podanego zakresu liczb.\n");

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