Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 00:32   #1
ezhidudek
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 43
По умолчанию Калькулятор

С наступающим!
помогите с вопросом.есть простой калькулятор следующего типа:
Код:
#include<math.h>
#include <stdio.h>
#include <conio.h>
int main()
{
float a,b;
char ch;
printf ("eta programma - prosteishiy kal'kulyator\n");
printf ("vvelite pervoe chislo, zatem znak: '+', '-', '*', '/' ili '%'\n");
printf ("zatem vvedite vtoroe chislo\n");
printf ("vvod dannix:\n");
scanf ("%f%c%f",&a,&ch,&b);
switch (ch)
{
case '+': printf("=%g",a+b); break;
case '-': printf("=%g",a-b); break;
case '*': printf("=%g",a*b); break;
case '/': if (b) printf("=%g",a/b); break;
case '%': printf("=%g",fmod(a,b)); break;
default: printf("Input error!!!");
}
getch();
}
Вопросец - как заставить его выписать ошибку при вводе выражений типа : "3/0";"1" ?

Заранее спасибушки.

Последний раз редактировалось Stilet; 21.12.2012 в 16:40.
ezhidudek вне форума Ответить с цитированием
Старый 19.12.2012, 12:53   #2
<- DelpHIFanat ->
Пользователь
 
Аватар для <- DelpHIFanat ->
 
Регистрация: 07.11.2011
Сообщений: 58
По умолчанию

У Вас же есть это условие:
Код:
if (b) printf("=%g",a/b)
Доделайте его до полной формы условия:
Код:
if (b) printf("=%g",a/b);
else printf("Delit' na nul' nel'zay!");
Должно прокатить.
Лучше вообще не иметь знаний о чём-то, чем иметь неправильные знания об этом!..
<- DelpHIFanat -> вне форума Ответить с цитированием
Старый 19.12.2012, 18:08   #3
ezhidudek
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 43
По умолчанию

и как сделать так,чтобы можно было задавать числа с пробелами,например вместо "1+2" я напишу "1 + 2",и чтоб калькулятор работал после этого


и еще,уважаемые, могли бы вы подсказать,как заставить его выводить ошибку при вводе только одного числа?
ezhidudek вне форума Ответить с цитированием
Старый 19.12.2012, 18:14   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Что значит - "при вводе только одного числа"? Вот я ввёл одно число, подождал 15 минут, ввёл второе - всё работает. Вот я ввёл одно число и всё - на какой минуте программа должна выводить ошибку?
Abstraction вне форума Ответить с цитированием
Старый 19.12.2012, 18:21   #5
<- DelpHIFanat ->
Пользователь
 
Аватар для <- DelpHIFanat ->
 
Регистрация: 07.11.2011
Сообщений: 58
По умолчанию

Я бы вводил по принципу: число - операция - число, т. е. сначала одно число, потом операцию, потом другое число - ввод в таком случае сделал бы в трёх отдельных операторах ввода. Если же Вам нужно ввести всё сразу, я бы выражение вводил в виде строки, числа и операцию, а также недопустимые в выражении символы (например, буквы) искал бы методом посимвольного перебора строки: подвернулся пробел или знак - число закончилось, знак - операция, после знака прошел пробелы (если их несколько), наткнулся на цифру - началось другое число. Если же операции нет (не нашёлся ни один из знаков действия) - ошибка.
Лучше вообще не иметь знаний о чём-то, чем иметь неправильные знания об этом!..
<- DelpHIFanat -> вне форума Ответить с цитированием
Старый 21.12.2012, 01:48   #6
ezhidudek
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 43
По умолчанию

<- DelpHIFanat ->, строгого принципа ввода не существует,можно по-разному..главное -"правильность" этих символов.возможно вводить только числа.или числа с пробелом.

Abstraction,
это значит задать число и нажать enter для расчета результата.программа должна выругаться по этому поводу.
ezhidudek вне форума Ответить с цитированием
Старый 21.12.2012, 11:01   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
это значит задать число и нажать enter для расчета результата.программа должна выругаться по этому поводу.
Тогда читайте символы, а не числа. Если scanf "ждёт" число, а "видит" пробельные символы (в том числе переводы строки), она просто считает, что число ещё не ввели (введут позже) и даже не возвращает управление.
Abstraction вне форума Ответить с цитированием
Старый 21.12.2012, 14:59   #8
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
По умолчанию

По коду можно сделать вывод, что вы с большей вероятностью изучаете С, но если всё же это C++,
то изучайте Исключительные ситуации C++ если хотите сделать обработку ошибок так сказать на высшем уровне
Blind Guard вне форума Ответить с цитированием
Старый 21.12.2012, 17:49   #9
ezhidudek
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Тогда читайте символы, а не числа. Если scanf "ждёт" число, а "видит" пробельные символы (в том числе переводы строки), она просто считает, что число ещё не ввели (введут позже) и даже не возвращает управление.
суть понял,а можно на данном примере ?если не затруднит.
ezhidudek вне форума Ответить с цитированием
Старый 21.12.2012, 17:50   #10
ezhidudek
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Blind Guard Посмотреть сообщение
По коду можно сделать вывод, что вы с большей вероятностью изучаете С, но если всё же это C++,
то изучайте Исключительные ситуации C++ если хотите сделать обработку ошибок так сказать на высшем уровне
вы правы.это си.это видно.)
ezhidudek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
калькулятор Татьяна22 JavaScript, Ajax 9 06.05.2012 13:21
калькулятор Hilda Помощь студентам 2 28.04.2010 22:50
Калькулятор Hilda Помощь студентам 3 25.04.2010 16:04
Калькулятор manick Общие вопросы Delphi 8 23.04.2010 20:42
калькулятор Bat{CMD}_Men Общие вопросы Delphi 1 22.04.2010 09:36