kruczy Temat założony przez niniejszego użytkownika |
lekcja 15- zadanie domowe nr 1 » 2012-07-09 14:16:28 Witam, to mój pierwsy post tutaj.
Program wyświetla mi się,ale nie działa poprawnie. Trochę zmodyfikowalem zadanie, zamiast kokretnej liczby, program prosi o jedna z zakreesu od 1 do 99. Proszę o pomoc.
Treść zadania: 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 program:
#include <iostream>
using namespace std;
int main() {
int liczba; do { cout<< "Podaj liczbe od 1 do 99 "<< liczba<<endl; cin>>liczba; cout<< "Podales liczbe"<<liczba<<endl; } while (liczba>= 1 && liczba <= 99);
cout<<"Koniec"<<endl; return 0; }
|
|
Netro |
» 2012-07-09 15:16:43 A gdzie jest kod który sprawdza to co zostało wprowadzone ? np. |
|
xevuel |
» 2012-07-09 15:24:11 @up: Ten kod nie sprawdza, czy wszystko poszło ok. On tylko czyści flagi błędu. @topic: Program wyświetla mi się,ale nie działa poprawnie. |
Niepoprawnie, to znaczy? Wyrzuć linijkę cout << "Podales liczbe" << liczba << endl; poza pętlę, chyba to będzie to o co ci chodziło :) |
|
Netro |
» 2012-07-09 15:34:01 |
|
kruczy Temat założony przez niniejszego użytkownika |
» 2012-07-09 18:48:42 Gdy podaje nieprawidlowa wartosc np. liczbe 1123 to powinno mi sie zapetlac pytanie- "Podaj liczbe do 1 do 99. Natomiast program sie konczy. Poza tym jak odpalam ten program to zamiast pytania- "Podaj liczbe od 1 do 99:" jest-"Podaj liczbe od 1 do 99 4273126". |
|
jankowalski25 |
» 2012-07-09 19:15:45 1. Nadaj zmiennej liczba wartość początkową. 2. Wstaw kod sprawdzający, czy podano liczbę od 1 do 99. |
|
kruczy Temat założony przez niniejszego użytkownika |
» 2012-07-10 11:33:01 To program w formie zmienionej. Pojawily sie inne problemy, a mianowicie nie uwzględniany jest warunek przy funkcji bool, gdy zostaje wczytana liczba z poza zakresu 1-99 to i tak wyskakuje komunikat - wczytano poprawnie liczbe.
Poza tym gdy wyskakuje informacja w programie po podaniu nieopowiedniej liczby- "Zla liczba. Podaj jeszcze raz:" - to program po podaniu liczby konczy sie , a powinien trwac z racji ze uzylem zapetlenia. Po co tu cokolwiek inicjalizowac?
#include <iostream> #include <limits> using namespace std;
int main () { int liczba;
do {
cout<<endl<<"Podaj liczbe od 1 do 99: "; cin>>liczba; cout<<endl<<"Twoja liczba to: "<<liczba<<endl; bool liczba = cin.good(); cout<<"Wczytano poprawna liczbe "<< liczba<<endl; cin.clear(); cin.sync(); } while ( liczba>=1 && liczba<=99);
do { cout<<"Zla liczba. Podaj jeszcze raz: "; cin>>liczba;
} while (liczba<1 && liczba>99);
return 0; } |
|
kruczy Temat założony przez niniejszego użytkownika |
» 2012-07-14 13:53:09 Ok, mam juz dobrze, tylko zamiast przedzialu liczbowego dalem a>0.
#include <iostream>
using namespace std;
int main () { float a;
cout<<endl<<"Podaj liczbe rzeczywista: ";
cin>> a; if (a>0) cout<<endl<<"Podana liczba to: "<<a<<endl;
else
do { cout<< "Liczba musi byc wieksza od zera. Podaj jeszcze raz: "; cin>> a; if (a>0) cout<<endl<<"Podana liczba to: "<<a<<endl;
} while (a != a>0);
return 0; }
Wszytsko działa, tylko mam jedno pytanie. Gdy zostanie podana liczba ujemna to wszystko dziala nalezycie jest petla i gdy zostanie wprowadzona wartosc prawidlowa program sie konczy. Ale gdy wstawie np literke to program od razu sie konczy, a chcialbym zrobic tak zeby petla wlaczala sie niezaleznie od tego co wpisze gdy nie spelnia to warunku a>0. |
|
« 1 » 2 |