program dodaje co drugą liczbę

0

jak napisać program dodający pierwszą trzecią piątą itd. liczbę i gdy suma przekroczy 20 program kończy dodawanie?

1

Musisz dodawać do pewnej zmiennej co drugą liczbę i jak suma przekroczy 20 to przerwać.

0
#include<stdio.h>
int main()
{
    double a, r , suma, iloczyn, i;
    suma=0;
    iloczyn=1;
    i=1;
    do
    {
    printf("podaj iczbe z zakresu 0-1\n");
    scanf("%lf", &a);
    if((a>=0) && (a<=1))
    {

        r=i%2;
        if(r=0)
        {
         iloczyn=iloczyn*a;
        }
        if(r>0)
        {
         suma=suma+a;
        }

i=i+1;


    }
    else
    {
        printf("liczba jest z poza zakresu\n");

    }

    }while(suma<5) ;

    printf("suma przekroczla 20 wynik zostal zapisany do piku\n");
    printf("iloczyn wynosi %lf", iloczyn);
    return(0);

}

Dlaczego wywala w tam gdzie jest r=i%2

0

Bo reszta z dzielenia nie jest typu double.
Porównanie powinno wyglądać tak:

if(r==0)

Z treści zadania nie wynika, że masz dodawać tylko liczby dodatnie.

0

Double to typ zmiennoprzecinkowy, może tutaj jest problem. Zmień na całkowitoliczbowy (np. int) i wtedy spróbuj pokombinować ze swoim programem, bo chyba nie działa tak, jakbyś sobie tego życzył.

A że tak spytam, chciałeś osiągnąć coś takiego?

#include <stdio.h>

int main(void)
{
        int suma, i, liczba;
	
	i = 0;
	suma = 0;
	
	while(suma < 20 && scanf("%d", &liczba) == 1)
	{
		if(i%2 == 0)
			suma += liczba;
		i++;
	}
	printf("%d", suma);
	
	return 0;
}

Powyższy program pozwala wpisywać użytkownikowi liczby i dodaje 1, 3, 5, 7... liczbę, aż do osiągnięcia sumy większej od 20.

0

To nie byłoby prościej w pętli inkrementować i o 2? Wtedy nie musiałby sie grzebać z r=i%2 itp.

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