Răspuns :
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;
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!