SoloCodigo
		Asuntos Oficiales => Papelera => Mensaje iniciado por: miquel-88 en Miércoles 28 de Mayo de 2008, 23:00
		
			
			- 
				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");
 }