banalne zadanie z sumowaniem ciagu znakow

0

tresc: http://acm.timus.ru/problem.aspx?space=1&num=1068

#include <iostream>

using namespace std;

int main()
{

    int liczba, suma = 0;
    cin >> liczba;

    if(liczba > 0 )
    {

        for(int i=1; i <= liczba; i++)
        {
            suma +=i;
        }
        cout << suma;
    }

    if(liczba < 0 )
    {
        for(int i=1; i >= liczba; i--)
        {
            suma +=i;
        }
        cout << suma;
    }
    if(liczba == 0) cout << 1;
    return 0;
}

Jakis pomysl gdzie moze byc blad?

0

program działa jak należy

http://ideone.com/2Pudp

a jaki błąd Ci się pokazuję?

zapomniałeś o sprawdzeniu jeszcze czy liczba nie przekroczyła 10000
"The input consists of a single integer N that is not greater than 10000 by it's absolute value."

0

Dzieki wielkie! Dopiero zaczynam swoja przygode z tego typu zadaniami i jakos to pominalem.

EDIT: a tak na przyszlosc. Co robic z takimi zalozeniami? wyswietlac 0, czy return 1? W tym wpisalem cout << 0 i poslzo, w nastepnym zadaniu juz nie.

0
fasadin napisał(a):

zapomniałeś o sprawdzeniu jeszcze czy liczba nie przekroczyła 10000
"The input consists of a single integer N that is not greater than 10000 by it's absolute value."
Po co sprawdzać skoro jest to gwarantowane?

0

Jeszcze taka sugestia na uproszczenie tego programu. Korzystając ze wzoru na sumę liczb od 1 do N: 1 + 2 + 3 + .... + N = N*(N+1)/2 mamy:

#include <iostream>
using namespace std;

int main() {
	int N;
	cin >> N;

	cout << ((N>0) ? (N*(N+1)/2) : (N*(1-N)/2 + 1)) << endl;

	return 0;
}

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