Problema fstream

di il
3 risposte

Problema fstream

Salve ragazzi, il mio problema è il seguente, vorrei che una volta determinata la lunghezza di un vettore il programma carichi i valori da file e ho scritto questo ma non va...perchè?
# include <iostream>
#include <math.h>
#include <fstream> 
using namespace std;
    
void scambia(int[], int, int );

int main(){
   
  int dim;
  int k;
  int risp; 
  fstream filein;
  
  cout<<"Inserisci numero componenti "<<endl;
  cin>>dim; 
  
  int vet[dim];
   
   
  cout<<"Inserisci i dati del vettore "<<endl;
  
  filein.open("file.txt", ios::in);
  while(!filein.eof()){
  for(int i=0;i<dim;i++){
    cin>>k;
    vet[i]=k;
  }  
  }
  filein.close();
  cout<<"Il vettore inserito è"<<endl;
   
  for(int i=0; i<dim;i++){
    cout<<vet[i]<<" ";
  }
  cout<<endl;
   
  cout<<"Vuoi ordinare il vettore?(0/1)";
  cin>>risp;
   
  if(risp==1){
    for (int i=0;i<dim-1;i++)
	{
		for(int j=i+1;j<dim;j++)
		{
			if (vet[i]>vet[j])
			{
				scambia(vet,i,j);			
			}	
		}	
	}
  
  cout<<"Il vettore ordinato è"<<endl;
   
  for(int i=0; i<dim;i++){
    cout<<vet[i]<<" ";
  }
  cout<<endl; 
  
  
  }
 

   
return 0;
}


void scambia(int vet[], int a, int b){
  int tmp;
  tmp=vet[a];
  vet[a]=vet[b];
  vet[b]=tmp;
}



3 Risposte

  • Re: Problema fstream

    
      ...
      filein.open("file.txt", ios::in);
      if (!filein.is_open())
      {
        cout <<"Open Error"<<endl;
        return 1;
      }
      for(int i=0;i<dim && !filein.eof();i++)
        filein>>vet[i];
      filein.close();
      ...
    
    ~Max~
  • Re: Problema fstream

    Grazie mille..ma cosa vuol dire la prima condizione if??
    if (!filein.is_open())
      {
        cout <<"Open Error"<<endl;
        return 1;
      }
  • Re: Problema fstream

    Is_open è una funzione della classe di i/o stream. Restituisce true se lo stream è associato al file oppure false. L'esclamativo posto di fronte alla funzione (forse intendevi questo) è NOT cioè false o zero.

    Ti faccio notare un'anomalia nel codice precedente... se digiti una dimensione maggiore della reale dimensione dei contenuti del file, la lettura interrompe per oef, ma gli elementi extra del vettore saranno sporchi.

    Saluti,
    Max
Devi accedere o registrarti per scrivere nel forum
3 risposte