problema con ejercicio de agenda con punteros

Iniciado por attackers, 16 Noviembre 2011, 22:22 PM

0 Miembros y 1 Visitante están viendo este tema.

attackers

amigos necesito crear agendas que lleve punteros dinamicos

lo primero que lleva obviamente es ingresar los amigos, nombre, numero de telefono

que elimine 1 amigo

que busque un amigo y apareza su numero de telefono y un listado general que muestre todo los contactos agregado

solo que lleva punteros y no se como hacerlo con punteros


si alguien me da una idea de mas o menos como empezar




#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define p printf
#define s scanf


typedef struct agenda{

      char nombre;

      char apellido;

      int edad;

      };
int *puntero;

typedef agenda *puntero;

main()

{
   


     p("\ndiga el nombre de su amigo: ");
     s("%s",agenda.nombre);
     
   
   
     p("\ndiga el apellido de su amigo: ");
     s("%s",agenda.apellido);

      p("\ndiga el numero de telefono de su amigo: ");
      s("%s",agenda.telefono);
     
}


primero trato de hacerlo de 1 amigo pero no tengo ni idea de como hacerlo con puntero y structud

attackers

si me puede ir orientandolo para ver si lo puedo terminar y aprender hacerlo les agradeceria

rir3760

Si no tienes un libro de calidad ya es hora de conseguir uno, empieza revisando el tema [Libros/Papers] C/C++. El programa tiene varios errores que se describen en detalle en |Lo que no hay que hacer en C/C++. Nivel basico|.

Aparte de eso hay que evitar el uso de macros:
#define p printf
#define s scanf

Ello porque si cualquiera ve "printf/scanf" ya sabe de que se trata el asunto, no hay que revisar las definiciones.


Para trabajar con memoria reservada de forma dinámica lo primero que debes hacer es llamar a malloc/calloc/realloc, accedes al objeto utilizando operadores como "->" o "[]" y finalmente liberas la memoria mediante la función "free".

Un empujón:
#include <stdio.h>
#include <stdlib.h>

#define NUM_CHARS  128

struct agenda {
   char nombre[NUM_CHARS];
   char apellido[NUM_CHARS];
   int edad;
   
};

int main(void)
{
    struct agenda *p;
    struct agenda *q;
    int num_regs = 3;
    int i;
    int ch;
   
    /* 1) Reservamos el bloque de memoria */
    if ((p = malloc(num_regs * sizeof *p)) == NULL)
        return EXIT_FAILURE;
   
    /* 2) Leemos los registros */
    q = p;
    for (i = 0; i < num_regs; i++){
        printf("Registro %d\n", i + 1);
       
        printf("Nombre: ");
        fflush(stdout);
        fgets(q->nombre, NUM_CHARS, stdin);
       
        printf("Apellidos: ");
        fflush(stdout);
        fgets(q->apellido, NUM_CHARS, stdin);
       
        printf("Edad: ");
        fflush(stdout);
        scanf("%d", &q->edad);
       
        while ((ch = getchar()) != EOF && ch != '\n')
            ;
       
        q++;
    }
   
    /* 3) Impresion de los registros */
    for (i = 0; i < num_regs; i++){
        printf("Registro %d\n", i + 1);
       
        printf("Nombre: %s\n", p[i].nombre);
        printf("Apellidos:  %s\n", p[i].apellido);
        printf("Edad: %d\n\n", p[i].edad);
    }
   
    /* 4) Liberamos la memoria */
    free(p);
   
    return EXIT_SUCCESS;   
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

attackers

#3
amigo mira aqui lo hice de otra forma

#include<stdio.h>
#include<conio.h>
#include <stdlib.h>


struct contacto{
      char nombre[40];
      long telefono;
      int edad;
      };
     
    typedef struct contacto tipo_contacto;

int contador;
int numerodeamigos;
int mostrar[100];

void main(void) {
tipo_contacto c1;



printf("cuantos amigos quiere agregar: ");
scanf("%d",&numerodeamigos);
system("cls");
                   
                    for (contador=0; contador<numerodeamigos; contador++)   {


              printf("ingrese el nombre: ");
fflush(stdin);
gets(c1.nombre);

             printf("Ingrese el telefono: ");
fflush(stdin);
scanf("%d",&c1.telefono);

              printf("diga su edad: ");
fflush(stdin);
scanf("%d",&c1.edad);

system("cls");
         printf("\n");
            printf("-----------------------------------------\n");

 

        system("pause");

   

}

    printf("El nombre es: %s, \n", c1.nombre);
   printf ("el telefono: %d  \n",c1.telefono);
  printf ("edad es: %d \n",c1.edad");
      system("pause");
         return 0;
    }



si me puedes decir que error o que debo mejor

pd: como le puedo hacer un for para que se muestre la cantidades de veces  segun los amigos que quize agregar

for (i=0; i<numerodeamigos; i++)

    printf("El nombre es: %s, \n", c1[i].nombre);
   printf ("el telefono: %d  \n",c1[i].telefono);
  printf ("edad es: %d \n",c1[i].edad");


no se si me entienden