ayuda por favor con un programa
Publicado por Oscar (1 intervención) el 13/06/2005 20:24:39
El programa en cuestion es este:
Escriviu un programa que treballi amb el nom, cognom, edat i nota de diversos alumnes,
utilitzant la següent estructura (no heu d'utilitzar cap vector d'estructures) i que disposi de les
següents funcions:
struct fitxa {
Curs 2004-05, DAI 1, Crèdit 5 UD 4: Tractament de fitxers
Miquel Prior 18
int codi;
char nom[20];
char cognom[20];
float nota;
}
a) Obre base de dades: ha de crear un fitxer nou de dades o obrir un existent.
b) Insereix alumnes: ha d'inserir al final del fitxer noves dades d'alumnes. El programa s'ha
d'assegurar que el codi de l'alumne nou no existeix.
c) Mostra alumnes: ha de mostrar per pantalla les dades de tots els alumnes.
d) Cerca nom: ha de cercar i mostrar les dades de l'alumne que tingui el nom introduït.
e) Modifica alumne: ha de preguntar per un codi d'alumne i deixar a l'usuari la possibilitat de
modificar les seves dades.
f) Elimina alumne: a partir del codi d'un alumne ha d'esborrar aquest de la base de dades. Per
a esborrar-lo es posarà el seu codi a 0.
g) Compacta base de dades: ha d'esborrar definitivament del fitxer les dades dels alumnes
eliminats.
h) Tanca base de dades: ha de tancar el fitxer de dades.
LO TENGO MEDIO HECHO PERO NO CONSIGO QUE SE COMPILE BIEN, SI ALGUIEN ME PUDIESE AYUDAR SE LO AGRADECERIA MUCHO.
ESTE EL PROGRAMA:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main (int argc, char *argv[])
{
int tamany;
long mida;
int cont, residu, div, num_mida;
int i;
//char *bytes;
char *fitxer;
char *conta;
FILE *f;
fitxer = argv[1];
//bytes = argv [2];
f = fopen (fitxer, "rt"); //lee el fichero pasado por parametro
if (f == NULL)
printf("ERROR. EL arxiu no es pot obrir...");
if (fseek(f, 0, SEEK_END))//para que cuente hasta el final.
{
mida = ftell(f);//el tamaño que ha contado se lo asigna a mida
fseek (f, 0, SEEK_SET);//lo manda al principio
}
printf("mida: %ld", mida);
printf("fitxer: %s -->", fitxer);
if(mida > atoi (argv[1]))
{
div = mida / 1450000;
residu = mida % 1450000;
if(residu!=0)
num_disq = div + 1 ;
for(i=0;i<num_disq;i++))//
{
for(cont = 1; cont < (num_mida+1); cont++)
{
itoa (cont, conta, 10);
strcat (fitxer, ".");
strcat (fitxer, conta);
printf("\n\n %s", fitxer);
}
}
fclose (f);
printf ("tot ha sortit correctament.");
}
else
{
while (!feof)
{
printf("\nNo cal dividir el fitxer perque ja cap en un disquet de 3(1/2)\n");
printf("\nGracies per utilizar el programa d'informacio.");
}
}
}
Escriviu un programa que treballi amb el nom, cognom, edat i nota de diversos alumnes,
utilitzant la següent estructura (no heu d'utilitzar cap vector d'estructures) i que disposi de les
següents funcions:
struct fitxa {
Curs 2004-05, DAI 1, Crèdit 5 UD 4: Tractament de fitxers
Miquel Prior 18
int codi;
char nom[20];
char cognom[20];
float nota;
}
a) Obre base de dades: ha de crear un fitxer nou de dades o obrir un existent.
b) Insereix alumnes: ha d'inserir al final del fitxer noves dades d'alumnes. El programa s'ha
d'assegurar que el codi de l'alumne nou no existeix.
c) Mostra alumnes: ha de mostrar per pantalla les dades de tots els alumnes.
d) Cerca nom: ha de cercar i mostrar les dades de l'alumne que tingui el nom introduït.
e) Modifica alumne: ha de preguntar per un codi d'alumne i deixar a l'usuari la possibilitat de
modificar les seves dades.
f) Elimina alumne: a partir del codi d'un alumne ha d'esborrar aquest de la base de dades. Per
a esborrar-lo es posarà el seu codi a 0.
g) Compacta base de dades: ha d'esborrar definitivament del fitxer les dades dels alumnes
eliminats.
h) Tanca base de dades: ha de tancar el fitxer de dades.
LO TENGO MEDIO HECHO PERO NO CONSIGO QUE SE COMPILE BIEN, SI ALGUIEN ME PUDIESE AYUDAR SE LO AGRADECERIA MUCHO.
ESTE EL PROGRAMA:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main (int argc, char *argv[])
{
int tamany;
long mida;
int cont, residu, div, num_mida;
int i;
//char *bytes;
char *fitxer;
char *conta;
FILE *f;
fitxer = argv[1];
//bytes = argv [2];
f = fopen (fitxer, "rt"); //lee el fichero pasado por parametro
if (f == NULL)
printf("ERROR. EL arxiu no es pot obrir...");
if (fseek(f, 0, SEEK_END))//para que cuente hasta el final.
{
mida = ftell(f);//el tamaño que ha contado se lo asigna a mida
fseek (f, 0, SEEK_SET);//lo manda al principio
}
printf("mida: %ld", mida);
printf("fitxer: %s -->", fitxer);
if(mida > atoi (argv[1]))
{
div = mida / 1450000;
residu = mida % 1450000;
if(residu!=0)
num_disq = div + 1 ;
for(i=0;i<num_disq;i++))//
{
for(cont = 1; cont < (num_mida+1); cont++)
{
itoa (cont, conta, 10);
strcat (fitxer, ".");
strcat (fitxer, conta);
printf("\n\n %s", fitxer);
}
}
fclose (f);
printf ("tot ha sortit correctament.");
}
else
{
while (!feof)
{
printf("\nNo cal dividir el fitxer perque ja cap en un disquet de 3(1/2)\n");
printf("\nGracies per utilizar el programa d'informacio.");
}
}
}
Valora esta pregunta


0