• T4CH
  • NEWS
  • VIDEO
Forum > Software

Risoluzione problema di informatica in C++

Discussione inserita in 'Software' da markfons, 31 Gennaio 2009.

  1. markfons techNewbie

    Risoluzione problema di informatica in C++

    Come Potreste aiutarmi per risolvere qst problema di informatica in c++?

    ho qst classe:

    Code:
    class Libro
    
    {
    
    public:
    
    Libro();
    
    Libro( string t, int p, int pr);
    
    string get_titolo() const;
    
    int get_pagine() const;
    
    int get_prezzo() const;
    
    private:
    
    string titolo;
    
    int pagine;
    
    int prezzo;
    
    };
    adesso devo scrivere una funzione di questo tipo



    void selection_sort(vector<Libro>&v )



    che ordina un vettore in base al prezzo del libro in ordine crescente e in caso di prezzo uguale lo ordina in base al titolo. Potete dirmi come si fa?



    Possibilmente potete dirmi come si fa anche in ordine decrescente?

    Grazie:)





    edit fabrizio: ma cosa ci vuole la lente di ingrandimento?

    la prossima volta scrivi con il carattere di default...e se ti è possibile senza abbreviarestorpiare le parole..please!
    ;)
    markfons, 31 Gennaio 2009
    #1
  2. Davide Amministratore

    Modifico anche io il post, in modo da usare i tag "code".
    Davide, 1 Febbraio 2009
    #2
  3. Anzolin techNewbie

    Ciao io non sono molto pratico delle funzioni void comunque basta che cambi il mio pogramma mettendo nella funzione l'array libri e prezzo e la variabile max.

    Ti posto il codice chiedi se c'e qualche problema,prova a vedere se funziona che magari ho fatto qualche errore comunque se non dovesse funzionare penso di averti dato uno spunto

    Code:
    
    #include<iostream>
    
    using namespace std;
    
    int main()
    
    {
    
        string libro[10],libriordinati[10];
    
        float prezzo[10],prezzoordinato[10],max,minimoprecedente=0,variabile;
    
        int a=0;
    
        bool diversi;
    
        for(int r=0;r<10;r++)
    
        {
    
            cout<<"Inserisci il nome del libro "<<endl;
    
            cin>>libro[r];
    
            cout<<"Inserisci il prezzo"<<endl;
    
            cin>>prezzo[r];
    
            if(prezzo[r]>max)
    
            {max=prezzo[r];}
    
        }
    
        do{
    
            variabile=max;
    
            diversi=false;
    
            for(int j=0;j<10;j++)
    
            {
    
               if(prezzo[j]<variabile && prezzo[j]>minimoprecedente)
    
               {
    
                   libriordinati[a]=libro[j];
    
                   prezzoordinato[a]=prezzo[j];
    
                   variabile=prezzo[j];
    
               }
    
               if(prezzo[j]==minimoprecedente)
    
               {
    
                for(int t=0;t<libro[j].length() && t<libriordinati[a].length() && diversi==false;t++)
    
                {
    
                 if(libro[j][t]!=libriordinati[a][t])
    
                 {
    
                  diversi=true;
    
                  if(libro[j][t]<libriordinati[a][t])
    
                  {libriordinati[a]=libro[j];}
    
                 }
    
                }
    
               }
    
            }
    
            minimoprecedente=variabile;
    
            a++;
    
        }while(a<10);
    
        for(int g=0;g<10;g++)
    
        {cout<<prezzoordinato[g]<<"  "<<libriordinati[g]<<endl;}
    
    return 0;
    
    }
    
    
    Anzolin, 2 Febbraio 2009
    #3
  4. Anzolin techNewbie

    Ti spiego come funziona prima controllo in base al prezzo e li penso che tu non hai problemi quanto devi ordinarli in base al nome e' li che c'e il problema.

    Una caratteristica delle stringhe e' che possono essere usati come array e quindi puoi confronare una lettera della stinga(per esempio "nomestringa"[0] e' la prima lettera della stringa,se perr esempio si ha un array di stringhe per verificare la prima lettera della seconda stringa si fa cosi: "nomestringa"[1][0]) alla volta finche non si arriva alla fine.

    Per dare un limite al ciclo che serve per controllare le varie lettere basta imporre come limite "nomestringa".length()
    Anzolin, 2 Febbraio 2009
    #4
Password dimenticata?
SU TERMINI DI SERVIZIO CONTATTACI