deneb Temat założony przez niniejszego użytkownika |
Pętla "for" zad. 2 » 2009-08-30 19:30:57 Mam problem z zadaniem 2 o pętli „for”. Cos wychodzi na początku, ale gdy trzeba użyć pętli to nie ogarniam. Nie wiem jak ustawić pętle, aby dodawała ten przedział między liczbami. Jak próbowałem, to dodawało mi tylko tyle, ile było różnicy między tymi liczbami. Tak, więc chciałbym wiedzieć jak ta pętla mogłaby wyglądać.:P
|
|
GoldWolf |
» 2009-08-30 20:58:22 Wrzuć kod tego co zrobiłeś to może cię jakoś naprowadzę. |
|
deneb Temat założony przez niniejszego użytkownika |
» 2009-08-31 11:45:44 #include <iostream> #include <conio.h> int main() { using namespace std; int a, b, ab, wynik; cout << "Podaj 1 liczbe : "; cin >> a; cout << "Podaj 2 liczbe : "; cin >> b; for( a, b, ab; a < b; ++a ) { ab = a + 0; wynik = ab + b; } cout << "O tak : " << wynik; getch(); return 0; } |
|
aRusher |
» 2009-08-31 12:22:17 Nie potrzebujesz tylu zmiennych. Jaką funkcję pełni tutaj ab? Wystarczą a,b i wynik. Pamiętaj, że każdą zmienną lokalną (czyli... jakby zdefiniowaną {między klamrami}) musisz przed użyciem wypełnić jakąś wartością (przypisać do niej wartość), bo inaczej będą tam tzw. 'śmieci'. W twoim przypadku a i b podawane są z klawiatury, dlatego nie jest to konieczne, ale zmienna 'wynik' do poprawnego działania musi zostać zainicjalizowana zerem. Przeanalizuj, co robi Twoja pętla: Wynik powinieneś zwiększać o kolejne liczby, które dodajesz, a w tej formie, jak tu napisałeś to za każdym obiegiem pętli jest robione dokładnie coś takiego: Krótko mówiąc w każdym obiegu do zmiennej wynik podstawiana jest tylko suma a i b, a że 'b' się nie zmienia, natomiast 'a' rośnie o jeden, w konsekwencji wynik w każdym obiegu pętli zwiększany jest o jeden. |
|
deneb Temat założony przez niniejszego użytkownika |
» 2009-08-31 14:46:33 #include <iostream> #include <conio.h> int main() { using namespace std; int a, b, wynik = 0, wynik1 = 0; cout << "Podaj 1 liczbe : "; cin >> a; cout << "Podaj 2 liczbe : "; cin >> b; for( a, b; a < b; ++a ) { wynik += a; } wynik += b; for( a, b; a > b; ++b ) { wynik1 += b; } wynik1 += a; cout << endl; cout << "O tak : " << wynik1 << endl; cout << "O tak : " << wynik; getch(); return 0; } Udało mi się to jakoś ułożyć, ale pojawił się kolejny problem. Nie wiem czy trzeba używać pętli for w przypadku gdy jest a = b(nie umiem tego zrobić - jeśli tak) oraz czy da się ustawić tak, aby wynik pokazywał się tylko 1, czyli w zależności od podanych liczb. Dziękuję wszystkim za pomoc. :P |
|
GoldWolf |
» 2009-08-31 19:16:41 Nie wiem czy trzeba używać pętli for w przypadku gdy jest a = b(nie umiem tego zrobić - jeśli tak) oraz czy da się ustawić tak, aby wynik pokazywał się tylko 1, czyli w zależności od podanych liczb.Treść zadania była dość czytelna. Po pierwsze to nie potrzebujesz dwóch pętli, wystarczy jedna. Tak najlepiej użyć też gdy a=b, jest to proste. Widzę, że w miarę dałeś sobie radę. Oto przykładowe rozwiązanie: for(; a <= b; ++a ) wynik += a;
cout << endl; cout << "O tak : " << wynik; Poćwicz jeszcze pętle. |
|
aRusher |
» 2009-08-31 20:27:11 Przecież wartość jest do niej zapisywana przed pierwszym odczytem, więc o co chodzi? Fakt, tak jest w jego programie, ja (kajam się) pomyślałem w tym momencie o programie docelowym, w którym 'wynik' byłby zwiększany o 'a' co każdy obieg pętli (jak to jest w poście wyżej), w związku z czym do wyniku musielibyśmy najpierw wpisać zero (w inicjalizacji czy też nie). Co do drugiego: u mnie zawsze dotychczas była to klawiatura, dlatego odruchowo spłyciłem zagadnienie :) |
|
aRusher |
» 2009-08-31 22:15:46 Taak... słyszałem już o tych przekierowaniach, choć niezbyt rozumiem po co coś takiego ma się odbywać :) |
|
« 1 » 2 3 |