ďťż

Ładny brzuch

Mam taki problem i nie wiem jak go rozwiązać.
Otóż chodzi o programik, który po wpisaniu zbioru liczb np. (0-40) policzyłby sumę wszystkich liczb tego zbioru.
Miałem kilka pomysłów ale nic z tego nie wyszło.
Użytkownik musi mieć wybór zakresu zbioru!

np. zbiór od 1 do 40 liczy się tak: skoro 1 i ostatnia liczba zbioru daje 41, to występuje 20 takich par. A zatem 20*41=820.
Pasowałaby też możliwość zsumowania liczb ujemnych.

Bardzo proszę o jakąkolwiek pomoc. Może trzeba dołączyć jakąś biblioteke? Ja próbowałem z zast. tablic, ale tam jest na stałe umieszczona ilość liczb zbioru, wykorzystałbym wtedy funkcje sumuj().

OCZYWŚCIE CHODZI MI O C++
Użytkownik Pawlaker edytował ten post 29 kwiecień 2005, 15:16


int suma; int p; int tab[40]; main(){ //wczytywanie liczb for(p=0;p<41;p++){ suma= suma+tab[p] } //wyswietlenie zmiennej suma

Chyba o to ci chodzi??

//Edit
sorki ale nie zauwazylem tego fragmentu twojego posta ze wzmianka o tablicy. Sproboj zastosowac zmienne dynamiczne
Użytkownik Kajetanek edytował ten post 29 kwiecień 2005, 15:27
no chwila, skoro wiesz ze suma liczba od 1 do n to (n*(n+1))/2 to chyba wiesz jak to policzyc prawda? czy to naprawde taki problem?

// EDIT: dla przykladu suma 5-10 to suma 1-10 minus suma 1-4 prawda?
Użytkownik marcepanowy_kapturek edytował ten post 29 kwiecień 2005, 15:30

no chwila, skoro wiesz ze suma liczba od 1 do n to (n*(n+1))/2 to chyba wiesz jak to policzyc prawda? czy to naprawde taki problem?



Jeśli chodzi o sumowanie zbioru liczb od-do.

int sumuj(int od, int do_)
{
int wynik = 0;

for (int i=od;i<do_;i++)
wynik+= i;

return wynik;
}

Ok,
ale user musi wprowadzić zbiór.
podane source będą działały tylko, jeżeli ustawiony będzie dany zbiór w source programu.

User podaje zbiór np. -123 -> 234. I tu program ma policzyć sumę wszystkich liczb. A stosując tablice ten zbiór z góry jest narzucony przez source kod.

Wymyśliłem taki sposób, sprawdzanie czy liczby parzyste, potem mnożenie połowe zbioru liczb przez sumę pierwszej i ostatniej liczby zbioru(podane przez usera). Programik powinien chyba pomijać cyfre 0. Gdyż wogóle nie wpływa na funkcje programu?

?????????????????????????????????????????????????????????????
Użytkownik Pawlaker edytował ten post 29 kwiecień 2005, 16:00

Jeśli chodzi o sumowanie zbioru liczb od-do.

int sumuj(int od, int do_)
{
        int wynik = 0;

        for (int i=od;i<do_;i++)
             wynik+= i;

        return wynik;
}

Nie wiem czy to jest dobrze, ciągle zwraca tą samą wartość.

#include <cstdlib> #include <iostream> #include <cmath> using namespace std; int sumuj(int x, int z); int main(int argc, char *argv[]) {    int x, z, i, wynik;        cout << "========================\n";    cout << "Sumowanie zbioru liczb\n";    cout << "Podaj poczatkowa liczbe zbioru:\n";    cin >> x;    cout << "kolej na ostatnia liczbe zbioru:\n";    cin >> z;    cout <<"\n\n";    cout << wynik;    cout << "\n";    system("PAUSE");    return EXIT_SUCCESS; }     int sumuj(int x, int z) {        int wynik = 0;        for (int i=x;i<z;i++)             wynik+= i;        return wynik; }    

Albo slabo widze albo nie widzialem w main wywolania funkcji sumuj ;)
Przed wypisaniem wyniku nalezaloby chyba przypisac do niego wynik funkcji sumuj....
w tym przypadku nalezaloby dodac
wynik = sumuj(x,z); cout<<wynik;

Jeżeli chodzi o sumowanie liczb z zakresu to wykorzystajcie wzór na sumę ciągu arytmetycznego, który wygląda tak:
S:=((A1+An)/2)*n
Gdzie:
- A1 jest wyrazem pierwszym
- An jest wyrazem ostatnim
- n liczba wyrazów

Pozdrawiam Kind_Pax

THANK FOR ALL
dziala w 100%!!!

#include <cstdlib> #include <iostream> #include <cmath> using namespace std; int sumuj(int x, int z); int main(int argc, char *argv[]) {    pocz:    int x, z, i, wynik, decyzja;    while (1){    cout << "\n<><>=====================<><>\n";    cout << "Sumowanie zbioru liczb\n\n";    cout << "Podaj poczatkowa liczbe zbioru:\n";    cin >> x;    cout << "a teraz podaj ostatnia liczbe zbioru:\n";    cin >> z;    cout <<"\n\n";    wynik = sumuj(x,z);    cout << "suma wszystkich liczb zbioru wynosi: " << wynik;    cout << "\n\n1 - powrot\n0 - koniec\n";    cin >> decyzja;    if((decyzja==1)||(decyzja!=0)) goto pocz;    else goto koniec;    }    koniec:    cout << "\n\nKONIEC PROGRAMU!!!\nTHE END!!!\nProgram napisal: Pawlaker nowpawel256@wp.pl\nwww.fizykawgim.za.pl\n\n";    system("PAUSE");    return EXIT_SUCCESS; }     int sumuj(int x, int z) {        int wynik = 0;        for (int i=x;i<z;i++)             wynik+= i;             wynik += z;        return wynik; }

Jeszcze raz wielkie dzieki

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •