Selezionare l'ultimo elemento != 0 nell'array

di il
8 risposte

Selezionare l'ultimo elemento != 0 nell'array

Buongiorno,
come da titolo ho il seguente problema:

esempio

ho un array v[12]
5 5 6 7 4 5 6 0 0 0 0 0 0

devo fare la somma del primo valore ** v[0] (fin qui c sono ) ** e dell'ultima riga =! da zero (in questo caso 6).

.1
come trovo l'ultima riga diversa da zero senza usare riferimenti assoluti ?( nel mio progetto la posizione dell'ultimo elemento dell'array =! da zero non sarà sempre 6 come in questo caso)
.2
a questo punto devo sommare i due valori contenuti nel primo e ultimo elemento !=0 (risultato 11) e inserire questo risultato nel primo valore = a zero dell'array (in questo caso v[7]).


grazie a tutti per l'aiuto

8 Risposte

  • Re: Selezionare l'ultimo elemento != 0 nell'array

    Innanzitutto nel caso di un vettore si parla di elementi e non di righe e colonne (inoltre se anche volessimo vedere il vettore come una matrice 1X12 quelle sono colonne e non righe).
    Perchè non inizi a postare quello che hai fatto?

    P.S.
    Quell'array contiene 13 elementi e non 12!
  • Re: Selezionare l'ultimo elemento != 0 nell'array

    Ovviamente si parla di elementi dell'array e, nel caso della mia rappresentazione si dovrebbe dire (sbagliando appunto) colonne. tuttavia io ho la concezione di immaginarmi il vettore "in verticale" e quindi erroneamente ho usato il mio lessico cerebrale e di conseguenza ho scritto RIGHE. ti dico questo perchè ho esperienza in SQL e quindi immagino un vettore come una "tabella" composta da 1 colonna e N righe . ad ogni modo il problema mi sembra che sia molto chiaro.


    ho un vettore e devo sommare il primo valore e quindi in posizione V[0] e il valore contenuto nell'ultimo posto diverso da zero.
    se sapete come fare vi prego di aiutarmi.

    @Nippolo il vettore ha 13 elementi tuttavia è scritto v[12] in quanto il primo elemento di un array è collocato in posizione v[0] e di conseguenza l'ultima posizione è v[12]

    grazie ancora delle risposte.
  • Re: Selezionare l'ultimo elemento != 0 nell'array

    Semplicemente usi un ciclo for in cui sommi i valori in una variabile se diversi da 0. Altrimenti esci e assegni la variabile all'elemento del vettore usando opportunamente l'indice del ciclo for in uscita.
  • Re: Selezionare l'ultimo elemento != 0 nell'array

    @Nippolo il vettore ha 13 elementi tuttavia è scritto v[12] in quanto il primo elemento di un array è collocato in posizione v[0] e di conseguenza l'ultima posizione è v[12]
    Precisato che il mio precedente intervento al riguardo era scherzoso, c'è da dire che la tua giustificazione non sta molto in piedi!
    ad ogni modo il problema mi sembra che sia molto chiaro.
    Il problema mi era chiaro già dal primo post, infatti ti avevo chiesto di postare quello che avevi provato a fare in modo da poterti aiutare a risolvere il problema in modo autonomo in quanto si sta parlando cmq di qualcosa di molto semplice.
  • Re: Selezionare l'ultimo elemento != 0 nell'array

    Precisato che il mio precedente intervento al riguardo era scherzoso, c'è da dire che la tua giustificazione non sta molto in piedi!

    hai ragione Nippolo ho detto una cagata. all'inizio l'array devo comunque definirlo per il suo valore reale ovvero v[13] perchè 13 elementi.

    tuttavia il ciclo for funziona appunto se devo prendere tutti i valori diversi da zero ma per prendere solo il primo e ultimo?

    grazie
  • Re: Selezionare l'ultimo elemento != 0 nell'array

    Ragazzi ce l'ho fatta!

    premetto che prima di quello che scrivo adesso ho precedentemente assegnato zero a tutti gli elementi del vettore.
    dopodichè ho fatto un ciclo "alla rovescia"

    void vinto()
    {
    int i,x,z;

    for (i=199;i>=0;i--) {

    if (vettore != 0)
    {
    x = vettore;
    cout<<endl<<"prova"<<endl<<x;
    break;

    }
    }
    }

    il cout è solo la riprova che prendo davvero quello che mi serve!!



    grazie della pazienza !!!!!!
  • Re: Selezionare l'ultimo elemento != 0 nell'array

    E' sbagliato perché accedi ad elementi dell'array che non sono realmente allocati. Ce ne sono 13, non puoi accedere oltre.
  • Re: Selezionare l'ultimo elemento != 0 nell'array

    L'obiettivo è assegnare al primo elemento dell'array uguale a 0 la somma dell'elemento immediatamente precedente e del primo elemento dell'array.
    Per farlo bisogna conoscere gli indici di questi tre elementi:
    - l'indice del primo elemento è noto e ovviamente vale 0;
    - l'indice del primo elemento uguale a 0 può essere trovato scorrendo l'intero l'array con un for fermandosi non appena si trova un elemento pari a 0;
    - l'indice dell'elemento immediatamente precedente al primo elemento nullo sarà ovviamente uguale all'indice definito nella riga precedente -1.
    Si può quindi procedere con l'assegnazione:
    vettore=vettore[0]+vettore[i-1];

    A questo punto nasce spontaneo un dubbio... e se il primo elemento dell'array è 0? Usando la suddetta formula il programma cercherà di accedere a vettore[-1]!!
    Innanzitutto bisogna vedere se il problema sussiste o meno, magari il primo elemento dell'array sarà sempre !=0.
    In caso contrario non esiste una soluzione assoluta, ma tutto dipende da quello che è lo scopo del programma.
Devi accedere o registrarti per scrivere nel forum
8 risposte