[ Foro de C ]

Ayuda con un bucle en C

18-Apr-2020 10:53
Nacho Cabanes (+55)
0 Respuestas

También puedes incluir el código directamente en este foro. Confírmame que es éste:


/*Incluímos las librerias que consideremos necesarias*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

/*Definimos el numero máximo de empleados (valor inalterable)*/
#define DIM 500

/*Definimos la variable i (valor variable)*/
int i,j,k,l;
char sb;
unsigned int buscarnumident;

/*Hacemos y preparamos la estructura empleado, con todos los datos a rellenar*/
struct empleado
{    
char nombre[20];
char apellido[20];
unsigned int numidentif;
int edad;
int anyo;
int proyectos;
char nombreproyecto[60];
int presupuestoproyecto;
}lista[DIM];

/*Creamos una función para recoger los datos del empleado*/
void pedir_datos(){

for(i=0;i<DIM;i++){
		
		if(lista[i].edad==0){
		
		fflush(stdin);
 		printf("\nIntroduce el n%cmero indentificativo: ",163);
 		scanf("%u",&lista[i].numidentif);
 		
 		fflush(stdin);
 		printf("\nIntroduce el nombre del empleado: ");
 		scanf("%s",&lista[i].nombre);
 		
 		fflush(stdin);
 		printf("\nIntroduce el apellido del empleado: ");
 		scanf("%s",&lista[i].apellido);
 		
 		fflush(stdin);
 		printf("\nIntroduce la edad del empleado: ");
 		scanf("%i",&lista[i].edad);
 		
 		fflush(stdin);
 		printf("\nIntroduce el a%co de nacimiento del empleado: ",164);
 		scanf("%i",&lista[i].anyo);
 		
 		}
 		
 		else
		 {
		 	i++;
		 }
 		
 		break;
	}
}

/*Creamos una función para mostrar los datos del empleado*/
void mostrar_datos(){
	
	for(k=0;k<(i+1);k++){
		
		printf("\n");
		printf("\nDatos del empleado: %i",k+1);
		printf("\n-----------------------------------");
		printf("\nN%cmero indentificativo: %u",163,lista[k].numidentif);
		printf("\nNombre del empleado: %s",lista[k].nombre);
		printf("\nApellido del empleado: %s",lista[k].apellido);
		printf("\nEdad del empleado: %i",lista[k].edad);
		printf("\nA%co de nacimiento del empleado: %i",164,lista[k].anyo);
		printf("\nN%cmero de proyectos en los que trabaja: %i",163,lista[k].proyectos);
		printf("\n");
		
		for (l=0;l<lista[i].proyectos;l++)
 		
		 {
		 	printf("\n");
 			printf("\n Proyecto n%cmero: %i",163,l+1);
 			printf("\n");
 			printf("\n Nombre del proyecto: %s",lista[i].nombreproyecto);
 			printf("\n Presupuesto del proyecto: %i",lista[i].presupuestoproyecto);
		 }
	}
	
	printf("\n");
}

void eliminar_empleado(){
}

void modificar_datos(){
}

void listar_proyectos(){
}

void asignar_proyecto(){
	
	if ()
	for(i=0;i<DIM;i++){
	
	printf("Introduce el n%cmero identificativo del empleado: ",163);
	scanf("%u",&buscarnumident);
	
	if (lista[i].numidentif==buscarnumident){
		
	fflush(stdin);
 		printf("\nIntroduce el n%cmero de proyectos en los que trabaja: ",163);
 		scanf("%i",&lista[i].proyectos);
 		
	if (lista[i].proyectos>10)
		{
 		printf("\nError, introduce m%cximo 10 proyectos",160);
 		printf("\nIntroduce el n%cmero de proyectos en los que trabaja: ",163);
 		scanf("%i",&lista[i].proyectos);
 		}
	
	for (l=0;l<lista[i].proyectos;l++)
 		{
 			printf("\n Proyecto n%cmero: %i",163,l+1);
 			printf("\n");
 			printf("\n Introduce el nombre del proyecto: ");
 			scanf("%s",&lista[i].nombreproyecto);
 			printf("\n Introduce el presupuesto del proyecto: ");
 			scanf("%i",&lista[i].presupuestoproyecto);
		 }
	}
	break;
}
}

void darbaja_proyecto(){
}

void guardar_fichero(){
}

void cargar_fichero(){
}

/*Hacemos la función principal que contiene el menú y los submenús*/
int main()
{
 
 int opcion;
 
 for(;;){
 
 printf("\n Men%c de gesti%cn de empleados",163,162);
 printf("\n--------------------------------");
 printf("\n1. Introducir nuevo empleado");
 printf("\n2. Eliminar un empleado");
 printf("\n3. Modificar datos de un empleado");
 printf("\n4. Lista de proyectos de empleado");
 printf("\n5. Asignar a un empleado un nuevo proyecto");
 printf("\n6. Dar de baja un proyecto de un empleado");
 printf("\n7. Listar todos los empleados y sus datos");
 printf("\n8. Guardar en fichero");
 printf("\n9. Cargar de fichero");
 printf("\n10. Salir del programa");
 printf("\n");
 printf("\n Introduce una opci%cn: ",162);
 scanf("%i", &opcion);
 
 	if(opcion==1){
 		
 		pedir_datos();
 	}
 	if(opcion==2){
 		
 		eliminar_empleado();
 	}
 	if(opcion==3){
 		
 		modificar_datos();
 	}
	if(opcion==4){
 		
 		listar_proyectos();
 	}
	if(opcion==5){
 		
 		asignar_proyecto();
 	}
	if(opcion==6){
 		
 		darbaja_proyecto();
 	}	
	if(opcion==7){
 		
 		mostrar_datos();
 	}
 	if(opcion==8){
 		
 		guardar_fichero();
 	}
 	if(opcion==9){
 		
 		cargar_fichero();
 	}
 	if(opcion==10){
 		printf("\nA continuaci%cn el programa se cerrar%c",162,160);
 		return 0;
 	}
	}
}


 
Si es así, y te refieres a la función "asignar_proyecto", el problema parece estar en que haces "scanf("%s",&lista[i].nombreproyecto);" a pesar de que está dentro de un bucle "for" cuya letra de control es la "l".




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...