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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2012, 20:36   #1
kabilskaya_krist
 
Регистрация: 10.01.2012
Сообщений: 4
По умолчанию Не знаю какая ошибка в тексте программы калькулятора на Си

Вот что дано:


Код:
#include <cstdlib> 

using namespace std; 

class OperationsBase 
 { 
 public: 
 virtual double doOperation(double, double) = 0; 
 }; 

class OperationPlus : public OperationsBase 
 { 
 public: 
 double doOperatiоn (double a, double b) 
 { 
 return a + b; 
 } 
 }; 

class OperationMinus : public OperationsBase 
 { 
 public: 
 double doOperatiоn (double a, double b) 
 { 
 return a - b; 
 } 
 }; 

class OperationMultiply : public OperationsBase 
 { 
 public: 
 double doOperatiоn (double a, double b) 
 { 
 return a * b; 
 } 
 }; 

class OperationPow : public OperationsBase 
 { 
 public: 
 double doOperatiоn (double a, double b) 
 { 
 return (double) pow(a,b); 
 } 
 }; 

class OperationDivide : public OperationsBase 
 { 
 public: 
 double doOperatiоn (double a, double b) 
 { 
 if (b!=0) 
 { 
 return a / b; 
 } 
 else 
 { 
 cout << " error delenie na nol" << endl; 
 return 0; 
 } 
 } 
 }; 

class OperationsFactory 
 { 
 public: 
 OperationsBase* createInstance (char* name ) 
 { 
 if (!strcmp (name, "+")) 
 return new OperationPlus (); 
 if (!strcmp (name, "-")) 
 return new OperationMinus (); 
 if (!strcmp (name, "*")) 
 return new OperationMultiply (); 
 if (!strcmp (name, "^")) 
 return new OperationPow (); 
 if (!strcmp (name,"/")) 
 return new OperationDivide (); 
 } 
 }; 

int main (int argc, char *argv[]) 
{ 
 double a, b; 
 char operationString [100]; 

 OperationsFactory factory; 

 cout << "Enter number 1"; 

 cin >> a; 

 cout << "enter number 2"; 
 cin >> b; 

 cout << "enter operation"; 

 cin >> operationString; 

 OperationsBase* operatiоn = factory.createInstance(operationString); 

 if (operation) 
 { 
 cout << "result" << operation->doOperatiоn (a, b) << endl; 
 delete operation; 
 } 
 else 
 { 
 cout << "invalid operation"<< endl; 
 } 

 return EXIT_SUCCESS; 
};
//*********************************** *********************************** *****

Последний раз редактировалось alex_fcsm; 10.01.2012 в 20:46.
kabilskaya_krist вне форума Ответить с цитированием
Старый 10.01.2012, 21:42   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

а название ошибки и ее суть слабО написать? Или по вашему мнению тут телепаты живут?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 11.01.2012, 21:41   #3
kabilskaya_krist
 
Регистрация: 10.01.2012
Сообщений: 4
По умолчанию

такое задание выдали в институте!!! больше ничего не дано...
kabilskaya_krist вне форума Ответить с цитированием
Старый 12.01.2012, 00:07   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Какое задание? "Не знаю какая ошибка в тексте программы калькулятора на Си"?
Вы это скомпилировать пытались?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 12.01.2012, 00:10   #5
AlexDark
Форумчанин
 
Аватар для AlexDark
 
Регистрация: 23.12.2011
Сообщений: 117
По умолчанию

Задача найти ошибки ?)

ну так вперед в компилятор и будет результат...

А вообще, как минимум вот тут должен обрабатываться вариант в котором злобный пользователь введет вместо оператора что-то на оператор не похожее.
Код:
....
class OperationsFactory 
 { 
 public: 
 OperationsBase* createInstance (char* name ) 
 { 
....
 if (!strcmp (name,"/")) 
 return new OperationDivide ();
 else return NULL;
....
AlexDark вне форума Ответить с цитированием
Старый 13.01.2012, 08:30   #6
kabilskaya_krist
 
Регистрация: 10.01.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Какое задание? "Не знаю какая ошибка в тексте программы калькулятора на Си"?
Задание - найти ошибку в программе калькулятора! Так его сформулировал препод в институте.
kabilskaya_krist вне форума Ответить с цитированием
Старый 13.01.2012, 19:33   #7
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Замечательно. Это уже похоже на задание. А теперь скомпилируйте этот код и:
а) если он даже не компилируется, скиньте сюда ошибку, которую говорит компилятор;
б) если он нормально скомпилировался, но неправильно считает, скиньте сюда пример того, что вы пытались посчитать и что он вывел;
в) если на этапе выполнения программа вылетает, опишите тут свои действия до вылета.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 18.01.2012, 10:16   #8
kabilskaya_krist
 
Регистрация: 10.01.2012
Сообщений: 4
По умолчанию

Пишет одну ошибку:
Ошибка 5 error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник. c:\documents and settings\студент\мои документы\visual studio 2010\projects\6\6\6.cpp 144 1 6

и четыре предупреждения:
Предупреждение 1 warning C4627: #include <config.h>: пропущен при поиске использования предкомпилированного заголовка c:\documents and settings\студент\мои документы\visual studio 2010\projects\6\6\6.cpp 23 1 6

Предупреждение 2 warning C4627: #include <iostream>: пропущен при поиске использования предкомпилированного заголовка c:\documents and settings\студент\мои документы\visual studio 2010\projects\6\6\6.cpp 26 1 6

Предупреждение 3 warning C4627: #include <math.h>: пропущен при поиске использования предкомпилированного заголовка c:\documents and settings\студент\мои документы\visual studio 2010\projects\6\6\6.cpp 27 1 6

Предупреждение 4 warning C4627: #include <cstdlib>: пропущен при поиске использования предкомпилированного заголовка c:\documents and settings\студент\мои документы\visual studio 2010\projects\6\6\6.cpp 28 1 6


Что все это значит я не имею понятия(((
kabilskaya_krist вне форума Ответить с цитированием
Старый 18.01.2012, 17:15   #9
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Ну читать-то вы умеете?
Цитата:
Возможно, вы забыли добавить директиву "#include "StdAfx.h""
компилятор вам даже ответ сказал. Где у вас УЖЕ прописано #include? Вот туда и добавьте.
(Подсказка: в самое начало файла пишите #include "StdAfx.h")
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
socket и потоки ТРАБЛА не знаю какая ! fucil Работа с сетью в Delphi 0 21.09.2011 21:14
как скопировать дизайн сайта?знаю на каком движке стоит и какая версия MiSTiK31 PHP 3 28.11.2010 20:29
Ошибка в тексте программы Pascal daniil2010 Помощь студентам 3 06.05.2010 00:58
Ошибка в тексте программы с пользовательским модулем zonclayv Паскаль, Turbo Pascal, PascalABC.NET 1 22.12.2008 21:39