Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pętla "for" zad. 2

Ostatnio zmodyfikowano 2009-08-31 22:25
Autor Wiadomość
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
P-9973
GoldWolf
» 2009-08-30 20:58:22
Wrzuć kod tego co zrobiłeś to może cię jakoś naprowadzę.
P-9975
deneb
Temat założony przez niniejszego użytkownika
» 2009-08-31 11:45:44
C/C++
#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;
}
P-9980
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:

C/C++
ab = a; // po co?
wynik = ab + b; // czyli równoważne do a + b, bo linijkę wcześniej dałeś, że ab = a
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.
P-9981
deneb
Temat założony przez niniejszego użytkownika
» 2009-08-31 14:46:33
C/C++
#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
P-9985
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:
C/C++
for(; a <= b; ++a )
     wynik += a;

cout << endl;
cout << "O tak : " << wynik;
Poćwicz jeszcze pętle.
P-9987
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 :)
P-9988
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ć :)
P-9989
« 1 » 2 3
  Strona 1 z 3 Następna strona