Informatică, întrebare adresată de emalica787p6lpxs, 8 ani în urmă

Pls, ajutați- mă să fac un program in c++ care să afișeze cele de mai jos, una sub alta. Să le poată clasa
,Cu ajutorul funcției formate, iar dacă completez la 1, 2, 3, șamd până la 6, și repet procedeul de vreo 3 ori cu alte melodii, când scriu 7, să îmi claseze , cu spatii intre ele, după vârsta vedetei. Pls, dau coroană și 99 de puncte. E urgent, am nevoie mâine de acest proiect


1. Nume melodie:

2. Numele artistului care o cântă:

3. Vârsta vedetei care o cântă:

4. Zodia vedetei care o cântă

5. Anul apariției melodiei:

6. Album

7. Clasare



8. Șterge tot



1Viserys: cand spui sa claseze, te referi sa le ordoneze crescator? daca da, trebuie afisat doar numele melodiei cand le claseaza? si vrei sa iti deschida meniu la cmpletare? adica sa apara cum ai scris tu, apoi tastezi tu unul dintre numere (1-6) si completezi asa?

Răspunsuri la întrebare

Răspuns de 1Viserys
1

bafta maxima maine, iti recomand sa il citesti si sa il testezi putin inainte sa il predai. as fi comentat dar stau deja de aproape 2 ore la el si e deja 2:39 :))

eu am verificat tot felul de situatii si am rezolvat orice posibila eroare (sper). stergerea mea nu este chiar o stergere, doar se va comporta ca si cum nu ar mai exista datele introduse anterior si daca vrei sa faci alta lista apoi o sa le suprascrie. asta a fost cel mai apropiat lucru pe care am stiut sa il fac. still, better than nothing.


#include <iostream>

#include <cstring>

using namespace std;

struct melodie{

char nume[50];

char artist[50];

int varsta;

char zodie[50];

int an;

char album[50];

int alegere;

};

melodie x[50];

struct afisare{

int age;

char name[50];

};

melodie AdaugareMelodie()

{

melodie m;

char s[50];

cout<<"Introduceti numele melodiei: ";

cin.get(s, 50);

cin.get();

strcpy(m.nume, s);

cout<<endl<<"Introduceti numele artistului care o interpreteaza: ";

cin.get(s, 50);

cin.get();

strcpy(m.artist, s);

cout<<endl<<"Introduceti varsta artistului: ";

cin>>m.varsta;

cin.get();

cout<<endl<<"Introduceti zodia artistului: ";

cin.get(s, 50);

cin.get();

strcpy(m.zodie, s);

cout<<endl<<"Introduceti anul aparitiei piesei: ";

cin>>m.an;

cin.get();

cout<<endl<<"Introduceti numele albumului: ";

cin.get(s, 50);

cin.get();

strcpy(m.album, s);


cout<<"Daca mai doriti sa introduceti o melodie, apasati 1.\nDaca doriti sa efectuati o clasare dupa varsta interpretului, apasati 7.\nDaca doriti sa efectuati o stergere totala, apasati 8.\nDaca doriti sa terminati, apasati 0. ";

cin>>m.alegere;

cin.get();


return m;


}


int clasare(int l)

{

afisare v[l];

int m=x[0].varsta, M=x[0].varsta;

if (l!=0){for(int i=1; i<=l; i++)

{

if(x[i].varsta>M) M=x[i].varsta;

if(x[i].varsta<m) m=x[i].varsta;

}}

int j=0;

for(int i=m; i<=M; i++)

{

for(int k=0; k<=l; k++)

{

if(x[k].varsta==i)

{

v[j].age=x[k].varsta;

strcpy(v[j].name, x[k].nume);

j++;

}

}

}

cout<<endl<<"Clasare: ";

if(l!=0){for(int i=0; i<l; i++)

cout<<v[i].name<<", ";}

cout<<v[l].name<<endl;


cout<<endl<<"Daca doriti sa mai adaugati melodii, apasati 1.\nDaca doriti sa efectuati o stergere totala apasati 8.\nDaca doriti sa terminati, apasati 0. ";

int ch;

cin>>ch;

cin.get();

if(ch!=1 && ch!=8 && ch!=0) do

{

cout<<endl<<"Va rugam alegeti una dintre variantele 0(pentru a termina), 1 (pentru a adauga mai multe melodii) sau 8(pentru a efectua o stergere totala. Multumim. ";

cin>>ch;

cin.get();

}while(ch!=1 && ch!=8 && ch!=0);

return ch;

}


int deleteAll(int &l)

{

l=0;

cout<<"Daca doriti sa terminati, apasati 0. Daca doriti sa adaugati melodii, apasati 1. ";

int ch;

cin>>ch;

cin.get();

if(ch!=1 && ch!=0) do

{

cout<<endl<<"Va rugam alegeti una dintre variantele 1 (pentru a adauga melodii) sau 0(pentru a termina). Multumim. ";

cin>>ch;

cin.get();

if(ch==1 || ch==0) break;

}while(ch!=1 && ch!=0);

return ch;

}


int main()

{

int i=0;

label:

x[i]=AdaugareMelodie();

while(x[i].alegere==1)

{

i++;

x[i]=AdaugareMelodie();

}

if(x[i].alegere==0) return 0;

int c;

if(x[i].alegere==7)

c=clasare(i);

if (c==0) return 0;

else if(x[i].alegere==8)

goto next;

if (c==1) {

i++;

goto label;}

next:

int val=deleteAll(i);

if(val==1) goto label;

return 0;

}


emalica787p6lpxs: Mulțumesc foarte mult
1Viserys: cu drag :)
Alte întrebări interesante