|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.11.2014, 22:13 | #1 |
Пользователь
Регистрация: 08.11.2014
Сообщений: 11
|
для лабораторной работы требуется написать приложение - калькулятор, я использовал бесконечный цикл while для повторного использования калькулятора, однако хотелось бы улучшить оди
добрый день, помогите советом.
для лабораторной работы требуется написать приложение - калькулятор, я использовал бесконечный цикл while для повторного использования калькулятора, однако хотелось бы улучшить один момент, после вывода на экран надписи "To continue, press enter , to exit press q" если нажимать enter, то приходится нажимать эту клавишу несколько раз для перехода на следующую итерацию, хотелось бы ввести проверну на нажатие клавиши enter, как это можно реализовать? вот код: // лаба_2.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "conio.h" #include "stdlib.h" #include "math.h" // для того чтобы учесть переполнение типа int была подключена библиотека limits.h #include "limits.h" int _tmain(int argc, _TCHAR* argv[]) { int ar1, ar2, a; char sig; // чтобы приложение не закрывалось сразу же после выполнения выражения, был введен бесконечный цикл while c условием выхода при нажатии клавиши q while(true) { printf("Enter expression \n"); // оператор flushall() очищает буфер, из которого берет данные scanf flushall(); scanf("%d%c%d", &ar1, &sig, &ar2); // условный оператор для учета переполнения типов if ((ar1>=SHRT_MAX)||(ar1<=SHRT_MIN)|| (ar2>=SHRT_MAX)||(ar2<=SHRT_MIN)) { printf("You have gone beyond a value of type int, please enter the arguments are not outside the range [−2,147,483,648 ; +2,147,483,647]; press enter to continie \n"); flushall(); getchar(); // system("cls"); очищает экран перед следующей итерацией цикла system("cls"); continue; } // проверка на правильность ввода знака if ((sig!='+')&&(sig!='-')&&(sig!='*')&&(sig!='/')) { printf("you entered an incorrect character please one of the following characters: +, - , *, /; press enter to continie \n"); flushall(); getchar(); system("cls"); continue; } else { // если знак введен правильно, то в игру вступает оператор switch case switch(sig) { case '+': a=ar1+ar2; break; case '-': a=ar1-ar2; break; case '*': a=ar1*ar2; break; case '/': { if (ar2==0) { printf("deviding by zero is not allowed in this world"); getchar(); continue; } a=ar1/ar2; } break; } } // печатаем ответ printf("=%d \n", a); // в случае если пользователь уже все, при вводе q с клавиатуры цикл разрывается и программа завершает работу printf("To continue, press enter , to exit press q \n"); flushall(); scanf("%c", &sig); if(sig=='q') break; flushall(); getchar(); system("cls"); } return 0; } |
09.02.2015, 11:44 | #2 |
Пользователь
Регистрация: 02.02.2015
Сообщений: 24
|
|
09.02.2015, 12:09 | #3 |
Пользователь
Регистрация: 02.02.2015
Сообщений: 24
|
А что будет если пользователь нажмет любую другую клавишу? Может лучше заменить на : "Press 'q' to exit, or any other key to continue."?
Можно так (если важен Enter): Код:
Последний раз редактировалось magnet; 09.02.2015 в 12:14. |
09.02.2015, 12:21 | #4 | |
Пользователь
Регистрация: 02.02.2015
Сообщений: 24
|
Цитата:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с дописанием программы для лабораторной работы. | Annie Square | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 01.01.2016 20:39 |
Написать маленькое приложение для имитации работы в браузере | cashmail | Фриланс | 1 | 06.11.2015 17:58 |
Требуется написать веб-приложение типа demo.vtiger.com для диплома | musculatura | Фриланс | 5 | 14.05.2013 18:20 |
Требуется написать информационное приложение для iPhone и iPad | ozon170 | Фриланс | 1 | 12.08.2011 23:08 |
Для облегчения работы с TFS - приложение для работы над дефектами и задачами | Аякс | Софт | 1 | 18.03.2009 11:43 |