Traccia da svolgere!

di il
1 risposte

Traccia da svolgere!

Salve a tutti, sono un ragazzo che sta facendo ingegneria informatica:) , martedi ho un esame sul c++! esercitandomi mi sono imbatutto in una traccia del prof, e non capisco come va affrontata o fatta. L ho svolta ma non so se va bene, quindi chiedevo aiuto a qualcuno x farmi capire bene le cose..grazie a tutti.


Si scriva un programma che utilizzi la struttura dati più adatta per gestire una playlist di brani musicali, in cui il generico elemento deve contenere i seguenti dati:

titolo del brano
nome dell'esecutore
anno della registrazione
durata del brano in secondi

Il programma deve prevedere inizialmente la lettura dell'elenco per un numero N di brani specificato dall'utente. Una volta inserito l'elenco, il programma deve prevedere la lettura di un valore T e procedere all'eliminazione dall'elenco dei brani di durata inferiore a T. L'elenco ottenuto al termine delle eliminazioni deve essere quindi ordinato per durata del brano in senso decrescente e stampato, riportando tutti i dati di ciascun brano.



#include <cstdlib>
#include <iostream>

using namespace std;

struct brani
{
char titolo[32];
char nomec[32];
int anno;
float durata;

};
void ordina(brani b[],int n);
void elimina(brani b[],int n,int pos);
int cerca(brani b[],int n,float x);
void leggi(brani b[],int n);
void stampa(brani b[],int n);
int main(int argc, char** argv) {
    brani b[200];
    int n;
    int pos;
    float t;
    cout<<"Quanti brani vuole inserire:"<<endl;
    cin>>n;
    leggi(b,n);
    ordina(b,n);
    cout<<"Inserisci la durata del brano:"<<endl;
    cin>>t;
    pos=cerca(b,n,t);
    if(pos>=0)
    {
        elimina(b,n,pos);
        n--;
    }
    stampa(b,n);

    return 0;
}

void leggi(brani b[],int n){
    for(int i=0;i<n;i++)
    {
    cout<<"Titolo brano:"<<endl;
    cin.ignore();
    cin.getline(b[i].titolo,32);
    cout<<"Nome artista:"<<endl;
    cin.ignore();
    cin.getline(b[i].nomec,32);
    cout<<"Anno pubblicazione:"<<endl;
    cin>>b[i].anno;
    cout<<"Durata brano:"<<endl;
    cin>>b[i].durata;


    }


}
void stampa(brani b[],int n){
    for(int i=0;i<n;i++)
    {
    cout<<"Anno pubblicazione"<<b[i].anno<<endl;
    cout<<"Titolo brano:"<<b[i].titolo<<endl;
    cout<<"Artista del brano:"<<b[i].nomec<<endl;
    cout<<"Durata brano:"<<b[i].durata<<endl;


    }




}
int cerca(brani b[],int n,float x)
{
int posin,posfin,posmed,pos;
pos=-1;
posin=0;
posfin=n-1;
while(pos<0 && posin<=posfin)
{
posmed=(posin+posfin)/2;
if(x>b[posmed].durata)
    posin=posmed+1;
else if(x<b[posmed].durata)
    posfin=posmed-1;
else
    pos=posmed;
}
return(pos);


}
void elimina(brani b[],int n,int pos)
{
for(int i=pos;i<n-1;i++)
    b[i]=b[i+1];
}
void ordina(brani b[],int n)
{
for(int i=0;i<n-1;i++)
    for(int j=i+1;j<n;j++)
        if(b[i].durata<b[i].durata)
            swap(b[i],b[j]);

}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte