Cod sursa(job #504645)

Utilizator CeachiCeachi Bogdan Ceachi Data 28 noiembrie 2010 13:14:49
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
ifstream fin("reteta2.in");
ofstream fout("reteta2.out");
struct produs {
char nume[30];
int c;
};
int main() {
produs v[100]={{{0}},{0}},aux;
char s[2000],*p,*q;
int i,n=1,j,t=0,k,l;
fin.get(s,2000);
p=s;
l=strlen(s);
j=-1;
for(i=0;i<=l;i++)
if(s[i]!=' ')  s[++j]=s[i];
l=j;
while(*p) {
	while(*p&&!isalpha(*p)) p++;
	if(*p) {
	q=p;
	while(*q&&isalpha(*q)) q++;
   strncpy(v[n].nume,p,q-p);
   v[n].c=atoi(q);
	  p=q+1;
	   while(*p&&isdigit(*p)) p++;
	n++;
	}
}
n--;
p=s;
for(i=1;i<l;i++)
	if(s[i-1]==')'&&isdigit(s[i])) {
	p=s+i;
	t+=atoi(p);
	}
fout<<t<<"\n";
for(i=1;i<n;i++)
	for(j=i+1;j<=n;j++)
		if(strcmp(v[i].nume,v[j].nume)>0) {
			 aux=v[i];
			 v[i]=v[j];
			 v[j]=aux;
			 }
fout<<v[1].nume<<" ";
k=v[1].c;
for(i=2;i<=n;i++)
	 if(strcmp(v[i].nume,v[i-1].nume)==0) k=k+v[i].c;
	 else {
		fout<<k<<"\n";
		fout<<v[i].nume<<" ";
		k=v[i].c;
		}
fout<<k;
return 0;
}