Hola cracks! Que tal?
Les explico mi problema, estoy estudiando un ciclo formativo superior de Desenvolupador de sistemas informaticos y en la assignatura de programacion c++ nos han mandado un trabajo que trata de hacer una agenda electronica utilitzando ficheros. El caso esque nos hemos quedado sin tiempo y no se ha dado el tema en clase, y me he quedado sin tiempo para aprender a hacerlo tambien ya que la fecha de entrega de tal es el martes y estoy lleno de examenes.
Les adjunto el programa ( "los printf" estan en catalan, he passado todos los comentarios a castellano) y si algun experto me pudiera hacer los arreglos mágicos para que guardara los datos en un archivo lo agradeceria mucho!!
Un saludo y gracias!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DIM 20
void introdueix (struct agenda *p);
void esborrar (struct agenda *e);
void mostradora (struct agenda c);
void menu ();
void validar (struct agenda *v);
void pausar ();
struct agenda
{
char nom[20];
char cognom_primer[20];
char cognom_segon[20];
long telefon;
int valid;
};
int num=0;
int w=-1;
void main ()
{
int comp, opcio, xivato, i;
char cadena[20];
char cadena2[20];
struct agenda listin[DIM];
long temp;
for (i=0; i<20; i++) //Con este for se ponen todos los contactos como validos desde un principio.
validar( &listin
);
do{
menu();
scanf("%d",&opcio);//Elijo la opcion del switch
fflush(stdin);
system("cls");
switch(opcio)
{
case 1:// introducir contactos
introdueix( &listin[num]);
break;
case 2://borrar contactos
printf("Introdueix el nom del contacte que vols esborrar: ");
gets(cadena);
fflush(stdin);
printf("\nIntrodueix l'apellit del contacte que vols esborrar: ");
gets(cadena2);
fflush(stdin);
xivato=0;
for (i=0; i<w; i++)
{
if ((strcmp(cadena, listin.nom)==0) && (strcmp(cadena2, listin.cognom_primer)==0))//Compara el nom i cognom introduit amb els de tots els contactes
{ if (listin.valid==1)
{
esborrar(&listin);
printf("\nEl contacte de nom %s i apellit %s ha sigut esborrat.\n", cadena, cadena2);
}
xivato=0;
}
else
xivato=1;
}
if (xivato==1) printf("\nNo hi ha cap contacte amb aquest nom.\n");
pausar();
break;
case 3://Mostrar todos los contactos de la agenda
printf("\n AGENDA\n");
for (i=0; i<w; i++)
{
mostradora (listin);
}
pausar();
break;
case 4://Buscar un contacto x el nombre
printf("Introdueix el nom del contacte que vols buscar: ");
gets(cadena);
fflush(stdin);
xivato=0; //Utilizo la variable xivato como "trampilla" para mostrar la frase no hay ningun contacto...
for (i=0; i<w; i++)
{
comp=strcmp(cadena, listin.nom);//Compara el nombre introducido con todos los nombres
if (comp==0)
{
mostradora (listin);
xivato=0;
}
else
xivato=1;
}
if (xivato==1) printf("\nNo hi ha cap contacte amb aquest nom.\n");
pausar();
break;
case 5://Busca un contacte por el cognom
printf("Introdueix el cognom del contacte que vols buscar: ");
gets(cadena);
fflush(stdin);
xivato=0;
for (i=0; i<w; i++)
{
comp=strcmp(cadena, listin.cognom_primer);//Compara el cognom introducido con todos los cognoms
if (comp==0)
{
mostradora (listin);
xivato=0;
}
else xivato=1;
}
if (xivato==1) printf("\nNo hi ha cap contacte amb aquest cognom.\n");
pausar();
break;
case 6://Busca un contacto por su telefono
printf("Introdueix el telefon del contacte que vols buscar: ");
scanf("%ld", &temp);
fflush(stdin);
xivato=0;
for (i=0; i<w; i++)
{
if (temp==listin.telefon)//Compara el valor introducido con todos los telefonos
{
mostradora (listin);
xivato=0;
}
else xivato=1;
}
if (xivato==1) printf("\nNo hi ha cap contacte amb aquest telefon.\n");
pausar();
break;
}
}while(opcio!=7);
printf("\n\n C0pYriGHt_by_M&k3\n\n\n");
}
void introdueix (struct agenda *p) //Funcion para introducir contactos
{
if(num<=20)
{
printf("\nIntrodueix el nom del contacte:");
gets(p->nom);
printf("Introdueix el primer cognom del contacte:");
gets(p->cognom_primer);
printf("Introdueix el segon cognom del contacte:");
gets(p->cognom_segon);
printf("Introdueix el telefon del contacte:");
scanf("%ld", &p->telefon);
fflush(stdin);
p->valid=1;
num++;
w=num;
}
pausar();
}
//Funcion para borrar contactos
void esborrar (struct agenda *e)
{
e->valid=0;
}
//Funcion para mostrar los datos de un contacto
void mostradora (struct agenda c)
{
if (c.valid==1)
{
printf("\nNom: %s", c.nom);
printf("\nCognom: %s", c.cognom_primer);
printf("\nSegon cognom: %s", c.cognom_segon);
printf("\nTelefon: %ld\n", c.telefon);
}
}
// Funcion para mostrar el menu
void menu ()
{
printf(" *******************************************************");
printf("\n * *");
printf("\n * Si vols entrar un nou contacte prem 1 *");
printf("\n * Si vols esborrar un contacte prem 2 *");
printf("\n * Si vols mostrar tota l'agenda prem 3 *");
printf("\n * Si vols cercar un contacte pel nom prem 4 *");
printf("\n * Si vols cercar un contacte pel cognom prem 5 *");
printf("\n * Si vols cercar un contacte per telefon prem 6 *");
printf("\n * Si vols sortir prem 7. *");
printf("\n * *");
printf("\n *******************************************************\n");
printf(" OPCIO: ");
}
//Funcion para validar un contacto
void validar (struct agenda *v)
{
v->valid=0;
}
//Funcion para dar una pausa antes de volver a mstrar el menu
void pausar ()
{
printf("\n\nPrem la tecla ENTER per continuar...");
system("pause>null");
system("cls");
}