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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2012, 20:39   #1
Artem23
 
Регистрация: 13.12.2012
Сообщений: 4
По умолчанию Калькулятор, работа над ошибками.

Начал изучать с++ по книге Либерти. Наткнулся на простой калькулятор с 1 действием:
#include <iostream.h>
int Add (int x, int y)
{
cout << "In Add(), received " << x << " and " << y << "\n";
return (x+y);
}
int main()
{
cout << "I'm in main()!\n";
int a, b, c;
cout << "Enter two numbers: ";
cin >> a;
cin >> b;
cout << "\n Calling Add()\n";
c=Add(a,b);
cout << "\n Back in main().\n";
cout << "c was set to " << c;
cout << "\n Exiting...\n\n";
return 0;
}

x+y - тоисть, одна цыфра додает вторую

Потом подумал, почему бы не попробовать сделать на 2 варианта, минус и плюс.
Вот что не получилось:

#include <iostream.h>
int add (int x, int y)
{
cout << "In Add(), received " << x << " and " << y << "\n";
return (x+y);
}
int add (int q, int w)
{
cout << "In Add(), received " <<q << " and " << w << "\n";
return (q-w);
}
int main()
{
cout << "I'm in main()!\n";
int a, b, c;
cout << "Enter two numbers: ";
cin >> a;
cin >> b;
cout << "\n Calling add()\n";
c = add(a,b);
cout << "\n Back in main().\n";
cout << "c was set to " << c;
cout << "\n Exiting...\n\n";
return 0;
}

Код ошибки - d:\program files\microsoft visual studio\myprojects\1\2.cpp(8) : error C2084: function 'int __cdecl add(int,int)' already has a body
d:\program files\microsoft visual studio\myprojects\1\2.cpp(20) : error C2440: '=' : cannot convert from 'int (__cdecl *)(int,int)' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
Error executing cl.exe.

Второй вариант написан с потолка, пытаясь логически сообразить.


И случайно наткнулся на калькулятор на одном из сайтов по програмированию:

#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
int main(){
double n1,n2;
int inp;
cout << "Enter number :\n\n\n";
cout << "_____________________\n\n\n";
cout << "\tNumber 1 :\n";
cin >> n1;
cout << "\t\tNumber 2 :\n";
cin >> n2;
if(!cin){
cout << "\n\t- Error! -\n";
cin.clear();
cin.ignore();
getch();
return -1;
}
cout << "Enter [1] for [+]\n";
cout << "Enter [2] for [-]\n";
cout << "Enter [3] for [/]\n";
cout << "Enter [4] for[*]\n\n\n";
cout << "___________________\n\n";
cin >> inp;

switch(inp)

{
case 1:
cout << "____________________\n";
cout << " Summa :\n";
cout << "\n\n" << n1+n2 << "\n\n\t";

getch();
break;
case 2:
cout << "____________________\n";
cout << " Summa :\n";
cout << "\n\n" << n1-n2 << "\n\n\t";
getch();
break;
case 3:
cout << "____________________\n";
cout << " Summa :\n";
cout << "\n\n" << n1/n2 << "\n\n\t";
getch();
break;
case 4:
cout << "____________________\n";
cout << " Summa :\n";
cout << "\n\n" << n1*n2 << "\n\n\t";
getch();
break;


default:
cout << "\tonly numbers 1 2 3 4\t\n";
}
return 0;
}

По сути, я такой и хочу написать. Скопировать то скопирую готовый, но не пойму как работает, что означает весь код, часть кода я знаю, вторую нет. Помогите.
Artem23 вне форума Ответить с цитированием
Старый 18.12.2012, 19:41   #2
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

Код:
int add (int x, int y)
{
cout << "In Add(), received " << x << " and " << y << "\n";
return (x+y);
}
int add (int q, int w)
{
cout << "In Add(), received " <<q << " and " << w << "\n";
return (q-w);
}

Вас не смущает то, что функции названы одинаково?
Код:
int add (int, int)
int add (int, int)
alexey_kip вне форума Ответить с цитированием
Старый 18.12.2012, 19:51   #3
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

Код:
#include <iostream.h>
int add (int x, int y)
{
	cout << "Ñëîæåíèå " << x << " è " << y << " ðàâíî ";
	return (x+y);
}
int otn (int x, int y)
{
	cout << "Âû÷èòàíèå " <<y << " îò " << x << " ðàâíî ";
	return (x-y);
}
int main()
{
	int a, b, c;
	cin>>a;
	cin>>b;
	cout<<add(a,b);
	cin>>c;
	cout<<otn(b,c);
	return 0;
}
alexey_kip вне форума Ответить с цитированием
Старый 18.12.2012, 19:52   #4
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

Русский текст с вижуалки норм не скопировался, ну да неважно, смысл главное понять)
alexey_kip вне форума Ответить с цитированием
Старый 18.12.2012, 22:02   #5
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Цитата:
Сообщение от alexey_kip Посмотреть сообщение
Русский текст с вижуалки норм не скопировался, ну да неважно, смысл главное понять)
во-первых.... b не изменяется, нужно передавать как ссылку.
во-вторых.... по англ... вычитать sub... ну это не суть важно.
дело в том что вы отправляете в стек функции меняете их,
но они уничтожаются... дебуг конечно съест, там память сохраняется.
//-----
а так же поймите в книгах в любом примере есть ошибка....
сделано СПЕЦИАЛЬНО... ибо каждый прогер писав книгу хочет,
что бы вы ПОНЯЛИ!!!!
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 18.12.2012 в 22:05.
Perchik71 вне форума Ответить с цитированием
Старый 19.12.2012, 14:50   #6
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

Цитата:
Сообщение от Perchik71 Посмотреть сообщение
во-первых.... b не изменяется, нужно передавать как ссылку.
во-вторых.... по англ... вычитать sub... ну это не суть важно.
дело в том что вы отправляете в стек функции меняете их,
но они уничтожаются... дебуг конечно съест, там память сохраняется.
//-----
а так же поймите в книгах в любом примере есть ошибка....
сделано СПЕЦИАЛЬНО... ибо каждый прогер писав книгу хочет,
что бы вы ПОНЯЛИ!!!!
В моем примере b изменять и не надо
А как по-английски вычитать меня мало интересует, как автор захочет назвать функцию, так он ее и назовет
alexey_kip вне форума Ответить с цитированием
Старый 22.12.2012, 13:56   #7
Artem23
 
Регистрация: 13.12.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от alexey_kip Посмотреть сообщение
В моем примере b изменять и не надо
А как по-английски вычитать меня мало интересует, как автор захочет назвать функцию, так он ее и назовет
По поводу ошибки над функциями, то я после создание темы, понял ошибку, там все окей.
А по поводу специальных ошибок в книге, то я их заметил с самого начала, что знаю то исправляю)
Кстати на 2 действия сделал, а вот на 4 где (+-\*) не получаеться почему то.
Artem23 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа тест на Delphi. Надо добавить "работу над ошибками" dex16 Помощь студентам 1 25.02.2012 00:56
Работа над ошибками pandaaaaa Паскаль, Turbo Pascal, PascalABC.NET 2 01.01.2012 20:53
Работа над ошибками, удаление Linux begemotikdin Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 5 30.11.2008 01:16