Scegliere un elemento di un vettore

di il
20 risposte

Scegliere un elemento di un vettore

Buonasera !

Sto studiando i vettori.
Mi sono creato un esempio con un vettore, tipo int, con 5 elementi, e finché uso la dizione vett[1] oppure vett[0] nelle operazioni di somma ottengo il risultato corretto.
Quello che vorrei fare è poter scegliere tramite printf e scanf l'elemento da usare nei calcoli.
Teoricamente, si può fare o no ?

20 Risposte

  • Re: Scegliere un elemento di un vettore

    Se ho capito cosa vuoi dire, utilizza tranquillamente una variabile come indice. Ad esempio

    vet
  • Re: Scegliere un elemento di un vettore

    Inserisco un esempio:
    
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    	int vet[3] = {0};
    	int i, j;
    	int somma;
    	i = 0;
    	j = 0;
    	
    	for(i=0; i<3; i++){
    		printf("\n\n inserisci tre numeri nel vettore:  ");
    		scanf("%d", &vet[i]);}
    	
    	for(i=0; i<3; i++){
    		j++;
    		printf("\n\n visualizza l'elemento %d del vettore, con valore %d",j,vet[i]);}
    	somma = vet[0] + vet[1] + vet[2];
    	printf("\n\n la somma e' pari a %d", somma);
    	return 0;
    }
    
    Questo esempio funziona bene.
    La sua variante prevede di usare un numero contenuto nel vettore, per usarlo nei calcoli.
    Nel codice ho usato:
    
    somma = vet[0] + vet[1] + vet[2];
    
    ma si tratta di valori statici.

    Io voglio poter scegliere quale numero inserire in una somma o altra operazione, usando il printf / scanf o altri metodi che, se esistono, al momento non conosco.
  • Re: Scegliere un elemento di un vettore

    Mica l'ho capito che vuoi dire.
    Nel codice mostrato la variabile j non serve a nulla e la somma si fa con

    somma = somma + vet;

    Se ti spieghi meglio ...
  • Re: Scegliere un elemento di un vettore

    Nel mio esempio nel vettore ci sono 3 elementi.
    Supponiamo che ce ne sono 10.
    Voglio sommare l'elemento 2 e l'elemento 7.
    Nel codice scrivo: somma = vet[2] + vet[7];
    in questo modo i due valori vet[2] e vet[7] sono sempre quelli.

    Ma se avessi voluto scegliere da tastiera i due elementi ?
  • Re: Scegliere un elemento di un vettore

    Iniziamo con la domanda fondamentale: su quale libro stai STUDIANDO?

    Se non hai un libro, vai in libreria e ACQUISTA uno, oppure vai in biblioteca e prendi uno in prestito.
    In alternatica c'e' sempre Amazon.

    Se stai utilizzando i vettori, allora VUOL DIRE che sai gia' che cosa sono le strutture di controllo, come si accede ad un vettore, che cosa e' una variabile e che cosa e' un indice.
  • Re: Scegliere un elemento di un vettore

    Usa due variabili i e j per l'input con lo scanf di 2 e 7

    Poi sommi

    somma = vet + vet[j];

    Senza cicli for o altro ...

    Ed effettivamente ... ma da dove e COME studi? Impossibile che queste cose non ci siano in un libro ... esempi simili o spiegazioni di cosa sono gli indici, le variabili e roba di base ....

    Ma poi la parte fondamentale della programmazione è anche la SPERIMENTAZIONE ... prova da solo! Il computer non esplode! Come indici del vettore puoi usare una qualsiasi espressione, variabile, anche un altro elemento di vettore ... prova !

    Se hai usato i come indice in vet nel tuo codice, NON TI VIENE IN MENTE che puoi utilizzarlo anche per risolvere il tuo problema?
  • Re: Scegliere un elemento di un vettore

    Sto usando un paio di libri.
    Ho aperto la discussione per sapere quale argomento approfondire.
    Non mi interessa il codice in C già pronto.
    Ho postato l'esempio giusto per far capire.
    Per cui, se avete capito cosa ho chiesto, che argomento devo approfondire ?
  • Re: Scegliere un elemento di un vettore

    Leggi la mia risposta precedente. Non devi approfondire nulla. Usa le variabili come indici COME HAI FATTO nel codice con vet

    SE non arrivi da solo a risolvere queste cose allora non hai capito l'argomento principale (i vettori)
  • Re: Scegliere un elemento di un vettore

    Dei vettori ho capito che servono per memorizzare un certo numero di elementi.
    Il primo indice parte da zero ed arriva al limite superiore.
    Per cui in corrispondenza di 0 c'è il primo numero (inserito con lo scanf);
    in corrispondenza di 1 c'è il secondo numero, e cosi via.

    Quello che non riesco a fare e scegliere in un vettore di 10 numeri, usando lo scanf, un numero, ad esempio il valore che corrisponde alla prima posizione 0, e sommarlo con un altro numero che corrisponde alla posizione 6.

    Sto provando ad usare vet nello scanf e nella operazione di somma, ma i risultati sono sballati.
  • Re: Scegliere un elemento di un vettore

    O tu non leggi quello che ti si scrive o la programmazione non fa proprio per te.

    Scusa ma vuoi ripetere parola per parola quello che ti ho scritto di fare? Cosa non capisci?
  • Re: Scegliere un elemento di un vettore

    Per quanto riguarda la scelta dell'elemento tramite tastiera, se ho capito quel che intendi dire, dovrebbe bastarti chiedere il numero dell'elemento, immagazzinarlo in una variabile con scanf(), quindi usare quella variabile come indice (decrementandola di 1 per via della questione dello "zero based". Tipo...
    #include <stdio.h>
    
    #define Q_EL 100 /* Q_EL = quantita' di elementi nel vettore */
    
    int main() {
        int v[Q_EL] = {0}; /* vettore di Q_EL elementi, tutti azzerati */
        int i;             /* indice                                   */
    
        /* inizializza poi gli elementi con una serie di valori compresi tra 10 e **
        ** 10*Q_EL, giusto per riconoscerli quando li si richiama in console      */
    
        for( i=0; i<Q_EL; ++i )
            v[i] = 10*(i+1);
    
        /* chiede insistentemente di inserire il numero d'ordine di un elemento   **
        ** dell'array, compreso tra 1 e Q_EL, quindi visualizza l'elemento        **
        ** richiesto; se viene inserito zero esce dal ciclo e dal programma; se   **
        ** viene richiesto un elemento inesistente mostra un messaggio d'errore   */
    
        while( 1 ) {
            printf( "Tra 1 e %d, che elemento vuoi vedere? (0 per uscire) ", Q_EL );
            scanf( "%d", &i );
    
            if( i>0 && i<=Q_EL )
                printf( "L'elemento n. %d contiene il valore %d.\n\n", i, v[i-1] );
            else if( 0==i )
                 break;
            else printf( "L'elemento %d e' esterno ai limiti del vettore.\n\n", i );
        }
    
        return 0;
    }
    ..ma probabilmente la domanda non riguardava questo!
  • Re: Scegliere un elemento di un vettore

    Sì Aldo, penso che voglia questo ed è quello che gli ho consigliato di fare DA SOLO.

    L'unica speranza che lui ha di imparare a programmare è di sbatterci la testa da solo.
    Ha tremende lacune dal punto di vista del linguaggio C e del ragionamento logico per gli dovrebbe servire per impostare una soluzione.

    La visione di codice pronto per problemi così banali NON LO AIUTA.
  • Re: Scegliere un elemento di un vettore

    Ma... praticamente aveva già fatto tutto lui, gli mancava solo di mettere quello scanf() con la richiesta dell'indice. Secondo me stava chiendendo un'altra cosa (in qualche modo che non son proprio riuscito a capire).
  • Re: Scegliere un elemento di un vettore

    E' proprio quello che voleva ma dato che non ha capito a sufficienza quello che ha fatto prima (se l'ha fatto lui e non l'ha copiato) ha ancora difficoltà.

    Non ha capito il concetto di indice del vettore. Se vedi la somma che ha fatto tra due elementi l'ha inserita in un ciclo for ...
Devi accedere o registrarti per scrivere nel forum
20 risposte