Programación General > C/C++

 Funcion Alta, estructuras.

<< < (2/3) > >>

Luciano9:
se, postie y no vi nada JEJEJ....

nicksynm:
Gracias Betopin,

La verdad que al codigo lo tenia mas completo y con cada funcion explicada, pero como no me funcionaba la funcion alta lo rehice rapidamente solo hasta ahi. Estaba seguro que por usar tantas funciones adentro de otras necesitaba punteros, pero como no se usarlos muy bien quise intentarlo si ellos. Seguramente eso era mi mayor error, por que tampoco lo podía corregir con el debugger ya que se me cerraba el programa.

nicksynm:
le hice un par de modificaciones y por alguna razon el contador (cont) de la funcion alta no cuenta. Por lo tanto cando utilizo la funcion imprimir solo imprimer lo que esta en la posicion 0:



#include <stdio.h>
#include <string.h>
#pragma warning (disable:4996)
#define MAX 100
#define CANT 1000
   
   typedef struct {
    char nyap [MAX];
        int doc;
      int posicion;
       struct
       {
              int dia;
             
      }fecha;
   }treg;
   
   int menu();
   void alta (treg agenda[CANT],int cont);
   void imprimir (treg agenda[CANT], int cont);
   int main ()
   {
       FILE *arch;
       treg agenda[CANT];
       int opc=0, cont=0;
       opc=menu();
      while(opc!=5){
       
           if(opc==1)
           {
              alta(&agenda[cont],cont);
           }
         if(opc==3)
         {
            imprimir(&agenda[cont],cont);
         }
           opc=menu();
        }
       return 0;
   }
   int menu ()
   {
       int op;
       printf("nnn1- Alta personasn2- Baja personasn3- Imprimir datos personan4- Guardar persona en un archivon5- SalirnnElija la Opcion desada:n");
       scanf("%d",&op);
       return op;
   
   }
 
   
   void alta (treg agenda[CANT], int cont)
   {
        int i=0;
        while(cont<CANT && i!=2)
        {
            printf("Nombre y Apellido:n");
            scanf("%s", &agenda[cont].nyap);
            printf("Numero de documento:n");
            scanf("%d",&agenda[cont].doc);
         agenda[cont].posicion=cont;
            printf("Fecha de Nacimiento:n");
            printf("dia:n");
            scanf("%d",&agenda[cont].fecha.dia);
            printf("Presione 1 para continuar, o 2 para finalizarn");
            scanf("%d",&i);
            cont++;
        }
   }
   void imprimir (treg agenda[CANT], int cont){
      int k=0;
      cont;
      while(k<=cont){
         printf("Nombre:%snDocumento:%dnPosicion:%dnFecha:%dn",agenda[k].nyap,agenda[k].doc,agenda[k].posicion,agenda[k].fecha);
         k=k+1;
      }
   }

m0skit0:
¿Por qué no usas las etiquetas de código?  <_<

betopin:
Hay dos razones

1) La varible cont es local y no global por ende cada valor que posea esta variable muere al ejecutarse la totalidad de cada funcion

2) Las funciones donde interviene esta variable son tipo void....es decir, no devuelven nada, creeria que la funcion Alta deberia ser tipo int y retornar cont para asi pasar este valor a la funcion de imprimir

S2

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa