[ Foro de C ]

Problema con else

08-Aug-2014 22:45
Invitado (sara)
3 Respuestas

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;
}
 




08-Aug-2014 23:57
Nacho Cabanes (+31)

Sobra el punto y coma después de la condición del "if".  ;-p


09-Aug-2014 00:34
Invitado (sara)

vaya tela... qué tonta!! No había caído.


09-Aug-2014 00:38
Invitado (sara)

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.)