Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C]Калькулятор


Автор: xobotyi 7.5.2010, 19:33
Собственно задали нам курсач, написать калькулятор, а к нему ТЗ и протокол тестирования.
но суть в самом калькуляторе
я его написал да вот целиком не получается препод сказал что цифры которые вводиш ему нужны не только целые, посему используем float, но вот в чем загвоздка если ввести букву вместо цифры, прога зацикливается, я знаю что так и должно быть, но хотелось бы чтобы вместо зацикливания прога писала что-то вроде "ARGUMENT SHOULD BE NUMBER"
вот код калькулятора, думаю все понятно в нем
Код

#include<stdio.h>
#include<conio.h>

void main()
{

float a, b, otv;
int c;
start:
clrscr();
printf("+-----------------------+\n");
printf("|      CALCULATOR       |\n");
printf("| BY RAGE SOFTWARE TEAM |\n");
printf("+-----------------------+\n");
argum1:
printf(" PRINT ARGUMENT 1: ");
scanf("%f",&a);
printf("+-----------------------+\n");
argument:
printf(" PRINT ARGUMENT 2: ");
scanf("%f",&b);
if (b==0)
{
printf("+-----------------------+\n");
printf("|    WRONG ARGUMENT!    |\n");
printf("|  ARGUMENT CAN'T BE 0  |\n");
printf("+-----------------------+\n");
goto argument;};
printf("+-----------------------+\n");
printf("|    IF YOU WANT TO     |\n");
printf("|   1)ADD PRINT 1       |\n");
printf("|   2)SUBTRACT PRINT 2  |\n");
printf("|   3)MULTIPY PRINT 3   |\n");
printf("|   4)DIVIDE PRINT 4    |\n");
printf("+-----------------------+\n");
count:
printf(" YOUR CHOISE:");
scanf("%i",&c);
 if (c==1){otv=a+b;
printf("+-----------------------+\n");
printf(" SUMM IS: %f\n",otv);
printf("+-----------------------+\n");}
 else if (c==2){otv=a-b;
printf("+-----------------------+\n");
printf(" SUBTRACTION IS: %f\n",otv);
printf("+-----------------------+\n");}
 else if (c==3){otv=a*b;
printf("+-----------------------+\n");
printf(" MULTIPLE IS: %f\n",otv);
printf("+-----------------------+\n");}
 else if (c==4){otv=a/b;
printf("+-----------------------+\n");
printf(" DIVIDE IS: %f\n",otv);
printf("+-----------------------+\n");}
 else {
printf("+-----------------------+\n");
printf("|    WRONG ARGUMENT!    |\n");
printf("|      TRY AGAIN        |\n");
printf("+-----------------------+\n");
 goto count;}
printf("+-----------------------+\n");
printf("|      ONCE AGAIN?      |\n");
printf("|     IF YES PRINT 1    |\n");
printf("|     IF NO PRINT 2     |\n");
printf("+-----------------------+\n");
printf(" YOUR CHOISE: ");
scanf("%i",&c);
if(c==1) goto start;
else goto end;
end:
getch();
}

Автор: xobotyi 10.5.2010, 18:30
помогите пожалуйста! очень надо!!!!!

Автор: SickFxck 10.5.2010, 18:33
Забей на scanf() :)

Автор: Dov 11.5.2010, 10:29
Так попробуй (и для второго тоже):
Код
    printf(" PRINT ARGUMENT 1: ");
    if(!scanf("%f", &a)) 
    { 
        puts("ARGUMENT SHOULD BE NUMBER");
        fflush( stdin );
        goto argum1;
    }
    fflush( stdin );



Автор: xobotyi 13.5.2010, 17:33
Цитата(Dov @  11.5.2010,  10:29 Найти цитируемый пост)
  printf(" PRINT ARGUMENT 1: ");    if(!scanf("%f", &a))     {         puts("ARGUMENT SHOULD BE NUMBER");        fflush( stdin );        goto argum1;    }    fflush( stdin );

яб тя поцеловал, да вот рядом тя нету)))
СПАСИБО!!!!! ПАШЕТ ВСЕ!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)