PDA

Visualizza la versione completa : [C++] semplice quesito su gestione array


Kamui
01-01-2003, 19:10
:d56:

vorrei semplicemente che l'utente inserisca un array di interi di dimensione sconosciuta, e che il programma gli dica quanti interi contiene il suo array e ne dia la somma... ho provato cos, ma funziona solo se l'utente inserisce maxDIM elementi...:bubu:


const int maxDIM=100;
int array[maxDIM];
int i=0;
int num=0, somma=0;
char END='E';

cout <<endl<< setw(50) << "OPERAZIONI CON ARRAY-MATRICI\n\n";

cout << "\n\n\tinserisci i valori e digita E quando hai finito" << endl<<endl;

do{
cin >> array[i];
somma += array[i];
num++;
i++;
} while(END!='E' || i<maxDIM);

/* VARIABILE CON CICLO FOR

for (i=0; END != 'E' || i<maxDIM; i++){
cin >> array[i];
somma += array[i];
num++;
}*/

/* cout << "\n\n\tHai inserito "<< num <<" valori.";

cout << "\n\n\tLa somma dei valori inseriti vale "<< somma<<endl;

chi mi aiuta? :master:

$$$
01-01-2003, 20:44
allora...

quello che t serve 1 array creato dinamicamente e riallocato se necessario

tu devi solo tenere traccia dei valori inseriti con un contatore e fare un ciclo tipo while valore_inserito != 'carattere di end'...

Kamui
01-01-2003, 22:57
Non ho capito assolutamente nulla :fagiano:

Michele Facchin
01-01-2003, 23:42
Da quello che ho capito vuoi sta roba qui:


#include <iostream.h>
#include <stdlib.h>
#include <string.h>

int main(){
int maxDIM=100,j=0,somma=0;
char array[10][maxDIM];
for (j=0; j<maxDIM; j++){
cin>>array[j];
if (strcmp(array[j],"E")!=0)
somma+=atoi(array[j]);
else {
cout<<"Somma: "<<somma<<endl;
cout<<"Interi: "<<j<<endl;
exit(0);
}
}
}

Era questo che volevi?
PS: E' testato con il compilatore g++ per UNIX, con gli altri non so se vada.
Comunque il programma non f altro che creare un array di stringhe, e ogni volta che ne inserisci una, se essa corrisponde alla "E", esce dal programma e ti f vedere la somma (somma) e il numero di interi (j), se invece la stringa non corrisponde ad "E", converte in intero la stringa e la somma alla variabile somma.

Kamui
02-01-2003, 13:26
Ahum, ma tu hai mica creato una matrice? :d56:

io volevo qualcosa di pi semplice, un array di interi monodimensionale, del tipo

1 2 5 7 3

-Hai inserito 5 caratteri
-La somma vale 18

e non so usare string.h :fagiano:

Michele Facchin
02-01-2003, 13:29
Si ma se vuoi confrontare lettere e numeri dovrai pur creare un array di stringhe, e poi fare i vari confronti con la lettera "E".

Massimo puoi fare:

"Quanti interi vuoi inserire?"

E allora <stringh.h>,<stdlib.h> e if non servono pi! :)
L'array di stringa serve solo per convertire da "stringa" a "intero" il numero che hai inserito nel cin, e per sapere se hai inserito il carattere "E".

Kamui
02-01-2003, 14:13
Ah, quindi non si pu fare senza ricorrere a string.h?
avevo pensato anch'io di fargli inserire una variabile "quanti ne vuoi inserire", per volevo evitarlo per renderlo pi comodo all'utente :p

il carattere E cmq me lo riconosce almeno come "tappo", nel senso che se digito 'E' mi considere concluso l'array inserito e va avanti col programma :bh:

Michele Facchin
02-01-2003, 14:32
"E" non un intero.


#include <iostream.h>

void main(){
int x;
cin>>x;
cout<<x<<endl;
}

Prova ad inserire E su questo programma e vedere cosa ti scrive in output.

O fai nel modo che converte la stringa in intero, cosi puoi anche comparare, oppure fai nel modo che dice:

"Quanti numeri vuoi inserire?"

che non c' bisogno del <string.h> ecc..

r0x
02-01-2003, 21:59
Per uscire dal ciclo spingi CTRL+D (EOF):



#include <vector>
#include <numeric>

using namespace std;

int main( int argc, char* argv[] )
{
int input;
vector< int > array;

cout << "Inserisci i numeri che vuoi (^D per finire):" << endl;

cin >> input;

while( !cin.eof() )
{
array.push_back( input );

cout << "Inserito: " << input << endl;
cin >> input;
}

cout << "Hai inserito " << array.size() << " elementi e la loro somma e`: " << accumulate( array.begin(), array.end(), 0, plus< int >() ) << endl;

return 0;
}


Ciao.

ropedancer
02-01-2003, 23:14
Per come ho inteso io il tuo prob. devi semplicemente creare un vettore (array) dinamico, tramite le istr. malloc (se usi c) e new(se usi c++).
Punatori....

Loading