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

Rozdzial 15 zadanie 1

Ostatnio zmodyfikowano 2015-10-18 20:35
Autor Wiadomość
johey13
Temat założony przez niniejszego użytkownika
Rozdzial 15 zadanie 1
» 2015-10-18 20:06:21
Witam wszystkich pomocnych.

Jestem początkującym i nie wszystko w zadaniach mi wychodzi jak powinno.

W zadaniu 1 rozdziału 15 jest do napisania program, który powinien spełnić takie warunki :

Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. Sposób działania programu:
1. Podaj liczbę
2. Jeżeli błąd, wróć do kroku 1.
3. Wypisz liczbę, która została podana.

Mój kłopot zwiazany z tym zadaniem polega na tym, ze pętla działa odwrotnie niż powinna i wszelkie moje wysiłki na naprawieniu tego nie przynoszą rezultatów.

Czy ktoś mógłby mi pomoc w znalezieniu błędu i naprawieniu jego tak aby program zadziałał prawidłowo i abym zrozumiał dlaczego tak się stało?

Kod to :

C/C++
#include <iostream>
using namespace std;

int main()
{
    int liczba;
   
    do
    {
       
        cout << "\n\tWprowadz Liczbe wieksza od 10 a mniejsza od 20 :";
        cin >> liczba;
       
        if( liczba > 10 && liczba < 20 )
        {
            cout << "\n\tBRAWO!!! Podales prawidlowa liczbe." << endl;
        }
       
        if( liczba <= 10 || liczba >= 20 )
        {
            cout << "\n\tSORRY!!! Podales nieprawidlawa liczbe." << endl;
        }
       
        cout << "\n\tPodana Liczba to : " << liczba << endl;
       
       
    } while( liczba > 10 && liczba < 20 );
   
   
    return 0;
   
}

Z góry dziękuje.


P-138823
pekfos
» 2015-10-18 20:20:40
Sposób działania programu:
1. Podaj liczbę
2. Jeżeli błąd, wróć do kroku 1.
3. Wypisz liczbę, która została podana.
Brzmi jakby pętla miała dotyczyć tylko dwóch pierwszych punktów, a ty umieściłeś w pętli wszystko, co się dało.
P-138829
Gibas11
» 2015-10-18 20:22:35
1.) Wstaw wyświetlanie liczby pod pierwszego if'a by robić to dopiero gdy liczba będzie poprawna.
2.) Przed 2. If'em dodaj else, nie zrobi to dużej różnicy, ale lepiej wyrobić sobie nawyk.
3.) Pętla powinna wykonywać się wtedy, kiedy liczby są nieprawidłowe a nie na odwrót - zmień warunek.

Kod będzie wyglądał mniej-więcej tak:
C/C++
#include <iostream>
using namespace std;

int main()
{
    int liczba;
   
    do
    {
       
        cout << "\n\tWprowadz Liczbe wieksza od 10 a mniejsza od 20: ";
        cin >> liczba;
       
        if( liczba > 10 && liczba < 20 )
        {
            cout << "\n\tBRAWO!!! Podales prawidlowa liczbe.\n\n\tPodana Liczba to: " << liczba << endl;
        }
       
        else if( liczba <= 10 || liczba >= 20 )
        {
            cout << "\n\tSORRY!!! Podales nieprawidlawa liczbe." << endl;
        }
       
    } while( liczba < 10 || liczba > 20 );
   
   
    return 0;
   
}

Ps. Chyba źle zrozumiałeś polecenie zadania, "błąd" oznacza najprawdopodobniej niepoprawne dane, np. litery. Miałeś to w rozdziale 9.

EDIT: Możesz też zastosować się do rady pekfosa i wywalić wyświetlanie liczby całkiem za pętle, ale nie zrobi to raczej większej różnicy.
P-138830
carlosmay
» 2015-10-18 20:26:59
Wyjście 1: zaneguj całe wyrażenie warunkowe, aby działało odwrotnie niż działa teraz.
Wyjście 2: napisz wyrażenie dla alternatywy. (||)
P-138831
johey13
Temat założony przez niniejszego użytkownika
» 2015-10-18 20:35:42
Dzięki panowie.

Przeanalizuje swój kod i wasze sugestie... pobawię się i zobaczę co będzie się działo.
W ten sposób zapewne zaobserwuje rozne reakcje na zmiany.

No i muszę jeszcze raz popatrzeć na poprzednie rozdziały, bo nie wszystko się zapamiętało.

Dzięki.
P-138833
« 1 »
  Strona 1 z 1