Ĺ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
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