Калькулятор C/C++

Алгоритмы, вопросы по синаксису, описание програмного обеспечения, администрирование серверов и т.д. и т.п.

Модератор: Модераторы

Ответить
Аватара пользователя
mil
Jedi MAster
Сообщения: 1048
Зарегистрирован: 15 окт 2008, 19:54
Откуда: ыыыыы

Калькулятор C/C++

Сообщение mil »

Эцсамое!
Задача: Калькулятор непростой, а с использованием функции getch. Т.е. пишу операнд ставлю знак операции, пишу второй операнд и выводится ответ.
getch не хранит и не выводит символы.
реализовать вывод - не проблема, а вот все остальное - это для меня проблема.

пытаюсь 1+1 сложить получается 98 :)
в с и d хранится 49 (50 если введу в качестве операнда "2" и т.д.)

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

char a,b;
int c,d;

while (a!=esc)
{
	a=getch();
	if(isdigit(a))
	    c=a;
	cout << a;
	switch (a)
	 { 
		case '+' : b=getch();
			      cout<<b;
			      if(isdigit(b))
			          d=b;
			       cout << "=" << c+d; 
			       break;
          }
Есть советики?
Не помню, кто из великих сказал... и не помню что
Изображение - как то так
Йожыг
Йожыг
Сообщения: 2283
Зарегистрирован: 25 дек 2006, 17:01

Re: Калькулятор C/C++

Сообщение Йожыг »

неявное приведение.
попробуйте что-нибудь типа StrToInt().
p.s. кстате, полный вывод проги дайте :)
Совесть это прирожденная правда. А правда – это истина на деле.
Аватара пользователя
mil
Jedi MAster
Сообщения: 1048
Зарегистрирован: 15 окт 2008, 19:54
Откуда: ыыыыы

Re: Калькулятор C/C++

Сообщение mil »

StrToInt это хорошо, но это не delphi :) Аналогов в C/C++, увы, незнаю.

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

#include <iostream>
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <cstring>
#include <stdlib.h>
#define esc 0x1b

using namespace std;
int getch(); // так как под nix'ом нет getch - я его эмулирую (не вижу смысла скачивать и подключать мощный
           //заголовочный файл ради 1 функции (возможно отсюда проблемы))

int main(int argc, char** argv)
{
    char a,b;
    int c,d;
    while (a!=esc)
    {
		a=getch();
		if(isdigit(a))
			c=(int)a;
		cout << a;
	switch (a)
	 { 
		case '+' : b=getch();
				   cout<<b;
				   if(isdigit(b))
					d=(int)b;
				   cout << "=" << c+d; 
				   break;
}


int getch() 
{
	struct termios oldt,
	newt;
	int ch;
	tcgetattr( STDIN_FILENO, &oldt );
	newt = oldt;
	newt.c_lflag &= ~( ICANON | ECHO );
	tcsetattr( STDIN_FILENO, TCSANOW, &newt );
	ch = getchar();
	tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
	return ch;
}
неявное приведение типа (c=(int)a; d=(int)b;) не дает эффекта, но может я его юзаю не так?)
Не помню, кто из великих сказал... и не помню что
Изображение - как то так
Йожыг
Йожыг
Сообщения: 2283
Зарегистрирован: 25 дек 2006, 17:01

Re: Калькулятор C/C++

Сообщение Йожыг »

всё-таки дайте вывод проги - там у вас достаточно однако cout доля отладки.
или сами дебаггером пройдитесь.
Совесть это прирожденная правда. А правда – это истина на деле.
Йожыг
Йожыг
Сообщения: 2283
Зарегистрирован: 25 дек 2006, 17:01

Re: Калькулятор C/C++

Сообщение Йожыг »

хз, сто лет в никсе не писал.
чтобы исключить глупые ошибки - проверьте как сработает

int main(int argc, char** argv)
{
/* ожидаетсся раздельный ввод в формате
число1
символ
число2
вывод - число1 + число2
*/
char a,b;
int c,d;
a=getch();
c=(int)a;

b=getch();

b=getch();
d=(int)d;

cout << "=" << c+d;
}
Совесть это прирожденная правда. А правда – это истина на деле.
Аватара пользователя
gil
Злой гик
Сообщения: 3193
Зарегистрирован: 31 окт 2006, 16:22

Re: Калькулятор C/C++

Сообщение gil »

mil писал(а):Эцсамое!
Задача: Калькулятор непростой, а с использованием функции getch. Т.е. пишу операнд ставлю знак операции, пишу второй операнд и выводится ответ.
getch не хранит и не выводит символы.
реализовать вывод - не проблема, а вот все остальное - это для меня проблема.

пытаюсь 1+1 сложить получается 98 :)
в с и d хранится 49 (50 если введу в качестве операнда "2" и т.д.)

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

char a,b;
int c,d;

while (a!=esc)
{
	a=getch();
	if(isdigit(a))
	    c=a;
	cout << a;
	switch (a)
	 { 
		case '+' : b=getch();
			      cout<<b;
			      if(isdigit(b))
			          d=b;
			       cout << "=" << c+d; 
			       break;
          }
Есть советики?
так хранится же сканкод, лол.
Аватара пользователя
mil
Jedi MAster
Сообщения: 1048
Зарегистрирован: 15 окт 2008, 19:54
Откуда: ыыыыы

Re: Калькулятор C/C++

Сообщение mil »

ыыыы :) точно
спасибо
Не помню, кто из великих сказал... и не помню что
Изображение - как то так
Ответить

Вернуться в «Программирование, администрирование и софт»