Ver Mensaje Individual
  #7 (permalink)  
Antiguo 03/05/2012, 12:32
drakgoku1
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Acciones recojiendo siempre la misma letra ?

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
  1. #include      <conio.h>
  2. #include      <stdio.h>
  3. #include      <stdlib.h>
  4. #include      <string.h>
  5.  
  6. #define       MAX 30
  7.  
  8.  
  9. struct        agenda {
  10.     char      nom[MAX+1];
  11.     char      telf[MAX][10];
  12.  
  13. }persona[100];
  14.  
  15.     void      leerentrada(int);
  16.     void      escribirsalida(int);
  17.     void      menu(void);
  18.     void      buscar_persona(int);
  19.     void      borrar_persona(int);
  20.     void      escriure_entrada(int);
  21.  
  22.                                     /*! programa principal */
  23. int main ( void ) {
  24.  
  25.         menu ();
  26.         system ("PAUSE");
  27.  
  28.     return 0;
  29. }
  30.  
  31. void leerentrada(int i){
  32.     /*! Guardar per cada entrada com?*/
  33.     int x=0,n,in=0;
  34.     x=i; /*! Contar els usuaris */
  35.     printf     ("\n\t Persona -------->: %d \n\n",x=x+1);
  36.     printf     ("\n\t Introdueix el nom, amb un minim de 4 caracters :  ");
  37.     scanf      ("\n %[^\n]",persona[i].nom);
  38.  
  39.     printf("\n\tQuants telefons vols ? "); scanf("%d",&n);
  40.  
  41.     for (in=0;in<n && in!=10;in++){//comprovo que no pasi de 10 telefons
  42.         printf     ("\n\tIntrodueix el telefon : ");
  43.         scanf      (" %[^\n]" , persona[i].telf[in]);
  44.     }
  45. }
  46. void escribirsalida(int i){
  47.     int in=0;
  48.     printf     ("\n\t\t--Usuari/s ---  %d\n ",i+1);
  49.     printf     ("\n\t Nom %s\n", persona[i].nom);
  50.     for(in=0;in<10;in++){
  51.         printf     ("\n\t telf %s  \n",persona[i].telf[in]);
  52.     }
  53. }
  54. void menu (void){
  55.     char eleccio;
  56.     int n,i,bol=0;
  57.  
  58.     do {
  59.         system ("CLS");
  60.         printf ("\n\t Menu principal:\n\n");
  61.         printf ("\t 1.- CREAR un nou contacte\n");
  62.         printf ("\t 2.- cercar un contacte\n");
  63.         printf ("\t 3.- ESBORRAR un contacte\n");
  64.         printf ("\t 4.- Introdueix un telefon a la entrada \n");
  65.         printf ("\t 5.- FINAL DEL PROGRAMA\n");
  66.         printf ("\t Eleccio: ");
  67.         eleccio = getche ();
  68.         printf ("\n");
  69.  
  70.         if (eleccio == '1'){
  71.            printf ("\n Quantes persones vols ? "); scanf("%d",&n);
  72.            //agafo la funcio leerentrada
  73.             for(i=0;i<n;i++){
  74.                 leerentrada(i);
  75.             }
  76.             printf("\n\t ----> Creacio de contactes amb exit \n\n");
  77.             system ("PAUSE");
  78.         }
  79.         else if (eleccio == '2'){
  80.             /*for(i=0;i<n;i++){
  81.                 escribirsalida(i); //mostra tots els registres
  82.             }*/
  83.             buscar_persona(i); //li paso el maxim de la I ja sigui 2 , 6 ,9 aixi despres la reoorro
  84.  
  85.         }else  if(eleccio=='3'){
  86.  
  87.             borrar_persona(i);
  88.         }
  89.         else if(eleccio=='4'){
  90.  
  91.  
  92.             char nom_per[MAX+1];
  93.             i=0;
  94.             printf ("\n Com es diu aquesta persona Digues amb un minim de 4 caracters : A-Z  : "); scanf("%s", nom_per);
  95.  
  96.             while (i<n){
  97.                 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]){
  98.                     escribirsalida(i);
  99.                     escriure_entrada(i);
  100.                     break;
  101.                 }
  102.                 i++;
  103.             }
  104.             if (i>=n){ // miro que si i es mes gran que x vol dir que no a arribat a x i salta
  105.                 printf("\n\t No existeix intenta-ho de nou  \n\n");
  106.             }
  107.        
  108.         buscar_persona(i);
  109.         escriure_entrada(i);
  110.  
  111.         }
  112.     } while (eleccio >='1' && eleccio <= '5');
  113. }
  114.  
  115. void buscar_persona( int x){
  116.         char nom_per[MAX+1];
  117.         int i=0;
  118.             printf ("\n Com es diu aquesta persona Digues un minim de 4 caracters :  A-Z  : "); scanf("%s", nom_per);
  119.  
  120.             while (i<x){         //! Suposem que un mínim de 3 lletres entrem exemple "xavi"
  121.                 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
  122.                     escribirsalida(i);
  123.                     break;
  124.                 }
  125.                 i++;
  126.             }
  127.             if (i>=x){ // miro que si i es mes gran que x vol dir que no a arribat a x i salta
  128.                 printf("\n\t No existeix intenta-ho de nou  \n\n");
  129.             }
  130.             system ("PAUSE");
  131. }
  132.  
  133. void borrar_persona (int x){
  134.     char nom_per[MAX+1];
  135.     int i=0;
  136.     printf("Quina persona vols borrar ? escriu un minim de 4 caracters :  A-Z  "); scanf("%s",nom_per);
  137.  
  138.     while (i<x){
  139.         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]){
  140.             printf  ("\n\t Nom %s\n", persona[i].nom);
  141.             printf  ("\n\t El seu telf %s \n ",persona[i].telf);
  142.             printf  ("\n\t Ha sigut borrat amb Exit \n\n\n");
  143.             strcpy  (persona[i].nom," ");
  144.             //strcpy  (persona[i].telf," ");
  145.  
  146.             break;
  147.         }
  148.         i++;
  149.     }
  150.     if (i>=x){
  151.         printf("\n\t No existeix intenta-ho de nou \n\n");
  152.     }
  153.     system ("PAUSE");
  154. }
  155.  
  156. void escriure_entrada(int v){
  157.     int i=0,in=0;
  158.     char n;
  159.     //char f[MAX];
  160.     while (i<10 && n!='n'){//tinc que agafar la I
  161.  
  162.             //printf("\n\tIntrodueix un nou telf : _ " ); scanf(" %[^\n]",persona[x].telf[i]);  fflush( stdin ) ; //neteja la entrada/buffer
  163.             printf("\n %d ",v);
  164.  
  165.  
  166.  
  167.         printf("\n\tVols seguir introduint ? : S o N : _ "); n = getche ();
  168.         i++;
  169.     }
  170. }