Cod sursa(job #385087)

Utilizator Doana_Cristiancristi09 Doana_Cristian Data 22 ianuarie 2010 08:02:55
Problema A+B Scor 0
Compilator cpp Status done
Runda lucrare_xi_d Marime 1.22 kb
//nr 2
#include<iostream.h>
int n,ok,x[20];

struct nod{
	float inf;
	nod *dr,*stg;};
	nod *p,*u;
//a)
	void creare(){
		c=new nod;
		nod *c;
		c=new nod;
		cin>>c->inf;
		c->stg=c->dr=NULL;
		p=u=c;
		for(int i=1;i<n;i++)
			c=new nod;
			cin>>c->inf;
			u->dr=c;
			c->stg=u;
			c->dr=NULL;
			u=c;
}
void afisare(){
  nod *c;
  while(c){
	  cout<<c->inf<<" ";
	  c=c->dr;
  }
}
//b)
void produs(){
	int i;
	long pr=1;
	c=p;
	while(c){
	if(c->inf==int(c->inf))
		pr=pr*c->inf;
		c=c->adr;}
	cout<<pr;
}
//c)
void inserare(){
		nod *c,*nou;
		c=u;
		for(int i=1;i<=n;i++)
			c=c->dr;
		nou=new nod;
		cin>>nou->inf;
		nou->dr=c->dr;
		c->dr->stg=nou;
		nou->stg=c;
		c=dr=nou;
}
//d)
void verificare(){
	nod *c;
	c=p;ok=0;
	for(i=1;i<=n;i++){
		if(c->inf<c->adr->inf){
			ok=1;
			if(ok==1)
				cout<<"informatiile sunt crescatoare"<<" ";
			else cout<<"informatiile sunt descrescatoare"<<" ";
			cout<<endl;}
	}
}
//e)
void stergere(){
	nod *c,*d;
	c=p;
	while(c->dr->inf!=x){
		c=c->dr;
		d=c->dr;
	}
	c->dr=d->dr;
	d->dr->stg=c;
	delete d;
}
int main(){
	cin>>n;
	creare();
	afisare();
	produs();
	inserare();
	verificare();
	stergere();
	return 0;
}