• Lunes 29 de Abril de 2024, 00:22

Autor Tema:  Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡  (Leído 4393 veces)

AFRODITA

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« en: Jueves 7 de Marzo de 2002, 13:07 »
0
LO SIENTO PERO ESTO ES IMPORTANTE NECESITO UN PROGRAMA CON UN MENU  CON PUNTEROS,ESTRUCTURAS Y ARRAYS PARA APROBAR LA ASIGNATURA, ES IMPORTANTE, ALGO SIMILAR A ESTO PERO CON ESTRUCTURAS O PUNTEROS O ESTE MISMO QUITANDO LO DE FICHEROS Y REMPLAZANDOLOS POR PUNTEROS A ESTRUCTURAS:

#include <conio.h>
#include <stdio.h>
#define MAX 1000
#define LV 15

unsigned char menu();
void altas();
void bajas();
void modificaciones();
void consultas();
void pantalla_datos();
void cabeceras();
struct limites desde_hasta();
char pregunte_s_n(char *);
char tipos[5][25]={"contado","normal","preferente","especial","extra"};
int descuentos[5]={0,5,10,20,30};
struct cliente
{
  char nombre[15];
  char direccion[30];
  int tipo;
  char control_alta;
};
struct limites
{
  int inicio;
  int fin;
};

main()
{
  unsigned char opcion;
  while(toupper(opcion=menu())!='F')
  {
    switch(opcion)
    {
      case '1':altas();
      break;
      case '2':bajas();
      break;
      case '3':modificaciones();
      break;
      case '4':consultas();
      break;
    }
  }
}

unsigned char menu()
{
  unsigned char op;
  clrscr();
  gotoxy(10,10);printf("MENU DE MANTENIMIENTO");
  gotoxy(10,11);printf("=====================");
  gotoxy(14,14);printf("1-->Altas");
  gotoxy(14,15);printf("2-->Bajas");
  gotoxy(14,16);printf("3-->Modificaciones");
  gotoxy(14,17);printf("4-->Consultas");
  gotoxy(14,20);printf("F-->Fin");
  gotoxy(10,23);printf("Introduzca opcion:");
  while(op=toupper(getch()),(op<'1'||op>'4')&&op!='F');
  return(op);
}

void altas()
{
  FILE *canal;
  struct cliente cli;
  int num_cli;
  while((canal=fopen("CLIENTES","r+b"))==NULL)
  {
    canal=fopen("CLIENTES","wb");
    fclose(canal);
  }
  do
  {
   pantalla_datos();
   gotoxy(21,7);
   do
   {
     gotoxy(21,7);printf("      ");
     gotoxy(21,7);scanf("%d",&num_cli);
   }while(num_cli<1||num_cli>MAX);
   cli.control_alta='0';
   fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
   fread(&cli,sizeof(struct cliente),1,canal);
   if(cli.control_alta=='1')
   {
     gotoxy(10,20);printf("Cliente ya existente");
     continue;
   }
   gotoxy(21,9);scanf("%s",cli.nombre);
   gotoxy(21,11);scanf("%s",cli.direccion);
   do
   {
     gotoxy(21,13);printf("      ");
     gotoxy(21,13);scanf("%d",&cli.tipo);
   }while(cli.tipo<1||cli.tipo>5);
   gotoxy(25,13);printf("Cliente %s",tipos[cli.tipo-1]);
   gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]);
   if(pregunte_s_n("Correcto?(S/N):")=='S')
   {
    cli.control_alta='1';
    fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
    fwrite(&cli,sizeof(struct cliente),1,canal);
   }
  }while(pregunte_s_n("M s altas?(S/N):")=='S');
  fclose(canal);
}

void bajas()
{
  FILE *canal;
  struct cliente cli;
  int num_cli;
  while((canal=fopen("CLIENTES","r+b"))==NULL)
  {
    canal=fopen("CLIENTES","wb");
    fclose(canal);
  }
  do
  {
   pantalla_datos();
   gotoxy(21,7);
   do
   {
    gotoxy(21,7);printf("      ");
    gotoxy(21,7);scanf("%d",&num_cli);
   }while(num_cli<1||num_cli>MAX);
   cli.control_alta='0';
   fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
   fread(&cli,sizeof(struct cliente),1,canal);
   if(cli.control_alta!='1')
   {
    gotoxy(10,20);printf("Cliente no existente");
    continue;
   }
   gotoxy(21,9);printf("%s",cli.nombre);
   gotoxy(21,11);printf("%s",cli.direccion);
   gotoxy(21,13);printf("%d",cli.tipo);
   gotoxy(25,13);printf("Cliente %s",tipos[cli.tipo-1]);
   gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]);
   if(pregunte_s_n("Confirma la baja?(S/N):")=='S')
   {
    cli.control_alta='0';
    fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
    fwrite(&cli,sizeof(struct cliente),1,canal);
   }
  }while(pregunte_s_n("M s bajas?(S/N):")=='S');
  fclose(canal);
}

void modificaciones()
{
  FILE *canal;
  struct cliente cli;
  int num_cli;
  while((canal=fopen("CLIENTES","r+b"))==NULL)
  {
    canal=fopen("CLIENTES","wb");
    fclose(canal);
  }
  do
  {
    pantalla_datos();
    gotoxy(21,7);
    do
    {
       gotoxy(21,7);printf("      ");
       gotoxy(21,7);scanf("%d",&num_cli);
    }while(num_cli<1||num_cli>MAX);
    cli.control_alta='0';
    fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
    fread(&cli,sizeof(struct cliente),1,canal);
    if(cli.control_alta!='1')
    {
      gotoxy(10,20);printf("Cliente no existente");
      continue;
    }
    gotoxy(21,9);printf("%s",cli.nombre);
    gotoxy(21,11);printf("%s",cli.direccion);
    gotoxy(21,13);printf("%d",cli.tipo);
    gotoxy(25,13);printf("Cliente %d",tipos[cli.tipo-1]);
    gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]);
    if(pregunte_s_n("Modificar nombre?(S/N):")=='S')
    {
      gotoxy(21,9);printf("      ");
      gotoxy(21,9);scanf("%s",cli.nombre);
    }
    if(pregunte_s_n("Modificar direccion?(S/N):")=='S')
    {
      gotoxy(21,11);printf("      ");
      gotoxy(21,11);scanf("%s",cli.direccion);
    }
    if(pregunte_s_n("Modificar tipo?(S/N):")=='S')
    {
       gotoxy(21,13);printf("  ");
       gotoxy(25,13);printf("      ");
       gotoxy(65,13);printf("   ");
       do
       {
    gotoxy(21,13);printf("      ");
    gotoxy(21,13);scanf("%d",&cli.tipo);
       }while(cli.tipo<1||cli.tipo>5);
       gotoxy(25,13);printf("Cliente %s",tipos[cli.tipo-1]);
       gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]);
    }
    if(pregunte_s_n("Confirma la modificacion?(S/N):")=='S')
    {
       fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
       fwrite(&cli,sizeof(struct cliente),1,canal);
    }
  }while(pregunte_s_n("M s modificaciones?(S/N):")=='S');
  fclose(canal);
}

void consultas()
{
 struct limites limite;
 FILE *canal;
 struct cliente cli;
 int num_cli,i;
 while((canal=fopen("CLIENTES","r+b"))==NULL)
 {
    canal=fopen("CLIENTES","wb");
    fclose(canal);
 }
 limite=desde_hasta();
 num_cli=limite.inicio;
 while(num_cli<=limite.fin)
 {
    i=0;
    cabeceras();
    while(i<LV&&num_cli<=limite.fin)
    {
      cli.control_alta='0';
      fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET);
      fread(&cli,sizeof(struct cliente),1,canal);
      if(cli.control_alta=='1')
      {
   printf("%3d%-20s%-20s Cliente %-15s%2dn",num_cli,cli.nombre,
         cli.direccion,tipos[cli.tipo-1],descuentos[cli.tipo-1]);
   i++;
      }
      num_cli++;
    }
    if(pregunte_s_n("¨Continuar?(S/N):")=='N') break;
 }
 fclose(canal);
}

void pantalla_datos()
{
  clrscr();
  gotoxy(35,2);printf("DATOS DE CLIENTES");
  gotoxy(35,3);printf("=================");
  gotoxy(5,7);printf("N§ DE CLIENTE:");
  gotoxy(5,9);printf("    NOMBRE: ");
  gotoxy(5,11);printf("  DIRECCION: ");
  gotoxy(5,13);printf("     TIPO: ");
  gotoxy(50,13);printf("DESCUENTO(%):");
  gotoxy(3,16);printf("TIPOS DE CLIENTES:n");
  printf("1->contado,2->normal,3->preferente,4->especial,5->extra");
}

char pregunte_s_n(char *cadena)
{
  char respuesta;
  gotoxy(10,22);printf("%s",cadena);
  while(respuesta=toupper(getch()),respuesta!='S'&&respuesta!='N');
  gotoxy(10,22);printf("%50s","");
  return(respuesta);
}

struct limites desde_hasta()
{
   struct limites l;
   clrscr();
   gotoxy(10,10);printf("Visualizar desde:");scanf("%d",&l.inicio);
   if(l.inicio==0) l.inicio=1;
   gotoxy(10,12);printf("Visualizar hasta: ");scanf("%d",&l.fin);
   if(l.fin==0||l.inicio>l.fin||l.fin>MAX) l.fin=MAX;
   clrscr();
   return l;
}

void cabeceras()
{
  clrscr();
  printf("%-20s %-28s %-10s %12sn","NOMBRE","DIRECCION","TIPO","DESCUENTO");
  printf("=======================================================================n");
}





:P:P:P:P:(:(:(

olla

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #1 en: Jueves 7 de Marzo de 2002, 13:45 »
0
De verdad piensas, que vas a aprobar, aunque alguién te conteste, y te deje un código. No será lo que te piden y no te vas a enterar de nada. Cúrratelo un poco e intenta hacerlo tu solo, si no sabes, aprende y otro año será. Piensa que hay gente que ha tardado varios años y convocatorias para aprobar una asigantura de programación, Y desde luego cuando la aprobó no fue copiando, es muy dificil comprender y explicar un código que no es tuyo.
Eres tu John Wayne o lo soy yo?

AFRODITA

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #2 en: Jueves 7 de Marzo de 2002, 13:58 »
0
Siento contestarte olla que no lo llevo tan mal pero lo que pasa es que la programación no es mi fuerte aunque no lo lleve muy bien,pero es que lo de los punteros es horroroso, asi que si porfavor sabes ayudame anda¡¡¡¡

tenesor

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #3 en: Jueves 7 de Marzo de 2002, 14:02 »
0
Bueno, a pesar de la polemica creada en el otro tema debo darle la razón a olla (esta vez va en serio:)). Si es algo con lo que te juegues una nota deberias hacerlo tu sol@. Y bueno, que no se te de bien no tiene nada que ver con que te lo curres, si no lo haces, como piensas comprender-aprenderlo?

olla: ves como aunque alguien responda no tienes porque quedarte callado? te quedas satisfecho?

Saludos,
  Tenesor
Que el toro estoque al matador, que el preso enciere al guardián, que solo sean de cerveza los tanques, que el pez pesque al pescador y que el tigre dome al domador, que la television se prohiba y el hachis se legalice, que africa sea tierra mágica y no trágica... cambiando el mundo [NS]

AFRODITA

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #4 en: Jueves 7 de Marzo de 2002, 14:06 »
0
Me lo he currado y mucho pero me salen como 16 errores de asignacion de memoria, entonces ya he desistido y lo he buscado en 100000 pags de internet pero na de na, y solo pido un poco de ayuda para modificar este programa, solo cambiar los ficheros por puntero no pido tanto.

tenesor

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #5 en: Jueves 7 de Marzo de 2002, 14:20 »
0
Errores en asignacion de memoria? Con los punteros, les reservas la memoria?

El malloc...

Y si usas algun compilador de borland, no hace falta mirar las 100000 pags de inet, la ayuda que incluye borland es muy buena.

Saludos,
  Tenesor
Que el toro estoque al matador, que el preso enciere al guardián, que solo sean de cerveza los tanques, que el pez pesque al pescador y que el tigre dome al domador, que la television se prohiba y el hachis se legalice, que africa sea tierra mágica y no trágica... cambiando el mundo [NS]

AFRODITA

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #6 en: Jueves 7 de Marzo de 2002, 14:23 »
0
Gracias pero lo que pasa que esa funcion ya la tenia yo puesta no se si estará en su sitio pero los errores me los sigue dando asi que no se, pero es que me vale 3 puntos esto sobre la nota, porfaaaaaaaaaaa
buaaaaaaaaaaaaaaaaa

tenesor

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #7 en: Jueves 7 de Marzo de 2002, 14:30 »
0
Bueno, yo no se que es lo que supone esos tres puntos en una nota, pero si me dices el error exacto (los que se repitan no hacen falta:)) a lo mejor te puedo echar una mano.
Pero por supuesto mi ayuda no sería tan valiosa y productiva como la de olla...:D;)

Lo siento si te corre prisa pero me tengo que ir... De todas formas deja los errores para ver si alguien ahora por aqui te pueda echar una mano...

Saludos,
  Tenesor

[Modificado el 3/7/02 por tenesor]
Que el toro estoque al matador, que el preso enciere al guardián, que solo sean de cerveza los tanques, que el pez pesque al pescador y que el tigre dome al domador, que la television se prohiba y el hachis se legalice, que africa sea tierra mágica y no trágica... cambiando el mundo [NS]

olla

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #8 en: Jueves 7 de Marzo de 2002, 16:11 »
0
Vamos a ver Afrodita, explicate que es lo que quieres, porque es que no me entero. Dices que quieres el mismo programa pero en lugar de ficheros con punteros ¿?. No te comprendo o tu no te explicas bien. Estas mezclando ficheros (estructuras contenedoras de datos) con punteros (direcciones de memoria). Aclarate y aclarame y si puedo te ayudaré.
Eres tu John Wayne o lo soy yo?

EQLucky

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #9 en: Jueves 7 de Marzo de 2002, 23:39 »
0
Lo mismo me pasa a mi... En menos de una semana han empezado a proliferar los threads con preguntas sobre "alguien me puede ayudar", "por favor, me juego el curso", y cosas por el estilo.

Yo, a lo mejor, no soy el más indicado para hablar sobre el tema porque no he ayudado mucho a la gente de por aquí (aunque esté de exámenes:P).

A mí siempre se me ha dado siempre bien la lógica (por algo estuve dos años en la carrera de Matemáticas y se me dió bien:D), pero soy bastante penoso en cuanto a programar, es decir, PLASMAR mis ideas en papel. Lo que quiero decir es que siempre he intentado, ahora que estoy terminando un módulo superior de informática, buscarme la visa. Afrodita, ¿te han dado apuntes sobre punteros? ¿Has preguntado a los compañeros de clase? ¿Tienes ejemplos de clase o algo parecido a lo que preguntas? En serio, yo me he visto en tu situación y es muy agobiante, pero es que, si tú no te lo trabajas (Y NO LO ESTOY DUDANDO) no sé quién lo hará.

Además, aclárate con lo que pides, por favor...

Espero no ofender a nadie, en serio, porque yo mismo me he visto en esa situación.
\"Un sueño que merece la pena soñar es un sueño por el que merece la pena luchar.\"

AFRODITA

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #10 en: Viernes 8 de Marzo de 2002, 12:53 »
0
OLLA QUIERO ALGO SIMILAR A ESTO:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>


typedef struct
{
   char *nombre;
   char *direccion;
   int edad;


}mao;


void introdatos(mao *p,int datos);
void borradatos(mao *p,int datos);
void modificadatos(mao *p,int datos);
void listadatos(mao *p,int datos);
void ventana();
void menu();


void main()
{
   ventana();
   mao *p;
   int datos=0,opc;
   p=(mao *)malloc (sizeof(mao));
   for(;;)
   {
      clrscr();
      menu();
      scanf ("%d",&opc);
      switch (opc)
      {
         case 1: datos++;
                 p=(mao *)realloc(p,datos*sizeof(mao));
                 introdatos(p,datos);break;
         case 2: listadatos(p,datos);break;
         case 3: modificadatos(p,datos);break;
         case 4: borradatos(p,datos);
                 datos--;
                 p=(mao *)realloc(p,datos*sizeof(mao));break;
                 case 5: exit(0);default:printf("ERROR");
      }
   }
   getch();
}

void introdatos(mao *p,int datos)
{
   char x[100],y[100],z[50];
   fflush(stdin);

   printf("Introduzca el nombre del cliente: ");
   gets(x);
   (&p[datos-1])->nombre=(char *)malloc(strlen(x)*sizeof(char));
   strcpy((&p[datos-1])->nombre,x);

   printf("Introduzca la direccion del cliente: ");
   gets(y);
   (&p[datos-1])->direccion=(char *)malloc(strlen(y)*sizeof(char));
   strcpy((&p[datos-1])->direccion,y);

   printf("Introduzca la edad del cliente: ");
   scanf("%d",&(&p[datos-1])->edad);


}

void borradatos(mao *p,int datos)
{
   int i,d;
   printf("Introduzca el cliente que desee eliminar(entre 0 y %d): ",datos-1);
   scanf("%d",&i);
   printf("El cliente a eliminar es %sn",i,(&p)->nombre);
   for(d=i;d<datos-1;d++)
      p[d]=p[d+1];
   getch();
}

void modificadatos(mao *p,int datos)
{
   int i;
   fflush(stdin);

   printf("Introduzca el cliente que desee modificar(entre 0 y %d): ",datos-1);
   scanf("%d",&i);
   printf("El cliente a modificar es %sn",i,(&p)->nombre);

   printf("Introduzca el nombre : ");
   gets((&p)->nombre);
   gets((&p)->nombre);

   printf("Introduzca la direccion: ");
   gets((&p)->direccion);

   printf("Introduzca la edad: ");
   scanf("%d",&((&p)->edad));


}

void listadatos(mao *p,int datos)
{
   int i;
   printf("Los clientes introducidos son:n");
   for(i=0;i<datos;i++)

   printf("nNombre: %sn Direccion: %sn Edad: %dn",(&p)->nombre,(&p)->direccion,(&p)->edad);
   getch();
}
void ventana()
{
   window(1,1,80,25);
   textbackground(13);
   textcolor(BLACK);
   clrscr();
}
void menu ()
{
   printf("nnnnnn************MENU*************n");
   printf("1)Introducir clientesn");
   printf("2)Listar clientesn");
   printf("3)Modificar clientesn");
   printf("4)Borrar clientesn");
   printf("5)Salirn");
}

PERO CON UN POCO MAS DE MANDANGA, PERO ES QUE YO ME PONGO HA MODIFICARLE Y ME DAN 200 ERRORES.
PORFAAAAAAAA

delpa

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #11 en: Viernes 8 de Marzo de 2002, 15:48 »
0
Toma esto es lo mas parecido que he encontrado ya hecho, como comprenderas no me voy a poner a estudiar tu programa, que yo tambien tengo que estudiar mi carrera:)

---------------------------------------------
/*-------------------------*/
  /*  Ejemplo en C:          */
  /*  LISTA1.C               */
  /*                         */
  /*  Lista enlazada simple  */
  /*                         */
  /*  Comprobado con:        */
  /*    - Turbo C++ 1.01     */
  /*    - Djgpp 2.01         */
  /*-------------------------*/

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

  typedef

    struct f            /* Estos son los datos que guardamos: */
    {
      char nombre[30];          /*   Nombre, hasta 30 letras */
      char direccion[50];       /*   Direccion, hasta 50 */
      int edad;                 /*   Edad, un numero < 255 */
      struct f* siguiente;      /*   Y dirección de la siguiente */
    } Ficha;
 

  Ficha* dato1;                /* Va a ser un puntero a ficha */
  Ficha* dato2;                /* Otro puntero a ficha */
  Ficha* dato3;                /* Y otro más */

  void MuestraLista ( Ficha *inicial )
  {
    if (inicial)                               /* Si realmente hay lista */
    {
      printf("Nombre: %sn", inicial->nombre);
      printf("Dirección: %sn", inicial->direccion);
      printf("Edad: %dnn", inicial->edad);
      MuestraLista ( inicial->siguiente );    /* Y mira el siguiente */
    }
  }

  int main()
  {
  dato1 = (Ficha*) malloc (sizeof(Ficha)); /* Reservamos memoria */
  strcpy(dato1->nombre, "Pepe");           /* Guardamos el nombre, */
  strcpy(dato1->direccion, "Su casa");     /*   la dirección */
  dato1->edad = 40;                        /*   la edad */
  dato1->siguiente = NULL;                 /* y no hay ninguna más */
 

  dato2 = (Ficha*) malloc (sizeof(Ficha)); /* Reservamos memoria */
  strcpy(dato2->nombre, "Juan");           /* Guardamos el nombre, */
  strcpy(dato2->direccion, "No lo sé");    /*   la dirección */
  dato2->edad = 35;                        /*   la edad */
  dato2->siguiente = NULL;                 /* y no hay ninguna más */

  dato1->siguiente = dato2;                /* Enlazamos la anterior con ella */
 

  dato3 = (Ficha*) malloc (sizeof(Ficha)); /* La tercera */
  strcpy(dato3->nombre, "Carlos");
  strcpy(dato3->direccion, "Por ahí");
  dato3->edad = 14;
  dato3->siguiente = dato2;                /* enlazamos con la siguiente */

  dato1->siguiente = dato3;                /* y la anterior con ella */

  printf("La lista inicialmente es:n");
  MuestraLista (dato1);

  dato1->siguiente = dato2;        /* Borrar dato3: Enlaza Dato1 y Dato2 */
  free(dato3);                     /* Libera lo que ocupó Dato3 */

  printf("Y tras borrar dato3:nn");
  MuestraLista (dato1);

  return 0;
  }

 Esto es en esencia lo que pides, si le pones la funcion del menu y eso, esto se llaman listas y te costara comprenderlo, pero una vez comprendido resulta muy util y simplifica todo el proceso de programar bases de datos. Si te vas al foro de principiantes veras unos cursos que tratan esto en profundidad, aunque por supuesto no traen lo que pides, pero si parecido.

bench

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #12 en: Jueves 14 de Marzo de 2002, 18:39 »
0
Creo que el Problema esta en la Forma Como Calculas el El Tamaño de la Structura mao con la instruccion sizeof

typedef struct
 {
  char *nombre;
  char *direccion;
  int edad;
  } mao;


void introdatos(mao *p,int datos);
void borradatos(mao *p,int datos);
void modificadatos(mao *p,int datos);
void listadatos(mao *p,int datos);
void ventana();
void menu();


void main()
{
ventana();
mao *p;
int datos=0,opc;
/***
La Structura mao Tiene dos Elementos
que Son Punteros tipo Char, Esta Instruccion no Calcula el espacio de memoria necesario
para Guardar un elemento en la structura
***********************************/
p=(mao *)malloc (sizeof(mao));
/******
Sin Que este entrando en un anlisis Profundo del Problema Te Sugiero Que Daclares
si requieres Memoria Dinamica
************************************/
p = (mao *)malloc(sizeof (mao)+ strlen(nombre)+ strlen(direccion));
/****************
Pero si ya Conoces el Tamaño de la Structura
Es mejor que Trabajes Sobre un Buffer con
dimensiones ya determinadas
*******************************************/
char Len_Int = sizeof(int); /*Portabilidad */
char Buf_Mao[Len_Int+47];/* 30 char x Nombre + 15 char x direccion.
/***
Modeas el Puntero
****************/
p = (mao *)Buf_Mao;

...
/*******
Creo Que Buena Parte del Problema Lo Tienes
Aqui. al Final Si usas  malloc, debes liberar la memoria co la instruccion free(mao p)
******************************************/


-----------------------------
Solo se Que no se NADA

karina gonzales

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
ME JUEGO EL CURSO¡¡¡¡¡¡¡¡¡¡
« Respuesta #13 en: Lunes 3 de Junio de 2002, 19:24 »
0
la verdad es que yo ando buscando ejemplos para poder estudier para aprobar mi ramo, y quisiera saber si alguien sabe en donde los puedo encontrar programas de ejemplo o test  etc.. en borland c/c++:o:(