Retroceder   Foros del Web > Temas generales de computación > Programación

Respuesta
 
Herramientas Desplegado
Antiguo 07-may-2004, 02:45   #1 (permalink)
hikaru_8 está en el buen camino
 
Fecha de Ingreso: abril-2004
Ubicación: La Guardia, España (por ahora)
Mensajes: 124
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
hikaru_8 está desconectado   Responder Citando
Antiguo 07-may-2004, 04:54   #2 (permalink)
hikaru_8 está en el buen camino
 
Fecha de Ingreso: abril-2004
Ubicación: La Guardia, España (por ahora)
Mensajes: 124
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
hikaru_8 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:45.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93