Ok pongo el código : Necessito ver por que pierdo el resultado de la 2 a la 4 y tampoco inserto los numeros a la 4 esta comentado :D
Código C:
Ver original#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 30
struct agenda {
char nom[MAX+1];
char telf[MAX][10];
}persona[100];
void leerentrada(int);
void escribirsalida(int);
void menu(void);
void buscar_persona(int);
void borrar_persona(int);
void escriure_entrada(int);
/*! programa principal */
int main ( void ) {
menu ();
return 0;
}
void leerentrada(int i){
/*! Guardar per cada entrada com?*/
int x=0,n,in=0;
x=i; /*! Contar els usuaris */
printf ("\n\t Persona -------->: %d \n\n",x
=x
+1); printf ("\n\t Introdueix el nom, amb un minim de 4 caracters : "); scanf ("\n %[^\n]",persona
[i
].
nom);
for (in=0;in<n && in!=10;in++){//comprovo que no pasi de 10 telefons
printf ("\n\tIntrodueix el telefon : "); scanf (" %[^\n]" , persona
[i
].
telf[in
]); }
}
void escribirsalida(int i){
int in=0;
printf ("\n\t\t--Usuari/s --- %d\n ",i
+1); printf ("\n\t Nom %s\n", persona
[i
].
nom); for(in=0;in<10;in++){
printf ("\n\t telf %s \n",persona
[i
].
telf[in
]); }
}
void menu (void){
char eleccio;
int n,i,bol=0;
do {
printf ("\n\t Menu principal:\n\n"); printf ("\t 1.- CREAR un nou contacte\n"); printf ("\t 2.- cercar un contacte\n"); printf ("\t 3.- ESBORRAR un contacte\n"); printf ("\t 4.- Introdueix un telefon a la entrada \n"); printf ("\t 5.- FINAL DEL PROGRAMA\n"); eleccio = getche ();
if (eleccio == '1'){
printf ("\n Quantes persones vols ? "); scanf("%d",&n
); //agafo la funcio leerentrada
for(i=0;i<n;i++){
leerentrada(i);
}
printf("\n\t ----> Creacio de contactes amb exit \n\n"); }
else if (eleccio == '2'){
/*for(i=0;i<n;i++){
escribirsalida(i); //mostra tots els registres
}*/
buscar_persona(i); //li paso el maxim de la I ja sigui 2 , 6 ,9 aixi despres la reoorro
}else if(eleccio=='3'){
borrar_persona(i);
}
else if(eleccio=='4'){
char nom_per[MAX+1];
i=0;
printf ("\n Com es diu aquesta persona Digues amb un minim de 4 caracters : A-Z : "); scanf("%s", nom_per
);
while (i<n){
if(persona[i].nom[0]==nom_per[0] && persona[i].nom[1]==nom_per[1] && persona[i].nom[2]==nom_per[2] && persona[i].nom[3]==nom_per[3]){
escribirsalida(i);
escriure_entrada(i);
break;
}
i++;
}
if (i>=n){ // miro que si i es mes gran que x vol dir que no a arribat a x i salta
printf("\n\t No existeix intenta-ho de nou \n\n"); }
buscar_persona(i);
escriure_entrada(i);
}
} while (eleccio >='1' && eleccio <= '5');
}
void buscar_persona( int x){
char nom_per[MAX+1];
int i=0;
printf ("\n Com es diu aquesta persona Digues un minim de 4 caracters : A-Z : "); scanf("%s", nom_per
);
while (i<x){ //! Suposem que un mínim de 3 lletres entrem exemple "xavi"
if( persona[i].nom[0]==nom_per[0] && persona[i].nom[1]==nom_per[1] && persona[i].nom[2]==nom_per[2] && persona[i].nom[3]==nom_per[3]){//necessitaria un gets(nom_per) i strlen(nom_per) amb un for
escribirsalida(i);
break;
}
i++;
}
if (i>=x){ // miro que si i es mes gran que x vol dir que no a arribat a x i salta
printf("\n\t No existeix intenta-ho de nou \n\n"); }
}
void borrar_persona (int x){
char nom_per[MAX+1];
int i=0;
printf("Quina persona vols borrar ? escriu un minim de 4 caracters : A-Z "); scanf("%s",nom_per
);
while (i<x){
if(persona[i].nom[0]==nom_per[0] && persona[i].nom[1]==nom_per[1] && persona[i].nom[2]==nom_per[2] && persona[i].nom[3]==nom_per[3]){
printf ("\n\t Nom %s\n", persona
[i
].
nom); printf ("\n\t El seu telf %s \n ",persona
[i
].
telf); printf ("\n\t Ha sigut borrat amb Exit \n\n\n"); //strcpy (persona[i].telf," ");
break;
}
i++;
}
if (i>=x){
printf("\n\t No existeix intenta-ho de nou \n\n"); }
}
void escriure_entrada(int v){
int i=0,in=0;
char n;
//char f[MAX];
while (i<10 && n!='n'){//tinc que agafar la I
//printf("\n\tIntrodueix un nou telf : _ " ); scanf(" %[^\n]",persona[x].telf[i]); fflush( stdin ) ; //neteja la entrada/buffer
printf("\n\tVols seguir introduint ? : S o N : _ "); n
= getche
(); i++;
}
}