Cod sursa(job #1758995)

Utilizator alex.vasiuVasiu Alexandru alex.vasiu Data 18 septembrie 2016 12:41:24
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <stdio.h>
#include <fstream.h>

int	plus_minus(char *s, int i);
int get_number(char *s, int *i);

int	eval(char *s)
{
	//int r;

	/*r = plus_minus(s);
	while (*s != '\0' && *s >= '0' && *s <= '9')
	{
		r = r * 10 + (*s - '0');
		s++;
	}*/
	return (plus_minus(s, 0));
}

int	plus_minus(char *s, int i)
{
	int r;

	r = 0;
	while (s[i] != '\0' && s[i] >= '0' && s[i] <= '9')
	{
		r = r * 10 + (s[i] - '0');
		i++;
	}
	while (s[i] == '-' || s[i] == '+')
	{
		i++;
		if (s[i - 1] == '-')
			r -= get_number(s, &i);
		else
			r += get_number(s, &i);
	}
	return (r);
}

int	get_number(char *s, int *i)
{
	int r;

	r = 0;
	while (s[*i] != '\0' && s[*i] >= '0' && s[*i] <= '9')
	{
		r = r * 10 + (s[*i] - '0');
		*i = *i + 1;
	}
	return (r);
}

int	eval_expr(char *str)
{
//	trim(str);
	//if (str == 0)
		//return (0);
	return (plus_minus(str, 0));
}

int main()
{
	ifstream f("evaluare.in");
	ofstream g("evaluare.out");
	char *s;
	f.get(s, 100000);
	g << eval_expr(s);
}