[ Foro de C ]
He hecho un ejercicio propuesto, y al poner detrás del if, else, me sale cuando compila error(pone que no puedo poner un else si no he puesto antes un if), pero yo ya he puesto antes el if.... Bueno os dejo como tengo el programa porque por más vueltas que le doy no logro saber porque me da error.
Gracias de antemano!!!
#include<stdio.h>
#include<string.h>
//Un programa que sea capaz de almacenar los datos de hasta 50 personas: nombre, dirección, teléfono, edad (usando una tabla de structs).
//Deberá ir pidiendo los datos uno por uno, hasta que un nombre se introduzca vacío (se pulse Intro sin teclear nada).
// Entonces deberá aparecer un menú que permita: Mostrar la lista de todos los nombres. Mostrar las personas de una cierta edad.
// Mostrar las personas cuya inicial sea la que el usuario indique. Salir del programa
struct
{
char nombre[20];
char direccion[20];
int telefono;
int edad;
}persona[50];
int main()
{
int i;
int opcion = 0;
int num_persona = 0;
int edad;
char inicial;
int encontrado;
do
{
puts("-----MENU-----");
puts("0. Anyadir nombre");
puts("1. Mostrar todos los nombres");
puts("2. Mostrar las personas de una cierta edad");
puts("3. Mostrar las personas que tenga la inicial que indique");
puts("4. Salir");
scanf("%d", &opcion);
switch(opcion)
{
case 0: //añadir persona
if(num_persona < 50)
{
printf("Teclea un nombre\n");
getchar();
gets(persona[num_persona].nombre);
printf("Teclea la direccion en donde vives\n");
gets(persona[num_persona].direccion);
printf("Dime tu numero de telefono\n");
scanf("%d", &persona[num_persona].telefono);
printf("Dime tu edad\n");
scanf("%d", &persona[num_persona].edad);
num_persona++;
}
break;
case 1: //mostrar todos
for(i=0; i<num_persona; i++)
{
printf(" %d: %s\n", i + 1, persona[i].nombre);
}
break;
case 2: //Mostrar las personas de una cierta edad
printf("Introduce una edad\n");
scanf("%d", &edad);
for (i=0; i<num_persona; i++)
{
if(edad== persona[i].edad)
{
printf(" %d: %s\n", i + 1, persona[i].nombre);
}else
printf("No hay persona que tenga esa edad\n");
}
break;
case 3: //Mostrar las personas que empiecen por una determinada inicial
printf("Introduce una inicial para buscar\n");
getchar();
scanf("%c", &inicial);
for(i=0; i<num_persona; i++)
{
if(persona[i].nombre[0]==inicial);
{
printf("%d %s\n", i + 1, persona[i].nombre);
}else
printf("No hay nombre que contenga esa inicial\n");
}
break;
case 4:
break;
default:
puts("Opcion no reconocida, pulse otra");
break;
}
}while(opcion!=4);
return 0;
}
Sobra el punto y coma después de la condición del "if". ;-p
vaya tela... qué tonta!! No había caído.
Gracias!
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)