Pagini recente » Monitorul de evaluare | Cod sursa (job #613385) | Cod sursa (job #2750786) | Cod sursa (job #2431228) | Cod sursa (job #661747)
Cod sursa(job #661747)
#include <fstream>
#define l 50
#define ex M[X][Y]
using namespace std;
ifstream f("mxl.in");
ofstream g("mxl.out");
int i,j,n,m,k,a[l][l],x,y,p,q;
char cx,c1;
string M[l][l];
int bom(char x)
{
if (x>='0'&&x<='9') return 1;
if (x==':') return 2;
if (x=='+') return 3;
}
int rez(int X,int Y)
{
int poz=0,en=ex.length(),s=0,nr;
if (a[X][Y]!=0) return a[X][Y];
while (poz<en) if (bom(ex[poz])==3||poz==0)
{
nr=0;
for(poz++; poz<en||bom(ex[poz])==2||bom(ex[poz])==3; poz++)
nr=nr*10+(ex[poz]-'0');
if (poz>=en||bom(ex[poz])==3)
{
s+=nr,poz++;
continue;
}
if (bom(ex[poz])==2)
{
c1=nr,nr=0;
for(poz++; poz<en||bom(ex[poz])==2||bom(ex[poz])==3; poz++)
nr=nr*10+(ex[poz]-'0');
s+=rez(c1,nr);
}
}
a[X][Y]=s;
return s;
}
int main()
{
f>>n>>k;
for(i=1; i<=k; i++)
{
f>>x>>y>>cx>>c1;
if (c1!='=') a[x][y]=c1-'0';
else f>>M[x][y];
}
for(p=1; p<=n; p++)
for(q=1; q<=m; q++) a[p][q]=rez(i,j);
f.close();
g.close();
return 0;
}