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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2014, 11:21   #1
Олеггггг
Новичок
Джуниор
 
Регистрация: 04.10.2014
Сообщений: 2
По умолчанию

Здравствуйте. помогите пожалуйста, уже прочитал несколько форумов и справочников, но ничего полезного так и не нашел. Мне надо написать класс калькулятор(операции только сложение и вычитание). Я знаю как это сделать для определенного числа параметров, но как преобразовать, чтобы пользователь мог вводить арифметическое выражение, состоящее из неограниченного числа цифр-не представляю

Вот начал, но не уверен:
Код:
#include <iostream>
#include <String> 
using namespace std;
class calculator
{public: 
void MyFunc(int a,...) 
{
  int *P=&a; 
  
  while (*P) 
   {
     cout<<*P<<" ";
     P++; 
   }

void main()
{
 system("CLS");
  MyFunc(100,200,300,400,0); 
 system("PAUSE");
}};
int main()
{}

Последний раз редактировалось Stilet; 07.10.2014 в 12:21.
Олеггггг вне форума Ответить с цитированием
Старый 07.10.2014, 12:33   #2
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Можно передавать массив чисел для, например, сложения:
Код:
Calculator c;
int sum = c.add( array );
main.cpp
Код:
#include <vector>
#include <iostream>
#include "Calculator.h"

int main()
{
    std::vector<int> array;
    array.push_back( 1 );
    array.push_back( 1 );
    array.push_back( 2 );
    array.push_back( 3 );

    Calculator c;
    std::cout << "Sum = " << c.add( array ) << std::endl;

    return 0;
}
Calculator.h
Код:
#ifndef CALCULATOR_H
#define CALCULATOR_H

#include <vector>

class Calculator
{
public:    
    int add( const std::vector<int> &array );
};

#endif // CALCULATOR_H
Calculator.cpp
Код:
#include "Calculator.h"

int Calculator::add( const std::vector<int> &array )
{
    int sum = 0;

    for ( std::size_t i = 0; i < array.size(); i++ ) {
        sum += array[i];
    }

    return sum;
}

Последний раз редактировалось 8Observer8; 07.10.2014 в 13:30.
8Observer8 вне форума Ответить с цитированием
Старый 07.10.2014, 12:42   #3
Олеггггг
Новичок
Джуниор
 
Регистрация: 04.10.2014
Сообщений: 2
По умолчанию

а если так?
#include<iostream>
#include<string.h>
#include<stdio.h>
#define ZNAK 1
#define CHISLO 2
using namespace std;
class calculator
{private:

char *formula;
char leks[100];
char lek_tip;
public:

void calculator::Nachalo(double *result){
get_leks();
sloz_vichet(result);
}
void calculator::sloz_vichet (double *result){
char up;
double temp;
while((up = *leks) == '+' || up == '-'){
get_leks();

switch(up){
case '-':
*result= *result-temp;
break;
case '+':
*result= *result+temp;
break;
}}}


void calculator:: leks_potok(){
char *t;
t=leks;
for(;*t;t++)
formula--;
}
void calculator::get_leks(){
char *temp;
lek_tip=0;
temp=leks;
*temp='\0';
if(!*formula) return;
while(isspace(*formula))
++formula;
if(strchr("+-=",*formula)){
lek_tip=ZNAK;
*temp++= *formula++;
}
else if(isdigit(*formula)){

*temp++= *formula++;
lek_tip=CHISLO;
}
*temp='\0';
};


int main()
{
double result;
char *p;
p=(char *)malloc(100);
if(!p)
cout<<"Oshibka";
do{
formula=p;
cout<<"Vvedite virazenie: "<<endl;
gets(formula);
if(!*formula) break;
Nachalo(&result);
cout<<"Result: "<<result<<endl<<endl;
}
while(*p);
system ("pause");
return 0;
}
}
Олеггггг вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы nani94 C# (си шарп) 0 16.03.2013 10:34
Классы Тёма_) Общие вопросы C/C++ 12 06.04.2012 09:38
Классы в C# Lucky777 Помощь студентам 1 27.04.2011 01:41
Классы на C AlexRedWolf Общие вопросы C/C++ 4 13.01.2011 23:11