калькулятор
чтобы в окне DOS ввел к примеру:
12*24*56+345/8(35/9+78-77)+56-56=
мне ПК выдал ответ, учитывая все скобки (приоритет)
очень нужно сделать калькулятор!!!
чтобы в окне DOS ввел к примеру:
12*24*56+345/8(35/9+78-77)+56-56=
мне ПК выдал ответ, учитывая все скобки (приоритет)
Где-то на этом сайте в исходниках я видел, что-то наподобие калькулятора. Посмотри, может найдешь, если конечно я не ошибаюсь.
очень нужно сделать калькулятор!!!
чтобы в окне DOS ввел к примеру:
12*24*56+345/8(35/9+78-77)+56-56=
мне ПК выдал ответ, учитывая все скобки (приоритет)
Есть у Страуструпа в книге этот пример... да и у меня где-то валялся... мыль на [email]nikulinl@mail.ru[/email]
Есть у Страуструпа в книге этот пример... да и у меня где-то валялся... мыль на [email]nikulinl@mail.ru[/email]
mne toje nujen etot primer, no ya smotrel v knige Biern Straustrup, tam ochen bolshaya programma, i ne rabotaet pochemu to u menya.
Vot mne ochen ochen nujno korotkiy, primitivniy variant etogo kalkulatora, kak zdes' napisano v JavaScript zdes'
Есть у Страуструпа в книге этот пример... да и у меня где-то валялся... мыль на [email]nikulinl@mail.ru[/email]
см. О.Грогоно. "Программирование на языке Паскаль."
см. О.Грогоно. "Программирование на языке Паскаль."
A otkuda mne naiti v internete etu knigu ???
Lyudi est' li u vas drugie varianti ?
см. О.Грогоно. "Программирование на языке Паскаль."
Ну, если уж на Паскале, то можно взять RxLib - там есть именно то, что тебе нужно.
Ну, если уж на Паскале, то можно взять RxLib - там есть именно то, что тебе нужно.
Забудь это слово - Паскаль :)
Забудь это слово - Паскаль :)
Genialno....ochen xoroshaya programma, spasibo.
No mne nado bilo prostoy kalkulator a ne mnogofunkcianalniy :)
I eto prigoditsya..
Vot ya napsial uje programmu etu,
smotrite kak ono :)
Tam poka mogut bit'nedostatki ,
Ya ne mogu delat'tak chtobi dve skobki komp prinyal (naprimer ((1+1)+21+(1+2))
Poprobuyte i uvidete.
I skajite eto xoroshiy stil ili net ?
#include <conio.h>
#include "stdlib.h"
#include <iomanip>
using std::dec;
using std::setbase;
#include <iostream.h>
float Summa(float [],char [],int);
void ArtToMas(char []);
char oper[20];
char st[40];
float nst[40];
char skob[20];
float pak[20];
char opak[20];
int z=0;
char buff[10];
bool end=false;
int p=0;
int i,j;
void main()
{
printf("\n Nermuceq Artahaytutyun ->");
scanf("%s",&st);
//---------------------------STUGUM ENK PAKAGIC KA TE CHE
int h=j=z=0;
while (st)
{
p=0;
if (st=='(')
{
for (;!end;)
{
if (st==')') end=true;
if (st!='(' && !end) skob[j++]=st[i++];
if (st=='(') {if (i!=0) opak[h]=st[i-1];i++;h++;}
}
skob[j]='\0';
cout<<"\nV skobke---->"<<skob<<endl;;
}
//HASHVUM ENQ PAKAGCI MEJINNNER@
if (end)
{
ArtToMas(skob);
pak[z++]=Summa(nst,oper,p);
cout<<"----|"<<pak[z-1];
j=0;
}
end=false;
i++;
}
p=0;z=0;
int k=0;
//PAKAGCI MEJINNER@ HASHVELUC HETO TEXADRUM ENQ VORPES INTEGER
for (i=0;st;)
{
if (st!='(')
{
if (st=='*'||st=='/'||st=='+'||st=='-')
{
if (st[i+1]!='(') oper[p++]=st[i++];else i++;
}
else
{ j=0;
while (st>='0'&&st<='9')
buff[j++]=st[i++];
buff[j]='\0';
nst[k++]=(float)atof(buff);
}
}
else if (st=='(')
{
if (i!=0) oper[p++]=opak[z];
nst[k++]=pak[z];z++;
while (st!=')') i++;
i++;
}
}
float answer=Summa(nst,oper,p);
cout<<endl;
cout<<"________________________________________\n\n";
cout<<" Answer";
cout<<"="<<nst[0];
cout<<"\n________________________________________\n";
cout<<endl;
getch();
}
//----------------------------------------------------------------------------------------------
float Summa(float fnst[], char foper[],int p1)
{
char op='/';
while (op!='@')
{
int i=0;
int u=0;
while (i<p1)
{
if (foper==op)
{
if (fnst[i+1])
{
switch (op)
{
case '/': fnst/=fnst[i+1];break;
case '*': fnst*=fnst[i+1];break;
case '-': fnst-=fnst[i+1];break;
case '+': fnst+=fnst[i+1];break;
}
fnst[i+1]=0;foper=foper[i+1];
for (u=i+1;u<p1;u++)
{
if (foper[u+1]) {foper=foper[u+1];foper[u+1]=(char)-858993460;}
if (fnst[u+1]) {fnst=fnst[u+1];fnst[u+1]=0;}
} i=-1;
}
}
i++;
}
switch (op)
{
case '+': op='@';break;
case '-': op='+';break;
case '*': op='-';break;
case '/': op='*';break;
}
oper=(char)-858993460;
}
return fnst[0];
}
//----------------------------------------------------------------------------------------------
void ArtToMas(char art[])
{
int ii=0;
int k=0;p=0;
while (art[ii])
{
j=0;
if (art[ii]=='*'||art[ii]=='/'||art[ii]=='+'||art[ii]=='-')
{
oper[p++]=art[ii++];
}
else
{
while (art[ii]>='0'&&art[ii]<='9')
buff[j++]=art[ii++];
buff[j]='\0';
nst[k]=(float)atof(buff);
k=k++;
}
}
k=0;
}
//----------------------------------------------------------------------------------------------