suma kolejnych liczb

0

Mam do napisania program, który ma obliczyć sumę kolejnych liczb.
Ciało funkcji wygląda tak

{
int pocz.,kon.,
   cout << "podaj poczatek przedziału:\n";
   cin   >> pocz.;
   cout << "podaj koniec przedziału:\n";
   cin   >> kon.;
        for(int i=pocz.;i<=kon.;i++)
        {
           jakiej w tym miejscu użyć instrukcji?
         )
0

Pewnie

suma+=i
0

nie działa

0

np. pocz.2, kon.5, to wynik rezultat wygląda tak
2
5
9
dlaczego nie sumuje?

0

Dobra, pokaż, coś tam zaklepał ;p

0

a no to:

#include <cstdlib>
#include <iostream>
#include<cmath>

using namespace std;

int main(int argc, char *argv[])
{
    int x,y,suma=0 ;
    cout <<"podaj pierwsza liczbe:\n";
    cin >> x;
    cout << "\n podaj ile liczb ma zsumowac:\n";
    cin >> y;
    for(int i=x;i<y;i++)
    {
       suma+=i;             
        cout <<"\n"<< suma << "\n"; 
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

Nie rozumiem

cout << "\n podaj ile liczb ma zsumowac:\n";
for(int i=x;i<y;i++)

i nie chce mi sie nad tym myślec, ale zastanów sie nad tym, czy na pewno potrzebujesz wypisywać te sume przy każdym obiegu pętli zamiast po jej zakończeniu.

0

zmienna y to koniec przedziału
chcę ,aby na koniec pracy programu podał mi sumę z zadanego przedziału

0

No właśnie, koniec przedziału. Wiec skoro koniec przedziału to nie "Podaj ile liczb ma zsumowac". Skoro chcesz na końcu wypisac, to na końcu wypisz, a nie w pętli.

0

rozumiem, że instrukcję wyświetlania wyniku mam umieścić po za pętla

0

Właśnie tak. I popraw ten koniec przedziału.

0
pingwindyktator napisał(a):

popraw ten koniec przedziału.

nie rozumiem co mam tam poprawić

0

Chcesz wyliczyc sume liczb z przedziału <a, b>, tak?
więc:

cout << "Podaj koniec przedzialu: ";

i

for(int i = a; i <= b; i++)
0

a teraz jest poprawnie?

#include <cstdlib>
#include <iostream>
#include<cmath>

using namespace std;

int main(int argc, char *argv[])
{
    int a,b,suma=0 ;
    cout <<"podaj początek przdziału a:\n";
    cin >> a;
    cout << "\n podaj koniec przedzialu b:\n";
    cin >> b;
    for(int i=a;i<=b;i++)
    {
       suma+=i;             
        
    }
    cout <<"\n"<< suma << "\n"; 
    system("PAUSE");
    return EXIT_SUCCESS;
}
1

pętle można pominąć:

    int a,b;
    cout <<"podaj początek przdziału a:\n";
    cin >> a;
    cout << "\n podaj koniec przedzialu b:\n";
    cin >> b;
    int n = abs(b-a);
    cout <<"\n"<< (n + 1)*a + (n*(n+1))/2 << "\n";

    return EXIT_SUCCESS;
1

e?

#include <iostream>
using namespace std;

int main()
{
	int q, w;
	cin>>q>>w;
	cout<<(w+q)/2.*(w-q+1);
	return 0;
}
0

W związku z tym że @pingwindyktator z jakichś chorych ambicji nie chce poprawić kodu wyżej to podaje optymalne minimalistyczne rozwiązanie.

#include <iostream>
using namespace std;
 
int main()
  {
   unsigned a,b;
   cin>>a>>b;
   cout<<(b+a)*(abs(b-a)+1)/2;
   return 0;
  }

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