Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] Non mi stampa niente allocazione dinamica vettore

    Salve ho un problema devo prendere da file un vettore di numeri interi, allocarlo dinamicamente, eliminare dal mio vettore i numeri uguali a 0 poi selezionare i numeri dispari e quelli pari e inserirli in due file diversi, uno per i pari uno per i dispari. Successivamente conteggiare quanti numeri sono dispari e quanti sono pari e quanti zeri e quale dei due array abbia un maggior numero di elementi e quale quello minore

    Però in tutto questo ho un problema con la stampa del mio array allocato dinamicamente preso da file non capisco perchè non mi stampi nulla.

    Questo è il mio file:
    0
    3
    15
    0
    0
    7
    8
    0
    9
    0
    11
    44
    21
    0
    0
    0
    0
    0
    0
    0

    Questa è la mia libreria :

    codice:
    #include <iostream>
    #include <cstdlib>
    #include <fstream>
    
    
    #define n 50
    
    
    using namespace std;
    
    
    
    
    
    
    typedef char Stringa [n];
    
    
    void carica_file(Stringa N, fstream &f, int *);
    void carica_vettore(Stringa nome, fstream &, int *, const int);
    void stampa(int *, const int);
    Questa sono le mie funzioni:

    codice:
    #include "numeri.h"
    
    
    void carica_file(Stringa nome, fstream &f, int *size){
        
        int dim=0;
        int vet[dim];
        
        cout<<"Inserisci nome del file da caricare: ";
        cin.getline(nome, n-1, '\n');
        f.open(nome, ios::in);
        if(!f){
            
            cout<<"Eroore in fase di apertura del file \n";
            exit(1);
            
        }else{
            while(!f.eof()){
                
                f>>vet[dim];
                dim++;
                
            }
            
            *size=dim;    
        
        }
        
    
    
        
    }
    
    
    
    
    void carica_vettore(Stringa nome, fstream &f, int *vet, const int d){
        
        for(int i=0; i<d; i++){
            
            f>>vet[i];
            
        }
        
    
    
        
    }
    
    
    void stampa(int *v, const int dimensione){
        
        cout<<"\n Stampo il vettore: \n";
        for(int i=0; i<dimensione; i++){
            
            cout<<v[i]<<" ";
            
        }
        
    }
    Questo è il mio main:

    codice:
    #include "numeri.h"
    
    
    int main(){
        
        Stringa nome_file;
        fstream file;
        int dim;
        
        carica_file(nome_file, file, &dim);
        
        int *vettore= new int[dim];
        
        carica_vettore(nome_file, file, vettore, dim);
        stampa(vettore, dim);
        
    }

    Questo è quello che mi stampa la linetta non si arresta mai e non mi stampa niente.

    3.png

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    In carica_file, queste righe
    int dim=0;
    int vet[dim];

    non hanno senso, prima di tutto perché un vettore di dimensioni zero non ha senso e in secondo luogo perché non servono.

    Il contatore ce l'hai ed è size. Devi usare quello per contare.
    E dato che stai solo contando, non ti serve alcun vettore ma un semplice intero

    int tmp;

    da usare solo per leggere il dato.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    In carica_file, queste righe
    int dim=0;
    int vet[dim];

    non hanno senso, prima di tutto perché un vettore di dimensioni zero non ha senso e in secondo luogo perché non servono.

    Il contatore ce l'hai ed è size. Devi usare quello per contare.
    E dato che stai solo contando, non ti serve alcun vettore ma un semplice intero

    int tmp;

    da usare solo per leggere il dato.
    Scusa l'ignoranza ma se lo facessi non mi darebbe però il numeri degli elementi presente? f gli darebbe solo primo numero

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Perché dici questo? La lettura del file avviene per tutti gli elementi, per contarli ti serve solo size.

    Hai provato?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.