Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
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'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-05-2004, 14:47   #1
lucas72
Senior Member
 
L'Avatar di lucas72
 
Iscritto dal: Aug 2002
Messaggi: 3993
[c++] salvare dati: problemi...

Non riesco a capire perchè il codice sotto non si compila.
Voglio salvare i dati che inserisco nella struttura, ma ricevo un sacco di messaggi di errore dal compilatore (soprattutto su string di leggiFile)
chi mi aiuta?

Codice:
#include <iostream.h>
#include <iomanip>
#include <fstream>
#include <string>
const int FALSO = 0;
const int VERO = 1;
struct Data 
  { int giorno, // 1-31
	    mese,   // 1-12
	    anno;   // 00-99
  };
const int MAXIDENT =10;
struct Studente 
  { int matricola;
	char cognome[MAXIDENT],
	     nome[MAXIDENT],
	     sesso;  // M,F
	Data dataNascita;
  };
const int DIM = 8;
struct InsStudenti 
  { int num;                  // numero di righe significative
	Studente elenco[DIM];
  };
  
InsStudenti inizializzaTabella();
void inserisciSeNonEsiste(Studente, InsStudenti &);
void eliminaSeEsiste(int,InsStudenti &);
void cercaSeEsisteEPosizione(int, InsStudenti &,int &, int &);
void stampaTabella(InsStudenti &);
void leggiNomeFile(string &nomeFile);
void salvastud (InsStudenti &classe, string &nomeFile);

int main()
{ 
  string nomeFile;
  const char INSERISCI = 'i';
  const char ELIMINA = 'e';
  const char FINE = 'f';
  const char SALVA = 's';
  const char CARICA = 'c';
  char operazione ;        // operazione da effettuare sulla tabella
  Studente nuovoStudente; // dati dello studente da inserire
  int matricola;         // matricola dello studente da eliminare
  InsStudenti classe;
	classe = inizializzaTabella();
	stampaTabella(classe);
    cout << setw(50) << "acquisizione operazioni" << endl << endl;
	  cout << "operazione? (i per inserimento,"
		  <<              " e per eliminazione,"
	      <<              " s per salva ,"<<endl
		  <<              "            c per carica ,"
		  <<              " f per fine"        << "): ";
	  cin >> operazione;
	while (operazione != FINE)
      { if (operazione == INSERISCI) 
          { //lettura dei dati del nuovo studente
              cout << " dati del nuovo studente" << endl;
              cout << " matricola: "; cin >> nuovoStudente.matricola;
              cout << " cognome: "; cin >> nuovoStudente.cognome;
              cout << " nome: "; cin >> nuovoStudente.nome;
              cout << " sesso( M/F ): "; cin >> nuovoStudente.sesso;
              cout << " giorno di nascita (1-31): ";
                cin >> nuovoStudente.dataNascita.giorno;
              cout << " mese di nascita (1-12): ";
                cin >> nuovoStudente.dataNascita.mese;
              cout << " anno di nascita (0-99): ";
                cin >> nuovoStudente.dataNascita.anno;
            inserisciSeNonEsiste(nuovoStudente,classe);
            stampaTabella(classe);
          }
        else if (operazione == ELIMINA)
          { //lettura matricola studente da eliminare
              cout << " matricola studente da eliminare: ";
              cin >> matricola; 
            eliminaSeEsiste(matricola,classe);
            stampaTabella(classe);
          }
        else if (operazione == SALVA)
           {
          leggiNomeFile(nomeFile);
          salvastud (classe, nomeFile);
           }
          cout << "operazione? (i per inserimento,"
		  <<              " e per eliminazione,"
	      <<              " s per salva ,"<<endl
		  <<              " c per carica ,"
		  <<              " f per fine"        << "): ";
          cin >> operazione;
	   }
	  system ("PAUSE");
	  return 0;
 
}
InsStudenti inizializzaTabella()
{ 
  InsStudenti tab = 
               {
			   4,
			   {{7, " rossi", " marco",'M',{5,10,76}},
				{48," verdi", " anna", 'F',{4, 7,75}},
				{63," neri",  " remo", 'M',{5, 8,76}},
				{84," gialli"," carla",'F',{5,11,75}}
			   }
		      };
  return tab;
}
void cercaSeEsisteEPosizione(int dato, InsStudenti &tab,
                             int &esiste, int &pos)
{
    esiste = FALSO;/
		   if ((tab.num == 0) ||		               // tabella vuota
		 (tab.elenco[0].matricola > dato)) 
         pos = -1;
	 //caso speciale di studente esistente in prima posizione
	   else if (tab.elenco[0].matricola == dato) 
         { esiste = VERO;
	       pos = -1;
	     }
	       else                                        
        { pos = 0; // si parte dal primo elemento
          int finito = FALSO;   // finché non è finita la ricerca
	      while (finito == FALSO) // si esamina il successore di pos: 
            { if (pos == tab.num -1) // non esiste successore
                finito = VERO;
		     else if (tab.elenco[pos+1].matricola == dato) 
                { finito = VERO;     // l'elemento cercato
                  esiste = VERO;     // è quello successivo a pos
                }
              else if (tab.elenco[pos+1].matricola > dato)
                finito = VERO;       // l'elemento cercato non esiste
              else
                pos++; 
	        }
	    }

}
void leggiNomeFile (string &nomeFile) 
   {
    int scelta;
    if (nomeFile != ""){
        cout << "Utilizzare il file " << nomeFile << "?" << endl;
        cout << "1. SI " << endl;
        cout << "2. No, specifico un altro file"<< endl;
        cout << "-------------------------------" << endl;
        cin >> scelta;
        while ((scelta < 1) || (scelta > 2)){
            cout << "Scelta scorretta" << endl;
            cin >> scelta;
        }
        if (scelta == 2){
            cin.ignore();
            cout << "Inserisci il file dov'e' contenuta la rubrica" << endl;
            getline (cin, nomeFile);
        }
    } else {
        cin.ignore();
        cout << "Inserisci il file dov'e' contenuta la rubrica" << endl;
        getline (cin, nomeFile);
    }
    return;
}

void salvastud(InsStudenti &classe, string &nomeFile){
    int i;
    ofstream scriviFile (nomeFile.c_str());
    if (classe.num == 0){
    }
    for (i=0; i < rubrica.index; i++){
        scriviFile << classe.elenco[i].cognome << endl;
        scriviFile << classe.elenco[i].nome << endl;
        scriviFile << classe.elenco[i].sesso<< endl;
        //qui per salvare anche la data come faccio?? grazie 
        //va bene:  scriviFile << classe.elenco[i].dataNascita.giorno?
        //ecc ecc       
          }
    scriviFile.close();
    return;
}
void inserisciSeNonEsiste(Studente nuovoStudente, InsStudenti &tab)
{ 
  int esiste, posizione;
  cercaSeEsisteEPosizione(nuovoStudente.matricola, tab, esiste, 					      posizione);
  if ((esiste == FALSO) && (tab.num <= DIM))
    { cout << "inserimento di studente con matricola"
           << setw(5) << nuovoStudente.matricola << endl;
      int temp = posizione + 1;
      for (int i = tab.num - 1; i >= temp; i--)
        tab.elenco[i + 1] = tab.elenco[i];
      tab.elenco[temp] = nuovoStudente;
      tab.num++;
	}
}
void eliminaSeEsiste(int matricola, InsStudenti &tab)
{ 
 int esiste, posizione;
  cercaSeEsisteEPosizione(matricola, tab, esiste, posizione);
  if (esiste == VERO) 
    { cout << "eliminazione di studente con matricola"
           << setw(5) << matricola << endl;
      int temp = posizione + 1; //posizione dell'elemento da eliminare
      for (int i = temp + 1; i < tab.num; i++)
        tab.elenco[i - 1] = tab.elenco[i];
      tab.num--;
	}
}
void stampaTabella(InsStudenti &tab)
{ 
  int i;
  cout << " tabella con il solo campo chiave " << endl<<endl;
  for(i = 0; i< tab.num; i++){
    cout << setw(5) << tab.elenco[i].matricola;
    cout << setw(5) << tab.elenco[i].cognome;
    cout << setw(5) << tab.elenco[i].nome;
    cout<<endl;
    }
  cout << endl << endl;
}
lucas72 è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2004, 17:35   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Re: [c++] salvare dati: problemi...

Intanto questo:
Codice:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>

using namespace std;
Ma quante righe hai scritto prima di compialre la prima volta ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2004, 20:04   #3
lucas72
Senior Member
 
L'Avatar di lucas72
 
Iscritto dal: Aug 2002
Messaggi: 3993
Re: Re: [c++] salvare dati: problemi...

[QUOTE
Ma quante righe hai scritto prima di compialre la prima volta ? [/quote]


?????
lucas72 è offline   Rispondi citando il messaggio o parte di esso
Old 03-05-2004, 20:47   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Il programma lo compili la prima volta quando hai finito di scriverlo ? Solitamente si compila molto spesso mentre si scrive il codice...pezzo per pezzo...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2004, 01:24   #5
cavay
Member
 
Iscritto dal: Sep 2001
Messaggi: 181
se non riporti gli errori....è difficile capire...poi sono errori di compilazione o di link?
cavay è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
La prima missione orbitale del razzo spa...
Servizi in streaming sempre più c...
Anteprima della Leapmotor B03X: inizia l...
Anthropic accusa la Cina: Claude utilizz...
I satelliti Rassvet (Starlink russo) di ...
Un agente IA ha risolto un problema su W...
Cina: la CMSA potrebbe cambiare parte de...
68 mensilità di bonus per i dipen...
Rocket Lab ha fatto ricorso contro la de...
Nutanix rende disponibile Azure Virtual ...
Il padrino del deep learning avverte: gl...
Il finto avviso "iPhone Storage is Full"...
Dietrofront in Cina, addio touchscreen p...
Un piccolo accessorio trasforma lo smart...
Dopo 370 anni il Cyphral Distich non è p...
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: 03:30.


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