Tengo un programa en C y C++ como proyecto para la escuela y me está dando algunos problemas.
Mi muy estimado <Nedrosed> quisiera que me pudieras ayudar en este programita... Es que es un proyekto de la escuela, pero me ha causado problemitas... No se ha que se deba... Sin embargo se que no resuelves problemas pero... Te lo agradecería mucho si me pudieras ayudar...
Este programa da la posibilidad de dar entrada a ciertos datos de unos alumnos... Y después puedes buscarlos por numero de matricula y apellido pero el problema es que... Cuando doy entrada a los datos... Me los guarda bien pero al querer buscarlos (si tengo más de 2 datos registrados) generalmente me dice que el 1ero que registré no se encuentra... Y creo que el problema es que... No me guarda bien los datos puesto que no me encuentra al 1er dato que di entrada... Aquí te mando el programa:
#include"stdio.h"
#include"conio.h"
#define N 20
#include"string.h"
char lista [N][4][30];
char resp;
char m[30];
void leer(int);
void buscar(char*,int,int);
void main()
{
int opcion, n=0;
while(1)
{
do
{
clrscr();
printf("\n\t1.Entrada de datos alumnos\n");
printf("\n\t2.B£squeda por No. De matr¡cula\n");
printf("\n\t3.B£squeda por apellidos\n");
printf("\n\t4.Salir\n");
printf("\n\tTeclee la opcion deseada\n");
scanf("%d%*c",&opcion);
}
while(opcion<1 || opcion >4);
if(opcion!=4)
{
switch (opcion)
{
case 1:
resp='s';
while(resp=='s' || resp=='S')
{
leer(n++);
}
break;
case 2:
clrscr();
printf("N£mero de matr¡cula..... ");
gets(m);
buscar(m,0,n);
break;
case 3:
clrscr();
printf("Apellidos..........");gets(m);
buscar(m,1,n);
break;
}
}
else
break;
}
}
void leer(int n)
{
do
{
do
{
clrscr();
printf("Alumno n£mero %d\n\n",n+1);
printf("N£mero de matricula....... ");
gets(lista[n][0]);
printf("Apellidos...... ");
gets(lista[n][1]);
printf("Nombre......... ");
gets(lista[n][2]);
printf("Direccion...... ");
gets(lista[n][3]);
printf("\n\n Datos correctos?? S/n...... ");
resp=getche();
}
while(resp=='n'|| resp=='N');
printf("\n\n OTRO?? S/n...... ");
resp=getche();
}
while(resp=='s'|| resp=='S');
}
#define NO 0
#define SI 1
void buscar(char x[30],int col,int alumnos)
{
int existe=NO, i=0,comp;
while(!existe && i<alumnos)
comp= strcmp(lista[i++][col],x);
if (comp==0)
existe=SI;
if(existe)
printf("\nNo. Matr¡cula... %s\nNombre... %s\nApellidos... %s\nDirecci¢n... %s\n",lista[i-1][0],lista[i-1][1],lista[i-1][2],lista[i-1][3]);
else
printf("\n%s No existe",x);
printf("\n\nPulse una tecla para continuar");
resp=getch();
}
Este programa da la posibilidad de dar entrada a ciertos datos de unos alumnos... Y después puedes buscarlos por numero de matricula y apellido pero el problema es que... Cuando doy entrada a los datos... Me los guarda bien pero al querer buscarlos (si tengo más de 2 datos registrados) generalmente me dice que el 1ero que registré no se encuentra... Y creo que el problema es que... No me guarda bien los datos puesto que no me encuentra al 1er dato que di entrada... Aquí te mando el programa:
#include"stdio.h"
#include"conio.h"
#define N 20
#include"string.h"
char lista [N][4][30];
char resp;
char m[30];
void leer(int);
void buscar(char*,int,int);
void main()
{
int opcion, n=0;
while(1)
{
do
{
clrscr();
printf("\n\t1.Entrada de datos alumnos\n");
printf("\n\t2.B£squeda por No. De matr¡cula\n");
printf("\n\t3.B£squeda por apellidos\n");
printf("\n\t4.Salir\n");
printf("\n\tTeclee la opcion deseada\n");
scanf("%d%*c",&opcion);
}
while(opcion<1 || opcion >4);
if(opcion!=4)
{
switch (opcion)
{
case 1:
resp='s';
while(resp=='s' || resp=='S')
{
leer(n++);
}
break;
case 2:
clrscr();
printf("N£mero de matr¡cula..... ");
gets(m);
buscar(m,0,n);
break;
case 3:
clrscr();
printf("Apellidos..........");gets(m);
buscar(m,1,n);
break;
}
}
else
break;
}
}
void leer(int n)
{
do
{
do
{
clrscr();
printf("Alumno n£mero %d\n\n",n+1);
printf("N£mero de matricula....... ");
gets(lista[n][0]);
printf("Apellidos...... ");
gets(lista[n][1]);
printf("Nombre......... ");
gets(lista[n][2]);
printf("Direccion...... ");
gets(lista[n][3]);
printf("\n\n Datos correctos?? S/n...... ");
resp=getche();
}
while(resp=='n'|| resp=='N');
printf("\n\n OTRO?? S/n...... ");
resp=getche();
}
while(resp=='s'|| resp=='S');
}
#define NO 0
#define SI 1
void buscar(char x[30],int col,int alumnos)
{
int existe=NO, i=0,comp;
while(!existe && i<alumnos)
comp= strcmp(lista[i++][col],x);
if (comp==0)
existe=SI;
if(existe)
printf("\nNo. Matr¡cula... %s\nNombre... %s\nApellidos... %s\nDirecci¢n... %s\n",lista[i-1][0],lista[i-1][1],lista[i-1][2],lista[i-1][3]);
else
printf("\n%s No existe",x);
printf("\n\nPulse una tecla para continuar");
resp=getch();
}
1 Respuesta
Respuesta de nedrosed
1