Cod sursă (job #719984)

Utilizator avatar Onufrei_Andrei Onufrei Andrei Onufrei_Andrei IP ascuns
Problemă Zapada (clasele 11 și 12) Compilator cpp-32 | 2,32 kb
Rundă Arhiva de probleme Status evaluat
Dată 17 mai 2023 16:11:38 Scor 0
#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;
}