PDA

View Full Version : [C++] problema ricerca su file


christian110
25-10-2007, 15:20
innanzitutto ciao ragazzi....vi ringrazio dell'attenzione...
ho da sottoporvi un mio programma che deve simulare molto semplicemente l'archiviazione di alunni e relativi voti scolastici insomma si ritorna a scuola ihih
allora vi mostro quello che ho fatto..

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <iostream>


char name[20];
int risposta;
int confronto;

struct Dati_alunno
{char nome[20];
char cognome[20];
int sistemi;
int informatica;
}

char scelta;
FILE *f;

int main(int argc, char *argv[])
{ struct Dati_alunno alunno


do {
printf("MENU");
printf("1.inserisci nuovo alunno");
printf("2.visualizza dati alunni");
printf("3.cerca alunno e modifica dati");
printf("4.esci");
scanf("%d",scelta);
switch (scelta)
{
case '1':printf("inserisci nome \n");
gets(alunno.nome);
printf("inserisci cognome \n");
gets(alunno.cognome);
printf("inserisci voto di sistemi \n");
scanf("%d",&alunno.sistemi);
printf("inserisci voto d'informatica \n");
scanf("%d",&alunno.informatica);
system("cls");
fwrite(&alunno,sizeof alunno,1,f);
fflush(f);
break;

case '2':rewind(f);
system("cls");
fflush(f);
do
{if (feof(f))
printf("registro vuoto");
else
{printf("nome: %s \n",alunno.nome);
printf("cognome: %s \n",alunno.cognome);
printf("voto sistemi: %d \n",alunno.sistemi);
printf("voto informatica: %d \n",alunno.informatica);
printf("////////////////////////// \n");

}

case '3':remove(*p);
break;
/*
printf("dammi nominativo: ");
scanf("%s", nominativoCerca);
for (int b=0; b<indice01; b++)
{
flag=0;
if (strcmp(nominativoCerca, Alunno[b].nominativo) == 0){
printf("BRAVO, nominativo trovato !!!\n");
printf("nominativo: %s \n", Alunno[b].nominativo);
printf("votoInformatica: %d \n", Alunno[b].votoInformatica);
printf("votoSistemi: %d \n", Alunno[b].votoSistemi);
printf("*********** \n\n");
flag=1;
break;
}
}
if (flag==0)
printf("SBAGLIATO, nominativo inesistente !!!\n");
break;*/
case '4':return 0;

default:system("cls");
printf("SCELTA ERRATA \n");



}while (scelta='4');
fclose(f);
}


bhe in pratica il mio grande casino risulta nella ricerca dove io inpratica vorrei dare in input un nome da cercare visualizzare e dare la possibilita di modificare i campi..non so come fare huffi...mi potreste aiutare?o cmq darmi dei consigli...
se trovate anche quelche errore ditemelo che ho tutto da imparare
grazie della cortese attenzione davvero

arara
25-10-2007, 15:42
Se vuoi risolvere il problema senza usare liste o allocazione dinamica, puoi fare cosi:
scorri il file sorgente finche non trovi il nome cercato, e man mano che lo leggi salvi i dati degli studenti su un altro file.
Quando trovi lo studente da modificare, stampi le sue informazioni sullo schermo e chiedi all'utente cosa vuole modificare.
Una volta fatte le modifiche salvi i dati appena modificati sul nuovo file, e poi tutti quelli degli studenti che seguono fino alla fine.
Quando hai finito sovrascrivi il vecchio file con il nuovo, cosi ti trovi con l'archivio modificato.

christian110
25-10-2007, 17:15
ci avevo pensato il problema sta proprio nel ricreare e poi di andare a sovrascrivere il file...la ricerca poi mi da un macello di errori se uso la strcmp... se usavo le classi o la allocazione dinamica lo so anch'io che è facile ma l'esercizio chiede di non usarle huffi :(
e diciamo anche che devo consegnarlo per sabato questo..ho chiesto aiuto proprio perchè sono nella M :(

mirkus90
25-10-2007, 17:39
Non sò se la mia idea è applicabile in C...ankio uso questo linguaggio ma solo da quest'anno e il mio prof dice ke è simile al linguaggio Java....Io avrei optato x la creazione di un vettore RECORD dove registrare tutti i dati ke vuoi!!!
Ma nn sò se in C si possono creare Record

vizzz
25-10-2007, 19:26
Non sò se la mia idea è applicabile in C...ankio uso questo linguaggio ma solo da quest'anno e il mio prof dice ke è simile al linguaggio Java...

andrebbe crocefisso in sala mensa per quello che ha detto.

marko.fatto
25-10-2007, 19:27
bè Java ha una sintassi c-like:sofico:

variabilepippo
25-10-2007, 19:38
bè Java ha una sintassi c-like

Ma da qui al fatto che Java sia "simile" al C ce ne passa... :)

christian110
25-10-2007, 23:57
aiuto :|