Калькулятор на Си

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Аватара пользователя
Coach
Сообщения: 2
Зарегистрирован: 13 дек 2007, 20:33
Контактная информация:

13 дек 2007, 20:50

Люди нужна помощь.
Надо написать помочь написать калькулятор.
Калькулятор должен уметь складывать, вычитать, делить, умножать, а также переводить из одной системы счисления в другую. Я смог написать код отдельно для математических операций и отдельно для перевода из систем счисления. Вроде соеденил все заработало, но преподователю нужно чтобы было кое что иное. Он хочет, как я понимаю, сначала мы вводим например 5+3 потом программа спрашивает в какой системе счисления дать ответ, потом мы соответсвенно выбираем систему и программа выводит результат в выбранной системе счисления. В моем коде преподователю не понравилось то что программа не разбита на маленькие функции, он я так понимаю, просит чтобы там была функция ввода, вывода, перевода из систем счисления, и соответсвенно функция самих математических операций.
Вот мой код:

Мат.операции:

Код: Выделить всё

int main (void)
{
    float a, b;
    char oper;
    printf ("BBeguTe BbIPA}|{EHue:\n");
    scanf ("%f %c %f", &a, &oper, &b);

if (b == 0)
printf ("Ha 0 geJIuTb HeJIb39\n");
else if ( oper == '+')
    printf ("%.2f\n", a + b);
else if ( oper == '-')
        printf ("%.2f\n", a - b);
else if ( oper == '*')
        printf ("%.2f\n", a * b);
else if ( oper == '/')
        printf ("%.2f\n", a / b);

getch();

return 0;
}

Перевод из систем счисления:

Код: Выделить всё

int main (void)
{
const char basedigits[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' };
int convertednumber[64];
long int numbertoconvert;
int nextdigit, base, index = 0;
//получить число и основание.
printf ("Number to be converted? ");
scanf ("%ld", &numbertoconvert);
printf ("Base? ");
scanf ("%i", &base);

do {
     convertednumber[index] = numbertoconvert % base;
     ++index;
     numbertoconvert = numbertoconvert / base;
     }
while ( numbertoconvert != 0 );

printf("Converted number = ");
for (--index; index >= 0; --index ) {
     nextdigit = convertednumber[index];
     printf ("%c", basedigits[nextdigit]);
}
printf ("\n");
getch();
return 0;

}
Очень прошу помочь, если все получится с меня "пиво", как говорится))
хелп ми)
ssDev
Сообщения: 50
Зарегистрирован: 20 янв 2005, 14:41

14 дек 2007, 20:48

Если мысли препода читать не научился то делай как тебе проще. Например так

while(true){
printf("select regime (1-set baz[2,8,10,16]; 2-set expr; 3- exit)");
scanf("%d",&n);
switch(n){
case 1:
здесь устанавливай систему счисления для ввода
или
if(n=2)sprintf("") непомню
if(n=8)sprintf("%o%c%o") непомню
.....
case 2:
здесь в зависимости от системы счисления по разному читай аргументы (можно сделать совсем просто использовать разные форматы для scanf или
на case 1 задовать строку формтат)
case 3: return;
}
}
все остальное зависит от твоих отношений с преподователем
Аватара пользователя
Coach
Сообщения: 2
Зарегистрирован: 13 дек 2007, 20:33
Контактная информация:

14 дек 2007, 21:58

Спасибо, но мой препод настолько уникален, что он кейсы вообще не воспринимает, типо
надо использовать массив, короче ты прав, я не могу понять своего препода абсолютно. И какие могут быть отношения на 1 курсе?) фактически не каких, но я так понимаю гениальным программистом он меня не считает, так что если я ему покажу такую программу он просто мне кажется не поверит что я сам додумался до такого. Но вообще спасибо большое)))
хелп ми)
Ответить