Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202

    [C++] semplice quesito su gestione array



    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:

    codice:
    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:
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    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'...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    Non ho capito assolutamente nulla
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  4. #4

    oo00oo---^_^---oo00oo

    Da quello che ho capito vuoi sta roba qui:
    codice:
    #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.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    Ahum, ma tu hai mica creato una matrice?

    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
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  6. #6
    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".

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    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

    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
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  8. #8
    "E" non è un intero.
    codice:
    #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..

  9. #9
    Per uscire dal ciclo spingi CTRL+D (EOF):

    codice:
    #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.

  10. #10
    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....

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 © 2024 vBulletin Solutions, Inc. All rights reserved.