Pagini recente »
Borderou de evaluare (job #492785)
|
Borderou de evaluare (job #408071)
|
Borderou de evaluare (job #128216)
|
Borderou de evaluare (job #156979)
|
Cod sursă (job #145102)
Cod sursă (job
#145102)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fi("bizar.in");
ofstream fo("bizar.out");
int eroare;
char first, item;
int parseNumber() {
while (first == ' ')
first = fi.get();
if ( !(first >= '0' && first <= '9') )
eroare = 1;
int number = 0;
while (first >= '0' && first <= '9') {
number = number * 10 + first - '0';
first = fi.get();
}
return number;
}
char parseItem() {
while (first == ' ')
first = fi.get();
char delim = first;
first = fi.get();
return delim;
}
int E() {
int number = parseNumber();
item = parseItem();
vector<int> v;
while (item == '(') {
v.clear();
while (item != ')') {
int new_number = E();
v.push_back(new_number);
}
item = parseItem();
number = v[(number - 1) % v.size()];
if (item == '\n')
return number;
}
if (item == ',' || item == ')') {
return number;
}
eroare = 1;
return 0;
}
int main()
{
first = fi.get();
printf("%d", E());
if (eroare == 1)
printf("\nerror!!\n\n\n");
return 0;
}