Foros del Web » Programación para mayores de 30 ;) » Programación General »

ayuda en c (ver 4.9.5.0)

Estas en el tema de ayuda en c (ver 4.9.5.0) en el foro de Programación General en Foros del Web. hola, lo que pasa es que el programa vuelve al principal y reinicializa el array de estructura, y no encuentro la forma de evitarlo. garcias ...
  #1 (permalink)  
Antiguo 07/05/2004, 02:45
 
Fecha de Ingreso: abril-2004
Ubicación: La Guardia, España (por ahora)
Mensajes: 124
Antigüedad: 20 años
Puntos: 0
ayuda en c (ver 4.9.5.0)

hola, lo que pasa es que el programa vuelve al principal y reinicializa el array de estructura, y no encuentro la forma de evitarlo.
garcias y salu2


#include <stdio.h>
#include <conio.c>
#define mx 10

struct{
char nombre[100], calle[100], ciudad[100];
char codigop[100], provincia[100];
}correos[mx];

int opcion=0;
void inic_lista(), intro(), borrar(), listar();
int menu(), busca_libre();

/* Funcion Principal*/

int main()
{
char opcion;

inic_lista();
opcion=menu();
do{
switch(opcion){
case '1': intro();
break;
case '2': borrar();
break;
case '3': listar();
break;
case '4': break;}
}while(opcion!=4);
}

/*Funcion inic_lista*/

void inic_lista()
{
register int t;

for(t=0;t<mx;t++)
correos[t].nombre[t]='\0';
}

/*Funcion Menu*/

int menu()
{
char opc;

do{
system("cls");
gotoxy(10,3);
printf("Programa que carga una base de datos de correos.");
gotoxy(25,8);
printf("1- Introducir un nombre.");
gotoxy(25,9);
printf("2- Borrar un nombre.");
gotoxy(25,10);
printf("3- Listar el archivo.");
gotoxy(25,11);
printf("4- Salir.");
gotoxy(25,14);
printf("Elegir una opcion (1-4): ");
scanf("%c", &opc);
}while(opc<1 || opc>4);
return(opc);
}

/*Funcion intro*/

void intro()
{
int sitio;
register int i;

sitio=busca_libre();
if(sitio==-1){
gotoxy(25,20);
printf("La lista esta llena.");
getch();
return;}
else{
for(i=sitio;i<sitio+1;i++){
system("cls");
fflush(stdin);
printf("\nNombre: ");
gets(correos[i].nombre);
printf("\nCalle: ");
gets(correos[i].calle);
printf("\nCiudad: ");
gets(correos[i].ciudad);
printf("\nProvincia: ");
gets(correos[i].provincia);
printf("\nCodigo Postal: ");
gets(correos[i].codigop);}
menu();
}
}

/*Funcion busca_libre*/

int busca_libre()
{
register int t;

for(t=0;correos[t].nombre[0]&&t<mx;t++);
if(t==mx)
return(-1);
else
return(t);
}

/*Funcion borrar*/

void borrar()
{
register int i;
char nomb[100], sw='n';

printf("Elegir el nombre a borrar: ");
gets(nomb);
i=0;
do{
fflush(stdin);
if (nomb==correos[i].nombre)
sw='s';
i++;
}while ((i<mx)||(sw=='n'));

if(sw=='n')
printf("El nombre no existe.");
else{
correos[i].nombre[0]='\0';
gotoxy(17,15);
printf("El nombre ha sido borrado con exito");
gotoxy(15,17);
system("pause");}
}

/*Funcion listar*/

void listar()
{
int i;

for(i=0;i<mx;i++){
system("cls");
fflush(stdin);
printf("\nNombre: %c ", correos[i].nombre);
printf("\nCalle: %c ", correos[i].calle);
printf("\nCiudad: %c ", correos[i].ciudad);
printf("\nProvincia: %c ", correos[i].provincia);
printf("\nCodigo Postal: %c ", correos[i].codigop);
getch();}
}
__________________
The vanished dreams, never forget them.......
Live in your world, play in ours.
Visiten:
http://pobladores.lycos.es/channels/juegos/Hikaru_Crazy_Zone
  #2 (permalink)  
Antiguo 07/05/2004, 04:54
 
Fecha de Ingreso: abril-2004
Ubicación: La Guardia, España (por ahora)
Mensajes: 124
Antigüedad: 20 años
Puntos: 0
hola, ya esta solucionado, era esto

;

inic_lista();
opcion=menu(); <------------- estaba fuera del do-while
do{
switch(opcion){
case '1': intro();
break;
case '2': borrar();
break;
case '3': listar();
break;
case '4': break;}
}while(opcion!=4);
}

salu2
__________________
The vanished dreams, never forget them.......
Live in your world, play in ours.
Visiten:
http://pobladores.lycos.es/channels/juegos/Hikaru_Crazy_Zone
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:44.