modzel133 Temat założony przez niniejszego użytkownika |
Lekcja VIII - Pętla for / problem » 2009-10-28 18:10:33 Mam problem z drugim zadaniem. Napisałem taki oto program: #include <iostream> #include <conio.h>
using namespace std;
int main() { int i, a, b; cout << "Podaj pierwsza liczbe: " << endl; cin >> a; cout << "Podaj druga liczbe: " << endl; cin >> b; cout << endl; for( i >= a; i <= b; ++i ) for( i >= b; i <= a; ++i ) { cout << endl; cout << "Suma liczb w przedziale od " << a << " do " << b << " wynosi: " << a + i + b; }; getch(); return 0; }
Jak zrobić aby obliczyło sumę wszystkich liczb zawartych w przedziale podanym przez użytkownika? |
|
Elaine |
» 2009-10-28 18:25:35 int result = 0;
for( int i = a; i <= b; i++ ) result += i;
Na dobrą sprawę to nie ma co się tutaj męczyć z pętlą for - istnieje rozwiązanie działające w czasie stałym. To, co mu ty mamy, to jest najzwyklejszy ciąg arytmetyczny o różnicy 1. Z tego możemy wyciągnąć wzór na sumę 'b' pierwszych wyrazów tego ciągu: b*(b+1)/2. Ponieważ to dałoby nam sumę liczb od 'a' do 'b', musimy od tego odjąć sumę liczb od 1 do 'a - 1' - a*(a-1)/2. Po złożeniu do kupy otrzymujemy wzór "b*(b+1)/2 - a*(a-1)/2". |
|
modzel133 Temat założony przez niniejszego użytkownika |
» 2009-10-28 18:44:09 Mimo wszystko dalej nie wiem jak.. mógłbyś podać gotowy kod z użyciem pętli FOR tak jak jest w lekcji? Byłbym bardzo wdzięczy. |
|
Elaine |
» 2009-10-28 19:04:32 Czym jest ten kod w poście wyżej w takim razie? |
|
modzel133 Temat założony przez niniejszego użytkownika |
» 2009-10-28 19:15:28 Chodzi o to, ze nie wiem gdzie go wkleić. Próbowałem na kilka sposobów i nadal zły wynik mi wychodzi. Jak użyć tego kodu. /Sorry ale dopiero zaczynam naukę C++, więc proszę o wyrozumiałość. |
|
malan |
» 2009-10-28 19:38:19 #include <iostream> using namespace std; int main() { int a, b, result = 0; cout << "Podaj pierwsza liczbe: " << endl; cin >> a; cout << "Podaj druga liczbe: " << endl; cin >> b; cout << result; getchar(); return 0; } |
|
GoldWolf |
» 2009-10-28 19:46:48 Twój kod zwiera elementarny błąd. użyłeś pętli: for( i >= a; i <= b; ++i ) for( i >= b; i <= a; ++i ) Powiedz mi ile jest równa wartość i. Użytkownik podaje a i b, ale ile jest równa wartość i. Więc prosiłbym byś na spokojnie przejrzał sobie ten cały kurs i poprzednie kursy bo to jest niewybaczalny błąd. Kolega podał ci rozwiązanie jednak nie wiesz gdzie to wkleić bo nie rozumiesz błędu. Dlatego poćwicz jeszcze z tą lekcją. Być może jeśli wprowadzisz sobie taką linijkę w kod to jakoś ci to pomoże zrozumieć, gdzie leży ten błąd. cin >> b; cout << endl; cout << i;
|
|
Elaine |
» 2009-10-28 20:01:42 malan, hehe, twój kod niczego nie wypisze (a według zadania chyba powinien :>), mój kod to tylko same obliczenia, trzeba by było jeszcze dodać jakieś cout << result; zaraz po moim kawałku. Chyba, że to miała być pułapka na myślenie, wtedy nic nie mówiłem :>.Aha, to coś w nawiasie obok mojego nicka (a raczej inicjałów) to taki dziwny sposób napisania "VIP", ignoruj to, gdy piszesz mój username. |
|
« 1 » 2 |