PDA

Visualizza la versione completa : [C++] Problema array


Giacoomo
29-10-2012, 19:04
Ciao a tutti, ho un problema con gli array in questo programma: qualcuno saprebbe aiutarmi??? :messner: Perché lo esegue ma non esce il risultato desiderato (ad esempio la somma è sabagliata o non mi indica l'array corretto...ecc....

/*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????? :dhò: :dhò:

Grazie :) :) :)

oregon
29-10-2012, 20:09
Ma questo

int array[]={}

che vuol dire ?

E perché tutte le funzioni non restituiscono nessun valore pur essendo di tipo int ?

Giacoomo
30-10-2012, 17:42
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??

MItaly
30-10-2012, 17:52
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> (http://en.cppreference.com/w/cpp/container/vector)) che gestisce autonomamente questo ed altri problemi.

Loading