Instrukcja if...else
Ostatnio zmodyfikowano 2018-12-01 14:54
KolanoPigmeja Temat założony przez niniejszego użytkownika |
Instrukcja if...else » 2018-12-01 13:47:56 Cześć i czołem. Spróbowałem zrobić zapętlający się program obliczający pola figur płaskich uwzględniający poprawność danych przy pomocy instrukcji if...else. Jeżeli zmienna zgadza się z wartościami uwzględnionymi w if, wszystko działa dobrze. Jednak gdy jest różna nic się nie dzieje, else się nie odpala, a program się zapętla tak jak powinien. Ktoś coś? Tu kod: #include <iostream> using namespace std;
int main() { float a, b, x; char figure; cout << "-------------------------------------------------------------------------\n"; cout << " Welcome to the UltimateAreaCounter2136\n"; cout << "-------------------------------------------------------------------------\n"; cout << "[press ctrl+c to exit]\n\n"; for(;; ) { cout << "Pick a figure which area you are counting: \n"; cout << "s-square, r-rectangle, t-triangle, c-circle.\n\n"; cout << "Type here:"; cin >> figure; if( figure != 's', 'r', 't', 'c', 'S', 'R', 'T', 'C' ) { switch( figure ) { case 's': cout << "\nYou chose a square"; cout << "\nPlease enter a lenght of a flank of the square: "; cin >> a; x = a * a; cout << "\nArea equals: " << x; break; case 'S': cout << "\nYou chose a square"; cout << "\nPlease enter a lenght of a flank of the square: "; cin >> a; x = a * a; cout << "\nArea equals: " << x; break; case 'r': cout << "\nYou chose a rectangle."; cout << "\nPlease enter a lenght of a first flank: "; cin >> a; cout << "\nPlease enter a lenght of a second flank: "; cin >> b; x = a * b; cout << "\nArea equals: " << x; break; case 'R': cout << "\nYou chose a rectangle."; cout << "\nPlease enter a lenght of a first flank: "; cin >> a; cout << "\nPlease enter a lenght of a second flank: "; cin >> b; x = a * b; cout << "\nArea equals: " << x; break; case 't': cout << "\nYou chose a triangle."; cout << "\nPlease enter a lenght of a baseline: "; cin >> a; cout << "\nPlease enter a lenght of a altitude: "; cin >> b; x = a * b / 2; cout << "\nArea equals: " << x; break; case 'T': cout << "\nYou chose a triangle."; cout << "\nPlease enter a lenght of a baseline: "; cin >> a; cout << "\nPlease enter a lenght of a altitude: "; cin >> b; x = a * b / 2; cout << "\nArea equals: " << x; break; case 'c': cout << "\nYou chose a circle."; cout << "\nPlease enter a lenght of a radius: "; cin >> a; x = a * 3.1415926535; cout << "\nArea equals: " << x; break; case 'C': cout << "\nYou chose a circle."; cout << "\nPlease enter a lenght of a radius: "; cin >> a; x = a * 3.1415926535; cout << "\nArea equals: " << x; break; } } else cout << "\nYou picked a wrong symbol fool! You can only use symbols mentioned in the legend"; cout << "\n-------------------------------------------------------------------------\n"; } return 0; }
|
|
pekfos |
» 2018-12-01 14:02:33 if( figure != 's', 'r', 't', 'c', 'S', 'R', 'T', 'C' )
|
Ten warunek jest zawsze prawdziwy, nie tak się zapisuje warunki. A gdyby działał, nie miałby sensu. Czego tu naprawdę potrzebujesz, to default w tym switch. case 't': cout << "\nYou chose a triangle."; cout << "\nPlease enter a lenght of a baseline: "; cin >> a; cout << "\nPlease enter a lenght of a altitude: "; cin >> b; x = a * b / 2; cout << "\nArea equals: " << x; break; case 'T': cout << "\nYou chose a triangle."; cout << "\nPlease enter a lenght of a baseline: "; cin >> a; cout << "\nPlease enter a lenght of a altitude: "; cin >> b; x = a * b / 2; cout << "\nArea equals: " << x; break; |
Wystarczy tak: case 't': case 'T': cout << "\nYou chose a triangle."; cout << "\nPlease enter a lenght of a baseline: "; cin >> a; cout << "\nPlease enter a lenght of a altitude: "; cin >> b; x = a * b / 2; cout << "\nArea equals: " << x; break; I pisze się leng th, a nie leng ht. |
|
KolanoPigmeja Temat założony przez niniejszego użytkownika |
Działa » 2018-12-01 14:54:01 Dobra dzięki wielke rzeczywiście dało się prościej :D.
|
|
« 1 » |