Другие языки программирования и технологии

Нужна помощь с программой в С++

Здравствуйте! Я с недавнего времени начал изучать язык С++ и, естественно, мне захотелось сразу что-то создать. Решил я создать калькулятор с функцией перевода из радианов в градусы и наоборот. К моему превеликому счастью написанная программа скомпилировалась без ошибок, но при запуске ппрограммма завершается стоит мне только нажать одну кнопку. Вопрос программистам: В чём проблема и где моя ошибка? Прилагаю код программы:

#include <stdio.h>

int main(void)

{

/Ввожу переменную для выбора

int iChoose;

printf("Hazchmite 1 dlja vhoda v rezchim kalkuljatora\n 2 dlja perevoda uz gradusov v radianbI ulu 3 dlja perevoda uz radianov v gradysbi");

iChoose=getchar();

if (iChoose==1){

//Режим калькулятор

float a, c;

char b;

printf("Vvedite chiclo znak chiclo bez probela: ");

scanf("%f %c %f", &a, &b, &c);

switch (b){

case'+':printf("%.2f", a+c); break;

case'-':printf("%.2f", a-c); break;

case'*':printf("%.2f", a*c); break;

case'/':printf("%.2f", a/c); break;

default:("ERROR");break;

}

}

else{

//режимы перевода

if (iChoose == 2){

float fRad, fGrad;

printf("Vvedite kol-vo gradycoB: ");

scanf("%f", &fGrad);

fRad = 3.14*fGrad;

fRad/=180;

printf("\nKol-vo paduanoB: %.2f", fRad);

}

else{

if (iChoose == 3) {

float fRad, fGrad;

printf("Vvedite kol-vo radianov");

scanf("%f", &fRad);

fGrad=180*fRad/3.14;

printf("Kol-vo: %.2f", fGrad);

}

else

printf("ERROR");

}

}

return (0);

}

Заранее спасибо за ответы. Все права сохранены, копирование преследуется по закону!
#include <stdio.h>
#include <stdlib.h>

int main() {
// Ввожу переменную для выбора
int iChoose;
printf("Hazchmite 1 dlja vhoda v rezchim kalkuljatora\n"
"2 dlja perevoda uz gradusov v radianbI\n"
"3 dlja perevoda uz radianov v gradysbi\n");
iChoose=getchar();
if (iChoose == '1') {
//Режим калькулятор
float a, c;
char b;
printf("Vvedite chiclo znak chiclo bez probela: ");
scanf("%f %c %f", &a, &b, &c);
switch (b){
case'+':printf("%.2f\n", a+c); break;
case'-':printf("%.2f\n", a-c); break;
case'*':printf("%.2f\n", a*c); break;
case'/':printf("%.2f\n", a/c); break;
default:("ERROR");break;
}
} else if (iChoose == '2') {
float fRad, fGrad;
printf("Vvedite kol-vo gradycoB: ");
scanf("%f", &fGrad);
fRad = 3.14 * fGrad;
fRad /= 180;
printf("\nKol-vo paduanoB: %.2f\n", fRad);
} else if (iChoose == '3') {
float fRad, fGrad;
printf("Vvedite kol-vo radianov: ");
scanf("%f", &fRad);
fGrad=180*fRad/3.14;
printf("Kol-vo: %.2f\n", fGrad);
} else {
printf("ERROR\n");
}
system("pause");
}
Алексей Конев
Алексей Конев
95 805
Лучший ответ
"копирование преследуется по закону"? а что тут копировать? какашки твои? (да и то передранные у кого-то)
iChoose=getch();
так пробовал?
Твоя ошибка в том, что getchar возвращает код символа. Если ты посмотришь на таблицу ASCII, то увидишь, что коды цифр лежат в диапазоне от 48 до 57. Поэтому, либо нужно в проверках писать не if (iChoose == 1), а if (iChoose == '1'). Или же, просто в iChoose отнимать код нуля:
iChoose = getchar() - '0';
SA
Sharigat Abdykhan
4 732