Pagini recente »
Istoria paginii utilizator/vreausastiu
|
Cod sursă (job #719984)
Cod sursă (job
#719984)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("prob3.in");
ofstream fout("prob3.out");
int n,x;
typedef struct cell {
int info;
cell *next;
} *coada;
coada p, r, v;
int maxx;
void read_cd() {
p=NULL;
while(fin>>x){
r= new cell;
r->info=x;
r->next = NULL;
if (p == NULL) {
p = r;
v = r;
} else {
v->next = r;
v = r;
}
}
}
void write_cd() {
r = p;
while(r){
fout << r->info << " ";
r = r->next;
}
fout << endl;
}
void sort_descresc_cd(){
for (v = p; v->next!=NULL; v=v->next){
for(r=v->next; r ;r=r->next){
if(r->info > v->info) swap (r->info, v->info);
}
}
}
void nr_egal_max(){
r = p;
int count=0;
while(r){
if(r->info == maxx) count++;
r=r->next;
}
fout<<"Nr maxim se repeta de : "<<count<<endl;
}
void sum_5_cd() {
int sum_5=0;
r = p;
while(r){
if(r->info%10==5 || r->info%10==-5) sum_5+=r->info;
r = r->next;
}
if(sum_5==0) fout<<"Nu exista numere cu ultima cifra 5"<<endl; else fout<<"cu ultima cifra 5: "<<sum_5<<endl;
}
void poz_cd(){
int pp=0;
int j=0;
r = p;
while(!p){
j++;
if(r->info>0) pp=j;
r=r->next;
}
if(p==0) fout << "Nu sunt nr pozitive" << endl; else fout<<"Locul nr pozitiv: "<<pp<<endl;
}
int main() {
read_cd();
fout<<"Coada: ";
write_cd();
sum_5_cd();
poz_cd();
sort_descresc_cd();
fout<<"Coada sortata: ";
write_cd();
fout<<"Nr max: "<<p->info<<endl;
maxx = p->info;
nr_egal_max();
r=p; v=p; // stergem numerele pare
while (r) { if (r->info %3 ) {v=r;r=r->next;}
else if (r==p){ p=r->next; delete r; v=p; r=p;}
else if (r->next==NULL)
{ v->next=NULL; delete r; r=NULL; }
else { v->next=r->next; delete r; r=v->next; }
}
if (p==NULL) fout<<"Coada este vida"<<"\n"; else fout<<"Coada dupa delete: "; write_cd();
return 0;
}