[Lekcja 14] Prośba o sprawdzenie zadanie domowego
Ostatnio zmodyfikowano 2011-09-01 11:28
makarone Temat założony przez niniejszego użytkownika |
[Lekcja 14] Prośba o sprawdzenie zadanie domowego » 2011-08-09 17:09:42 witam, tak sobe popatrzylem na wczesniejsze rozwiazania ale mi przyszlo do glowy jeszcze inne, pytanie czy poprawnie to zapisalem i czy na dluzszamete takie kombinowanie nie jest ulomne. pozdrawiam, #include <iostream> int main() { float x, y; int innaz; std::cout << "Podaj liczbe X: "; std::cin >> x; std::cout << "Podaj liczbe Y: "; std::cin >> y; std::cout << "co chesz zrobic? wybierz: " << std::endl; std::cout << "1 - mnozenie (x*y)" << std::endl; std::cout << "2 - odejmowanie (x-y)" << std::endl; std::cout << "3 - dzielenie (x/y)" << std::endl; std::cout << "Dowolna inna liczba lub znak - wszystkie te dzialania jednoczesnie" << std::endl; std::cin.clear(); std::cin.sync(); std::cin >> innaz; switch( innaz ) { case 1: std::cout << "Wynik dla x * y: " << x * y << std::endl; break; case 2: std::cout << "Wynik dla x - y : " << x - y << std::endl; break; case 3: if( y != 0 ) { std::cout << "Wynik dla x / y : " << x / y << std::endl; } else std::cout << "Wynik dla x/y dzielac przez zero nic nie zmieniasz... sprobuj innym razem"; break; default: std::cout << "Wynik x * y : " << x * y << std::endl; std::cout << "Wynik x - y : " << x - y << std::endl; if( y != 0 ) { std::cout << "Wynik x / y : " << x / y << std::endl; } else { std::cout << "Wynik x / y : Dzielac przez zero nic nie zmieniasz..." << std::endl; std::cout << "Sprobuj innym razem z innymi liczbami" << std::endl; } break; } return 0; }
|
|
makarone Temat założony przez niniejszego użytkownika |
» 2011-08-09 20:53:52 takie pytanie jak zrobic,zeby nie bylo mozliwe wskawianie zamiast cyfr/liczb liter?
chodzi mi o to aby nie bylo wogole mozliwe takie dzilanie, niezaleznie odtego czy mam do czynienia z ukladem [cyfraznak] czy tez [znakcyfra].
moze sa na sali madrzejsze glowy od mojej.
poki co mam cos takiego ale nie spelnia to moich oczekiwan.
pomijajac tez fakt ze pewnie niewiele w tym zapisie jest ok, ale jak zrobic, zeby po wpisaniu blednego "X" od razu wyskakiwal komunikat ze liczba nie jest poprawna.
kombinowalem ale bezplodnie jakos.
podsumowujac plan jest taki:
1. podaj liczbe X
2. liczba poprawna idziesz dalej - liczba bledna wywala komunikat o bledzie, koniec zabawy
3. jesli poprawna - podaj liczbe Y
4. powtorka jak w pkt 2
pozdrawiam i prosze o rady,
m
#include <iostream> int main() { float x, y; int innaz; std::cout << "Podaj liczbe X: "; std::cin >> x; bool skax; if( skax = std::cin.good() ) { std::cout << "Podaj liczbe Y: "; std::cin >> y; bool skay; if( skay = std::cin.good() ) { std::cout << "co chesz zrobic? wybierz: " << std::endl; std::cout << "1 - mnozenie (x*y)" << std::endl; std::cout << "2 - odejmowanie (x-y)" << std::endl; std::cout << "3 - dzielenie (x/y)" << std::endl; std::cout << "Dowolna inna liczba lub znak - wszystkie te dzialania jednoczesnie" << std::endl; std::cin.clear(); std::cin.sync(); std::cin >> innaz; switch( innaz ) { case 1: std::cout << "Wynik dla x * y: " << x * y << std::endl; break; case 2: std::cout << "Wynik dla x - y : " << x - y << std::endl; break; case 3: if( y != 0 ) { std::cout << "Wynik dla x / y : " << x / y << std::endl; } else std::cout << "Wynik dla x/y dzielac przez zero nic nie zmieniasz... sprobuj innym razem"; break; default: std::cout << "Wynik x * y : " << x * y << std::endl; std::cout << "Wynik x - y : " << x - y << std::endl; if( y != 0 ) { std::cout << "Wynik x / y : " << x / y << std::endl; } else std::cout << "Wynik x / y : Dzielac przez zero nic nie zmieniasz..." << std::endl; std::cout << "Sprobuj innym razem z innymi liczbami" << std::endl; break; } } else std::cout << "Wpisane dane nie sa poprawne. Sprobuj ponownie."; } else std::cout << "Wpisane dane nie sa poprawne. Sprobuj ponownie."; return 0; }
|
|
SeaMonster131 |
» 2011-08-09 22:08:36 1. podaj liczbe X 2. liczba poprawna idziesz dalej - liczba bledna wywala komunikat o bledzie, koniec zabawy 3. jesli poprawna - podaj liczbe Y 4. powtorka jak w pkt 2 |
No to ja bym zrobił coś na wzór tego oo: #include <iostream> #include <conio.h>
using namespace std;
int main() { int x, y; bool czy_dobrze = false; while( !czy_dobrze ) { cin.clear(); cin.sync(); cout << "\nPodaj liczbe 1: "; cin >> x; czy_dobrze = cin.good(); if( !czy_dobrze ) { cout << "Sieroto, to liczba ma byc! Goodbye"; getch(); return 0; } cout << "Podaj liczbe 2: "; cin >> y; czy_dobrze = cin.good(); if( !czy_dobrze ) { cout << "Sieroto, to liczba ma byc! Goodbye"; getch(); return 0; } } cout << "X + Y = " << x + y; return 0; } |
|
makarone Temat założony przez niniejszego użytkownika |
» 2011-08-09 22:37:31 nie no wszystko ladnie, ale mnie to wyglada na potrzebe zastosowanie czegos jakby "petli".
dodatkowo problem pozostal jako taki:
1. jak podalem liczbe nr 2 w formacie [cyfraznak] program "łyknął" tę "cyfre" co stala na poczatku i dalej policzył jakby literki nigdy tam nie bylo.
2. jak podalem liczbe nr 1 w formacie [cyfraznak] juz nie łyknął ale mimo to wyswietlil komunikat "podaj liczbe nr 2...." a dopiero potem ze "tak wogole to fail".
ale nie powiem twoja wersja jest zgrabniejsza.
|
|
kar0lek1 |
» 2011-08-26 19:32:28 hmm.. a Ja napisałem coś takiego.. bo zauważyłem że u Ciebie nie ma opcji wyboru przy odejmowaniu czy dzieleniu.. bo przecież odejmując a-b i b-a masz inny wynik, tak samo przy dzieleniu. Wiem, że można odpalić jeszcze raz i wpisać odwrotnie liczby.. ale myślę że wygodniej jest jak będziemy mieli od razu wybór takiego działania. A oto mój kod: #include <iostream>
using namespace std;
int main() { float liczba_pierwsza; float liczba_druga; int dzialanie; cout << "Moj pierwszy maly kalkulator :) " << endl; cout << "Prosze podac pierwsza liczbe : " << endl; cin >> liczba_pierwsza; cout << "Teraz prosze podac druga liczbe : " << endl; cin >> liczba_druga; cout << "Czas na obliczenia ! " << endl; cout << "Jeżeli chcesz wykonać: \n" "[1] - dodawanie kliknij \n" "[2] - odejmowanie liczba pierwsza - liczba druga \n" "[3] - odejmowanie liczba druga - liczba pierwsza \n" "[4] - mnożenie \n" "[5] - dzielenie liczba pierwsza / liczba druga \n" "[6] - dzielenie liczba druga / liczba pierwsza \n"; cin >> dzialanie; switch( dzialanie ) { case 1: cout << "Wynik dodawania : " << liczba_pierwsza + liczba_druga << endl; break; case 2: cout << "Wynick odejmowania liczba pierwsza - liczba druga : " << liczba_pierwsza - liczba_druga << endl; break; case 3: cout << "Wynik odejmowanie liczba druga - liczba pierwsza : " << liczba_druga - liczba_pierwsza << endl; break; case 4: cout << "Wynik mnożenia : " << liczba_pierwsza * liczba_druga << endl; break; case 5: if( liczba_pierwsza, liczba_druga != 0 ) cout << "Wynik dzielenia liczba pierwsza / liczba druga : " << liczba_pierwsza / liczba_druga << endl; else cout << "Nigdy nie dziel przez zero ! " << endl; break; case 6: if( liczba_pierwsza, liczba_druga != 0 ) cout << "Wynik dzielenia liczba druga / liczba pierwsza : " << liczba_druga / liczba_pierwsza << endl; else cout << "Nigdy nie dziel przez zero ! " << endl; break; default: cout << "Nie wybrales zadnego dzialania !. Sprobój ponownie :) " << endl; break; } return 0; }
|
|
makarone Temat założony przez niniejszego użytkownika |
» 2011-09-01 11:28:40 i dlatego ne ma co za wczesnie zamykac postów:) |
|
« 1 » |