Consulta de código para calcular probabilidades

Hola mi muy estimado <Vago> quisiera que me pudieras ayudar en este programita... Es que es un proyekto de la escuela, pero me ha causando 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();
}

1 Respuesta

Respuesta
1
Antes que nada perdón por la tardanza, tuve problemas con mi conexión. Bueno el problema es la ubicación de operador n++; debe estar dentro de la función de lectura y no donde está ahora,
la modificación es:
en case 1: sustituyes leer(n++); por leer(n); y en la funcion void leer(int n): despues de las instrucciónes
printf("\n\n OTRO?? s/n...... ");
resp=getche();
agregas n++;
Con esos lograrás la lectura correcta. Por ultimo si quieres que el usuario pueda meter datos varias veces sin reiniciar la lista (por ejemplo primero mete tres, después busca uno de los tres, y después quiere meter otro) te sugiero que la variable n la declares como global y a la función leer le quites el parámetro int n, con lo que tu programa quedaría más versátil. Bueno espero que te sirva mi respuesta.
Vago
1000 gracias por tu respuesta... me has ayudado muchísimo, quisiera poder ser tu amiga si así lo deseas.. gracias por todo, eres un excelente experto! Saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas