Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C++] Problema array

  1. #1

    [C++] Problema array

    Ciao a tutti, ho un problema con gli array in questo programma: qualcuno saprebbe aiutarmi??? Perché lo esegue ma non esce il risultato desiderato (ad esempio la somma è sabagliata o non mi indica l'array corretto...ecc....
    codice:
    /*Fare un programma che letti da tastiera n numeri interi,
    li memorizzi in un array dinamico. Al termine dell'inseriento (-1)
    fare la somma dei numeri dall'inizio dell'array e indicare il numero
    dell'array che supera la soglia X*/ 
    
    #include <iostream>
    
    using namespace std;
    
    int acquisisci(),somma(),specifiche();
    void ripeti();
    
    
    int array[]={}, len, soglia;
    
    int main()
    {
        system("CLS");
        specifiche();
        acquisisci();
        somma();
        ripeti();
    
    }
    
    int acquisisci()
    {
        int i=0;
        for(i=0;;i++)
        {
            cout<<"Inserire valore per array["<<i<<"]: ";
            cin>>array[i];
    
            if(array[i]==0)
            {
                break;
            }
        }
        len=(i-1);
    }
    
    int somma()
    {
        int somma=0,i;
        bool ctrl=false;
        for(i=0;i<len;i++)
        {
                somma+=array[i];
                if(somma>soglia && ctrl==false)
                {
                    ctrl=true;
                    cout<<endl<<"L'array che supera la soglia ["<<soglia<<"] e\' l'Array["<<i<<"] che vale "<<array[i]<<endl;
                }
        }
        cout<<"Somma = "<<somma<<endl;
    }
    
    void ripeti()
    {
         char risp;
         cout<<endl<<"Ricominciare [s/n] ?"<<endl<<"Risposta: ";
         cin>>risp;
         if(risp=='s' || risp=='S')
         {
                      main();
         }
         else
         {
                      system("pause");
         }
    
    
    }
    
    int specifiche()
    {
        cout<<"Inserisci la soglia massima: ";
        cin>>soglia;
    }
    Qualcuno saprebbe aiutarmi?????

    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,298
    Ma questo

    int array[]={}

    che vuol dire ?

    E perché tutte le funzioni non restituiscono nessun valore pur essendo di tipo int ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3

    Array dinamico

    Vorrei fare un array dinamico ad una dimensione che termini quando l'utente inserisce il valore 0 (zero). Quindi l'array inizialmente non ha valore e si incrementa di volta in volta fino a quando non si inserisce zero. Altrimenti devo inizializzarlo con un gran numero di elementi: esempio: int array[100];
    allora così l'utente può inserire da 0 a 100 valori, ma nel caso deva inserirne di più non può (o meglio può ma il valore viene registrato sopra ad altri valori potenzialmente utili). Inlotre un array[100] ha cento elementi che potrebbero (ad esempio se l'utente inserisce solo 20 valori) occupare inutilmente memoria. Qualche suggerimento??

  4. #4
    Gli array "normali" C++ sono a dimensione fissata, per ottenere quello che vuoi devi allocare un array dinamicamente, riallocandolo quando lo spazio non basta. La libreria standard fortunatamente fornisce una struttura dati preconfezionata (std::vector<Tipo>) che gestisce autonomamente questo ed altri problemi.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.