Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-06-2008, 11:57   #1
skull87
Member
 
Iscritto dal: Sep 2006
Messaggi: 69
[C++] Mancata Lettura File Binario ed Input Array di Array di char

Ho scritto questo codice che dovrebbe svolgere, in parte la traccia assegnata in testa allo stesso. Ho riscontrato prima di tutto un problema nel definire una variabile che potesse contenere più corsi, ovvero più array di char, e conseguentemente non ho capito neppure come si può fare un input in questa variabile, il cui contenuto andrà poi riversato su file. Ancora, non ho capito neppure come fare un eventuale ricerca di un nome all’interno di questo dopo che è stato letto da file.
Un secondo problema riscontrato è come vi dicevo, la mancata lettura di un file, per la precisione il file studente.dat che vi allego insieme al file docente.dat.

Studente.dat
Docente.dat

I due file sono stati creati utilizzando la procedura inserimento, ora modificata ed adattata alla creazione di studente.dat, prima diversa per la creazione di docente.dat.

Ho inserito dei cout nella procedura per verificare la lettura dal file, il file docente.dat viene letto correttamente.

Se avete voglia e sapete come aiutarmi, indicatemi perfavore le correzioni da apportare per far svolgere all’algoritmo ciò che viene richiesto dalla traccia, grazie a tutti.

Codice PHP:
/*
Note             : Il file nome fisico docenti.dat contiene l'elenco dei 
                       docenti(tipo Rdocente) che insegnano in un corso il cui 
                       nome è Corso, mentre il file di nome fisico studenti.dat 
                       contiene l'elenco degli studenti (tipo Rstudente) che 
                       devono seguire quei corsi. I record degli studenti 
                       contendono Cognome,Nome,dataN,Corsi. I due file sono 
                       entrambi ordinati per key.
                       Scrivere una procedura che, per ogni docente, crei un
                       file, il cui nome coincide col cognome del docente,
                       contenente tutti gli studenti di quel corso(campi 
                       nome, congnome, data di nascita) in ordine alfabetico
                       per cognome e nome e a parità per data di nascita.
                       
                       
   
COME POSSO FARE A FARE UN IMPUT SU FILE DI UN ARRAY DI ARRAY DI CARATTERI?
*/     

#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

struct Tpdata {
  
int giorno;
  
int mese;
  
int anno;
  };

struct Rlibro{
                                     
int key;
                                     
char cognome[20];
                                     
char nome[20];
                                     
char corso[20];
                                     };
                                     
struct Rstudente{
                 
int key;
                 
char cognome[20];
                 
char nome[20];
                 
Tpdata dataN;
                 
char corso[20];
                 
                };
                
typedef RlibroPlibro
typedef RstudentePstudente;    
                                
void Inserimento (Rstudente &, char &);
void getfile(Pstudente [],int );
void putfile(Rstudente [],int ,int );
void insort(Pstudente [],int ,Pstudente);
double Datanum(Pstudente );

const 
char Nomefile[ ]="studente.dat";
const 
int Lrec=sizeof(Rlibro);
const 
int Numpers=6;

int main(){
    
    
char chr;
    
Rstudente libro;
    
  
   
/*int Numpers;
    cout<<"Numero di libri da inserire: ";
    cin>>Numpers;
    fstream filepers;
    filepers.open("studente.dat",ios::in|ios::out|ios::binary|ios::ate);
    if (!filepers)
     filepers.open("studente.dat",ios::out|ios::binary|ios::trunc);
    while(Numpers>0){
    Inserimento(libro,chr);
    if (chr=='s') {
    filepers.seekp(0,ios::end);
    filepers.write((char*)&libro,Lrec);
    Numpers--; 
    }}
    filepers.close();*/
    
      
Pstudente PuntaP1[101],PuntaP2[101];
     
getfile(PuntaP1,Lrec);  
     
//for(int k=1;k<=Numpers;k++){
        //     stampa(*PuntaP1[k]);
           //  }
     
system("pause");
     
//SortStud(PuntaP1,Numpers,true);
     //putfile(PuntaP1,Numpers,Lrec);
    
    
    
system("pause");
    return 
0;
    
}

   
void Inserimento (Rstudente &pers1char &ch)
   
{

   
cout << "INSERIMENTO LIBRI" << endl << endl;
   
   
pers1.key=100;
   
cout << "\nCognome= ";
   
cin >> pers1.nome;
   
cout << "Nome= ";
   
cin >> pers1.cognome;
   
/*cout << "\nEditore= ";
   cin >> pers1.corso;*/
   
cout << "\nData Nascita= ";
   
cin >> pers1.dataN.giorno>>pers1.dataN.mese>>pers1.dataN.anno;
   
cout << "\nCorsi= ";
   
cin >> pers1.corso;
   
/*cout << "\nStato= ";
   cin >> pers1.stato;*/
   
cout << "Salva (s/n)? ";
   
cin >> ch;
   
}

double Datanum(Pstudente x){
       
      return 
x->dataN.anno*10000+x->dataN.mese*100+x->dataN.giorno;
      }

void getfile(Pstudente PuntaP1[],int Lrec){
     
     
fstream file,file1;
     
Rlibro temp;
     
Rstudente temp1;
     
file.open("docente.dat",ios::in|ios::out|ios::binary|ios::ate);
     if (!
file)
     
file.open("docente.dat",ios::out|ios::binary|ios::trunc);
     
file1.open("studente.dat",ios::in|ios::out|ios::binary|ios::ate);
     if (!
file1)
     
file1.open("studente.dat",ios::out|ios::binary|ios::trunc);
     
     
int NumFileStud=file1.tellg()/sizeof(Rstudente);

     
int Numstud=file.tellg()/Lrec;

     
file.seekg(0,ios::beg);
     
int k=0,z=1;
     for(
int i=1;i<=Numstud;i++){
             
             
file.read((char*) &temp,Lrec);
             
cout<<temp.cognome<<endl;
             
system("pause");
             
file1.read((char*) &temp1,sizeof(Rstudente));
             
cout<<temp1.cognome<<endl;
             
system("pause");
             while(
k<NumFileStud && temp.key!=temp1.key){
                                 
file1.read((char*) &temp1,sizeof(Rstudente));
                                 
cout<<temp1.cognome<<endl;
             
system("pause");
                                 }
             while(
k<NumFileStud && temp.key==temp1.key){
             
//Se array devo far cercare nell'array, come?
             
if(stricmp(temp.corso,temp1.corso)==0){
             
PuntaP1[z]=new Rstudente;
             *
PuntaP1[z]=temp1;
             
insort(PuntaP1,z,PuntaP1[z]);
             
z++;
             
file1.read((char*) &temp1,sizeof(Rstudente));
             }
             }
             if(
z>1){
     
fstream file2;
     
file2.open(temp.cognome,ios::in|ios::out|ios::binary|ios::ate);
     if (!
file)
     
file2.open(temp.cognome,ios::out|ios::binary|ios::trunc);
     for(
int n=1;n<=z;n++){
             
file2.write((char*) &*PuntaP1[i]->cognome,sizeof(char[20]));
             
file2.write((char*) &*PuntaP1[i]->nome,sizeof(char[20]));
             
file2.write((char*) &PuntaP1[i]->dataN.giorno,sizeof(int));
     }
file2.close();
     }
     
file1.seekg(0,ios::beg);
     
     }
     
file.close(); 
     }


void insort(Pstudente Punt[],int n,Pstudente Temp){
     
     
int j;
     
Punt[0]=Temp;
     
j=n-1;
     
    if(
j>&& stricmp(Punt[j]->cognome,Punt[0]->cognome)>0){
                  while(
j>&& stricmp(Punt[j]->cognome,Punt[0]->cognome)>0){
                  
Punt[j+1]=Punt[j];
                  
j--;
                  }
                  }
    if(
j>&& stricmp(Punt[j]->cognome,Punt[0]->cognome)==&&
               
stricmp(Punt[j]->nome,Punt[0]->nome)<0){
                  while(
j>&& stricmp(Punt[j]->nome,Punt[0]->nome)<0){
                  
Punt[j+1]=Punt[j];
                  
j--;
                  } 
                  }  
     if(
stricmp(Punt[j]->nome,Punt[0]->nome)==&& Datanum(Punt[j])<Datanum(Punt[0])){
                  while(
Datanum(Punt[j])<Datanum(Punt[0])){
                  
Punt[j+1]=Punt[j];
                  
j--;
                  }   
                  }   
            
Punt[j+1]=Punt[0];
     } 

void putfile(Pstudente Punt[],int Numero,int Lrec){
     
     
fstream file;
     
file.open("libri2.dat",ios::out|ios::ate|ios::binary);
     
     if (!
file)
      
file.open("libri2.dat",ios::out|ios::binary|ios::trunc);
      
     for(
int i=0;i<Numero;i++){
             
file.write((char*) &*Punt[i],Lrec);
             }

__________________
MondoLibero: Informazione Libera, Varia ed Eventuale
Sito di informazione varia ed eventuale. Quando ho voglia scrivo di ciò che mi pare. Pubblico guide, recensioni, notizie, critiche e tutto ciò che mi passa sotto mano e che penso sia interessante.
skull87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
La Camera USA presenta il conto: i data ...
Non solo EV, ma anche IA: Panasonic inau...
iPhone Duo, il debutto del pieghevole di...
Atlas 960E SuperPoD, la risposta di Huaw...
IA militare e nucleare: esperti USA e ci...
Dieci mini-reattori nucleari in Europa d...
CONTROL Resonant su PC: Path Tracing, Ra...
ColorOS 17 arriva su circa 90 dispositiv...
GTA VI, il multiplayer potrebbe debuttar...
Aggiornamento KB5002914 rompe Excel: ecc...
Processo Huawei a Brooklyn: l'FBI mostra...
WhatsApp introduce nuovi temi per le cha...
NVIDIA, Google e Emerald AI uniscono le ...
iPhone 18 Pro Max, il test sulla vapor c...
Fine estate in giardino: le proposte sco...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v