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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2014, 17:57   #1
anh357
Пользователь
 
Регистрация: 03.12.2014
Сообщений: 22
Печаль калькулятор на С++ в консоли

Ребят такая задача я строю калькулятор на с++ в консоли и мне сказали для решения я должен записывать данные в текстовом документе и среда разработки должна как то брать оттуда данные к примеру 43+43 и производить вычисления как это сделать?
anh357 вне форума Ответить с цитированием
Старый 07.12.2014, 20:03   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Нет ничего проще. Создавайте файл... Как данные считываете из файла ?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 07.12.2014, 23:40   #3
Jurijus123
Заблокирован
 
Регистрация: 12.11.2014
Сообщений: 120
По умолчанию

Читать по одной цифре соединяя их вместе пока не встретим +,-,*,/;
Распознать знак, читать дальше по одно цифре соединяя их в месте, перевести в две цифры +,-,*/. Показать ответ, сохранить все в блокнот.
Jurijus123 вне форума Ответить с цитированием
Старый 08.12.2014, 08:25   #4
anh357
Пользователь
 
Регистрация: 03.12.2014
Сообщений: 22
По умолчанию

т.е у меня есть код калькулятора все что мне нужно решать я должен записать в блокнот а потом откомпилировать вылезет консоль с ответом?
anh357 вне форума Ответить с цитированием
Старый 08.12.2014, 22:52   #5
Jurijus123
Заблокирован
 
Регистрация: 12.11.2014
Сообщений: 120
По умолчанию

Код:
#include <fstream> 
#include <string>
#include <iostream> 
#include <time.h>
#include <sstream>
using namespace std;
struct document{
char buffer[2]; string bin,bin2,bin3;
} save [33333];
void t()
{
 cout<<"I caculate this with this, here your answear";
}
 int main()
{ 
stringstream ss; int r,y=0; float a,b,c; char n[10]; char h=' '; string str1; long t1 = clock(); string z;
ifstream file( "number.txt" );
   while (!file.eof())
           {
	            for(r=0; r<33333; r++)
			   {
          fill_n( save[r].buffer,2, '\0' );	file.read( save[r].buffer,1); string sgi1(save[r].buffer); str1=save[r].buffer;
unsigned int pos13 = str1.find("+",0); unsigned int pos14 = str1.find("-",0); unsigned int pos15 = str1.find("/",0); unsigned int pos16 = str1.find("*",0);
 if( pos16 != string::npos || pos15 != string::npos || pos14 != string::npos || pos13 != string::npos )
 {
 y+=1; string str1=save[r].buffer; ss.str(str1); ss>>z;
 }                   
 else
{			
	if(y==1)
	{
	save[r].bin+=save[r].buffer;
	}
	 if(y==2)
	{
	save[r].bin2+=save[r].buffer;
	}
 }
     unsigned int pos17 = str1.find(" ",0); unsigned int pos18 = str1.find("=",0);
	  if( pos17 != string::npos || pos18 != string::npos)
 {
   y=0; a = atoi(save[r].bin.c_str()); b = atoi(save[r].bin2.c_str()); 
   unsigned int pos19 = z.find("*",0);  
   if( pos19 != string::npos )
 {
	 y=0; c=a*b; t(); cout<<a<<"*"<<b<<"="<<c<<endl; sprintf(n,"%f",c);
	 save[r].bin3=save[r].bin3+save[r].bin+"*"+save[r].bin2+"="+n+" "; save[r].bin=h; save[r].bin2=h;
	  }
    unsigned int pos20 = z.find("/",0);
if( pos20 != string::npos )
 {
	 y=0; c=a/b; t(); cout<<a<<"/"<<b<<"="<<c<<endl; sprintf(n,"%f",c);
	 save[r].bin3=save[r].bin3+save[r].bin+"/"+save[r].bin2+"="+n+" "; save[r].bin=h; save[r].bin2=h;
	  }
	   unsigned int pos21 = z.find("+",0);
	 if( pos21 != string::npos )
 {
	 y=0; c=a+b; t(); cout<<a<<"+"<<b<<"="<<c<<endl; sprintf(n,"%f",c);
	 save[r].bin3=save[r].bin3+save[r].bin+"+"+save[r].bin2+"="+n+" "; save[r].bin=h; save[r].bin2=h;
	  }
	    unsigned int pos22 = z.find("-",0);
	 	 if( pos22 != string::npos )
 {
	 y=0; c=a-b; t(); cout<<a<<"-"<<b<<"="<<c<<endl; sprintf(n,"%f",c);
	 save[r].bin3=save[r].bin3+save[r].bin+"-"+save[r].bin2+"="+n+" "; save[r].bin=h; save[r].bin2=h;
	  }
	   }
	}
}
 file.close();
ofstream s("numbercount.txt",ios::out);
{
  for(r=0; r<33333; r++)
  s<<save[r].bin3;
}
s.close();
long t2 = clock();
cout<<"Done!\n"<<"Time: "<<(t2 - t1)/1000/60<<" minut.\n"<<"Time: "<<(t2 - t1)/1000<<" seconds.\n"<<"Time: "<<(t2 - t1)<<" millisends.\n";
system("pause");
return 0;	
}

Последний раз редактировалось Jurijus123; 09.12.2014 в 00:21.
Jurijus123 вне форума Ответить с цитированием
Старый 09.12.2014, 11:21   #6
anh357
Пользователь
 
Регистрация: 03.12.2014
Сообщений: 22
По умолчанию

спасибо большое!))) за код
anh357 вне форума Ответить с цитированием
Старый 11.12.2014, 18:42   #7
anh357
Пользователь
 
Регистрация: 03.12.2014
Сообщений: 22
По умолчанию

доброго времени суток!!! уважаемые подскажите а как сделать так что бы калькулятор принимал только +-*/ т.е если я ввожу 12?15 то он вылетал...либо выводил ошибку
anh357 вне форума Ответить с цитированием
Старый 12.12.2014, 21:49   #8
Jurijus123
Заблокирован
 
Регистрация: 12.11.2014
Сообщений: 120
По умолчанию

Цитата:
Сообщение от anh357 Посмотреть сообщение
доброго времени суток!!! уважаемые подскажите а как сделать так что бы калькулятор принимал только +-*/ т.е если я ввожу 12?15 то он вылетал...либо выводил ошибку
вот так:
Код:
#include <fstream> 
#include <string>
#include <iostream> 
#include <time.h>
#include <sstream>
#include <windows.h>
using namespace std;
struct document{
char buffer[2]; string bin,bin2,bin3;
} save [33333];
void t()
{
 cout<<"I caculate this with this, here your answear";
}
void e()
{			  			 	  			 system("start sound.ogg");
	 {
	 	 Sleep(7000);//proigrati muziku
keybd_event(VK_MENU, 0, 0, 0);		 
keybd_event(VK_F4, 0, 0, 0);
keybd_event(VK_F4, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0); //zakriti ee
	MessageBox(0, "Error this not *,/,-,+,=," " or number: ok", "Error 542", MB_OK);
	 Sleep(250);
	 }
}
 int main()
{ 
stringstream ss; int r,y=0; float a,b,c; char n[10]; char h=' '; string str1; long t1 = clock(); string z;
ifstream file( "number.txt" );
   while (!file.eof())
           {
	            for(r=0; r<33333; r++)
			   {
          fill_n( save[r].buffer,2, '\0' );	file.read( save[r].buffer,1); string sgi1(save[r].buffer); str1=save[r].buffer;
unsigned int pos13 = str1.find("+",0); unsigned int pos14 = str1.find("-",0); unsigned int pos15 = str1.find("/",0); unsigned int pos16 = str1.find("*",0);
 if( pos16 != string::npos || pos15 != string::npos || pos14 != string::npos || pos13 != string::npos )
 {
 y+=1; string str1=save[r].buffer; ss.str(str1); ss>>z;
 } 
     unsigned int pos17 = str1.find(" ",0); unsigned int pos18 = str1.find("=",0);
	  if( pos17 != string::npos || pos18 != string::npos)
 {
   y=0; a = atoi(save[r].bin.c_str()); b = atoi(save[r].bin2.c_str()); 
   unsigned int pos19 = z.find("*",0);  
   if( pos19 != string::npos )
 {
	 y=0; c=a*b; t(); cout<<a<<"*"<<b<<"="<<c<<endl; sprintf(n,"%f",c);
	 save[r].bin3=save[r].bin3+save[r].bin+"*"+save[r].bin2+"="+n+" "; save[r].bin=h; save[r].bin2=h;
	  }
    unsigned int pos20 = z.find("/",0);
if( pos20 != string::npos )
 {
	 y=0; c=a/b; t(); cout<<a<<"/"<<b<<"="<<c<<endl; sprintf(n,"%f",c);
	 save[r].bin3=save[r].bin3+save[r].bin+"/"+save[r].bin2+"="+n+" "; save[r].bin=h; save[r].bin2=h;
	  }
	   unsigned int pos21 = z.find("+",0);
	 if( pos21 != string::npos )
 {
	 y=0; c=a+b; t(); cout<<a<<"+"<<b<<"="<<c<<endl; sprintf(n,"%f",c);
	 save[r].bin3=save[r].bin3+save[r].bin+"+"+save[r].bin2+"="+n+" "; save[r].bin=h; save[r].bin2=h;
	  }
	    unsigned int pos22 = z.find("-",0);
	 	 if( pos22 != string::npos )
 {
	 y=0; c=a-b; t(); cout<<a<<"-"<<b<<"="<<c<<endl; sprintf(n,"%f",c);
	 save[r].bin3=save[r].bin3+save[r].bin+"-"+save[r].bin2+"="+n+" "; save[r].bin=h; save[r].bin2=h;
	  }
 else
{		 
  unsigned int pos23 = str1.find("1",0); unsigned int pos24 = str1.find("2",0); unsigned int pos25 = str1.find("3",0); unsigned int pos26 = str1.find("4",0); unsigned int pos27 = str1.find("5",0);
  unsigned int pos28 = str1.find("6",0);  unsigned int pos29 = str1.find("7",0); unsigned int pos32 = str1.find("8",0); unsigned int pos30 = str1.find("9",0); unsigned int pos31 = str1.find("0",0); 
 if( pos32 != string::npos || pos31 != string::npos || pos30 != string::npos || pos29 != string::npos || pos28 != string::npos || pos27 != string::npos || pos26 != string::npos || pos25 != string::npos || pos24 != string::npos || pos26 != string::npos )
 {
	if(y==1)
	{
	save[r].bin+=save[r].buffer;
	}
	 if(y==2)
	{
	save[r].bin2+=save[r].buffer;
	}
 }
 else
 {
  e(); return 0;
 }
	}   
	  }
	}
}
 file.close();
ofstream s("numbercount.txt",ios::out);
{
  for(r=0; r<33333; r++)
  s<<save[r].bin3;
}
s.close();
long t2 = clock();
cout<<"Done!\n"<<"Time: "<<(t2 - t1)/1000/60<<" minut.\n"<<"Time: "<<(t2 - t1)/1000<<" seconds.\n"<<"Time: "<<(t2 - t1)<<" millisends.\n";
system("pause");
return 0;	
}
Jurijus123 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер консоли a10nan Общие вопросы C/C++ 1 23.07.2012 23:18
c++ считывание с консоли world12_tk Помощь студентам 12 20.01.2012 02:19
Скроллер в консоли YourLastSong Общие вопросы C/C++ 3 29.12.2010 15:33
Украсть из Консоли. wr_vu_lan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 17 23.12.2009 00:15
от консоли к окну ёжик Общие вопросы C/C++ 3 06.04.2008 17:51