Cicli e vettori in c++

di il
13 risposte

Cicli e vettori in c++

Ciao a tutti

sono un neofita nel mondo della programmazione.

Negli ultimi giorni ho affrontato il capitolo che descrive la classe vector, dopo aver studiato array e puntatori.

nel testo viene indicato che uno dei vantaggi della classe vector rispetto agli array consiste nella dimensione, che può variare dopo la creazione di quest'ultimo. 

veniamo al problema: 

mettiamo il caso che debba inserire dei dati da inFile all'interno di un mio vettore; non sapendo esattamente la quantità di dati che saranno inseriti, dichiaro il vettore senza indicarne la dimensione, e senza chiedere all'utente di indicare quanti elementi saranno inseriti in modo da associare poi questa informazione alla dimensione del mio vettore.

da quello che ho letto (correggetemi se sbaglio), per aggiungere elementi ad un vettore la cui dimensione non è stata indicata, dovremmo usare sempre la funzione push_back, è possibile inserire i dati da inFile attraverso l'uso di un ciclo come per altri vettori la cui dimesione è stata specificata? se si …in che modo ? 

ho visto che usando push_back :  mioVettore.push_back()

all'interno delle parentesi va inserito il valore da assegnare, oppure una variabile la quale trasmettera il valore a mioVettore[0].

13 Risposte

  • Re: Cicli e vettori in c++

    Push back aggiunge in coda, insert inserisce nella posizione indicata.

    Comunque, si. 

    In che modo? Lo hai scritto TU in che modo: usando la funzione push back. 

    Stai chiedendo: 

    di che colore e' il cavallo bianco di Napoleone!

    Che risposta vorresti ricevere? 

    Nota: sei sicuro che il C++ sia il linguaggio adatto a te? E' un linguaggio ostico ANCHE per chi ha n-mila anni di esperienza! 

  • Re: Cicli e vettori in c++

     Sto chiedendo come dovrebbe essere strutturato il ciclo date le circostanze. 

  • Re: Cicli e vettori in c++

    13/05/2024 - Vlad ha scritto:


     Sto chiedendo come dovrebbe essere strutturato il ciclo date le circostanze. 

    Quali sarebbero di preciso le "circostanze" a cui ti riferisci?

  • Re: Cicli e vettori in c++

    13/05/2024 - Nippolo ha scritto:


    13/05/2024 - Vlad ha scritto:


     Sto chiedendo come dovrebbe essere strutturato il ciclo date le circostanze. 

    Quali sarebbero di preciso le "circostanze" a cui ti riferisci?

    le circostanze nelle quali ci si trova nel dover inserire dati il cui quantitativo è sconosciuto tramine "inFile>>"  all'interno di un vettore la cui dimensione non è stata specificata.

  • Re: Cicli e vettori in c++

    Nel ciclo devi testare la fine del file. 

    Continui ad inserire nel vector e il ciclo termina quando il file finisce

  • Re: Cicli e vettori in c++

    13/05/2024 - Vlad ha scritto:


    le circostanze nelle quali ci si trova nel dover inserire dati il cui quantitativo è sconosciuto tramine "inFile>>"  all'interno di un vettore la cui dimensione non è stata specificata.

    Basta utilizzare push_back(), come tu stesso hai detto nel post iniziale. 

    Non capisco però da dove nasce il tuo dubbio… hai più o meno idea di come funziona internamente la classe vector?

  • Re: Cicli e vettori in c++

     se tu applichi la seguente

    inFile>>myVector.push_back(); 

    incorri in un errore,

    push_back() è una FUNZIONE; di conseguenza,

    va dichiarata un altra variabile a cui assegnare i valori all'interno del ciclo tramite inFile, dopodiche associarla alla funzione push_back.

    dopodichè per visualizzare:

    for(unsigned int i=0; i<myVector.size();i++)

    cout<<myVector[i];

    insomma…mi stavo perdendo in un bicchier d'acqua.

  • Re: Cicli e vettori in c++

    13/05/2024 - oregon ha scritto:


    Nel ciclo devi testare la fine del file. 

    Continui ad inserire nel vector e il ciclo termina quando il file finisce

    sto cercando di stabilire la fine del ciclo tramite la seguente condizione while(inFile>>x>>y)

    mi ritrovo pero ad inserire dati a righe  alternate…potrei cambiare la condizione e risolvere pero voglio capire il perchè succede ciò. 

  • Re: Cicli e vettori in c++

    E' più semplice di quello che pensi.

    Facci vedere come è fatto il file dei dati che leggi e quali dati devono essere inseriti nel vector

    E scrivi qui tutto il codice che utilizzi, compreso main, variabili e ciclo

  • Re: Cicli e vettori in c++

    13/05/2024 - oregon ha scritto:


    E' più semplice di quello che pensi.

    Facci vedere come è fatto il file dei dati che leggi e quali dati devono essere inseriti nel vector

    E scrivi qui tutto il codice che utilizzi, compreso main, variabili e ciclo 

    Johnson		5000		
    Miller		4000		
    Duffy		6000		
    Robinson	2500		
    Ashtony		1800	
    Marcus      1950
    Tew         1300
    Fronz       1240
    Strews      7540
    Fremf       1234

    #include <iostream>
    #include <string>
    #include <fstream>
    #include <iomanip>
    #include <vector>
    using namespace std;
    
    
    int main (){
    
    
    vector<int>voti;
    vector<string>nomi;
    int votii;
    string line;
    
    ifstream inFile;
    inFile.open("DaLeggere2.txt");
    
    cout<<setw(10)<<left<<"NOMI"<<setw(5)<<setw(10)<<left<<"N°VOTI"<<setw(5)<<setw(10)<<left<<" % VOTI"<<endl;
    
      
    do
    {
        
        inFile>>line>>votii;
        nomi.push_back(line);
        voti.push_back(votii);
    
    }
     while(inFile>>line>>votii);
    
            for(unsigned int i=0; i<voti.size();i++)
           { 
            cout<<setw(1)<<setw(10)<<left<<nomi[i]<<setw(1)<<setw(10)<<left<<voti[i]<<endl;
           }
    
    return 0;
    }
  • Re: Cicli e vettori in c++

    Il ciclo di lettura è sbagliato, in quel modo leggi due volte la riga ma ne inserisci una sola.

    Correggi con

    
       while (inFile >> line >> votii)
       {
           nomi.push_back(line);
           voti.push_back(votii);
       } 
    
  • Re: Cicli e vettori in c++

    Grazie a tutti per le delucidazioni

  • Re: Cicli e vettori in c++

    Devi ancora completare con il calcolo della percentuale

Devi accedere o registrarti per scrivere nel forum
13 risposte