Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda en este ejercicio de C

Estas en el tema de ayuda en este ejercicio de C en el foro de C/C++ en Foros del Web. Hola,necesito ayuda en este ejercicio,no pude hacerlo del todo,espero que me puedan ayudar,nose como validar la opcion,tampoco se como colocar las banderas si alguien me ...
  #1 (permalink)  
Antiguo 23/09/2010, 14:18
 
Fecha de Ingreso: septiembre-2010
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta ayuda en este ejercicio de C

Hola,necesito ayuda en este ejercicio,no pude hacerlo del todo,espero que me puedan ayudar,nose como validar la opcion,tampoco se como colocar las banderas si alguien me podria explicar,coloque dos pero nose si esta bien.Y por ultimo como listar en la opcion 3.
Se ingresan 30 empleados de una empresa,legajo,salario,y sexo (M y F) cada vez que se carga un empleado,se asigna un numero de legajo,comenzando por el 1 para el primer empleado y terminando en el 30 para el ultimo.Se desea realizar un menu con la siguientes opciones:

a-Carga (condicionar para que el usuario no haga la modificacion (opcion b) ni el listado (opcion c),sin antes hacer la carga)

b-modificar: se ingresan el numero de legajo y se modificael salario antes de almacenar los datos unevos ingresados se debe solicitar confirmacion del usuario.

c-Listar.

d-Salir del programa.

Les dejo lo que tengo hecho en C,hace poco empeze asi que no creo que este bien,sepan disculpar:
#include <ctype.h>
#include <conio.h>
#include <stdio.h>
#define e 30
void main ()
{
char sexo [e];
int emp, leg [e], band=1,band2=1,leg, op, i;
float sal [e];
clrscr();
while (band==1)
{
printf("menu de opciones");
printf("1 carga");
printf("2 modificar");
printf("3 listar");
printf("salir");
printf("ingrese opcion");
scanf("%d, & op);
switch (op)
{
case1: while(band==1)
{
for(i=0; i<e; i++)
{
printf("ingrese nombre del empleado");
scanf("%d", & emp);
printf("ingrese salario");
scanf("%f", & sal [i]);
printf("ingrese sexo 'm' o 'f'");
scanf("%s", & sexo [i]);
while(sexo !='m' || sexo !='f')
{
printf("error reingrese");
scanf("%s",& sexo);
}
printf("ingrese legajo");
scanf("%d",& leg [i-1]);
}
band=0;
case2: printf("ingrese legajo a buscar");
scanf(%d", & leg);
for( i=0; i<e; i++)
{
if(leg==leg [i])
{
printf("%f", & sal [i]);
}
}
scanf("%d %f %s %d", emp [i], sal [i], sexo [i], leg [i]);
while( rta='s')
{
printf("ingrese salario a modificar");
scanf("%f", & sal [i]);
printf("desea continuar s/n");
rta= toupper (getche());
while(rta !='s' || rta !='n')
{
printf("error reingrese");
scanf("%s", & rta);
}
}
break;
case3:






case4:
printf("desea seguir s/n");
rta=toupper (getche());
while (rta !='s' || rta !='n')
{
printf("error reingrese")
}
}

for( i=0; i<e; i++9)
scanf("%d %f %s %d",emp [i], sal [i], sexo [i], leg [i]);
getch();




}
  #2 (permalink)  
Antiguo 23/09/2010, 14:46
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: ayuda en este ejercicio de C

No especificaste bien lo que necesitas. Por eso te voy recomendando un par de cosas.

Primero la constante "e" tiene un nombre muy inadecuado. Yo usarioa MAX,CANT_MAX, MAX_PERSONA o algun nombre caracteristico, mas que es una constante.

Segundo usa la identacion del codigo y el highlight que viene en el foro para mejorar la lectura del mismo.

Ahora un par de cosas para marcar en tu codigo:

Código C++:
Ver original
  1. while (rta !='s' || rta !='n')
  2. {
  3.     printf("error reingrese")
  4. }

A ese while te genera un bucle infinito, una vez que la condicion es True, nunca se sale proque internamente nunca se modifica la variable rta o se utiliza la sentencia break. Ademas al printf le falta el ";" final.
  #3 (permalink)  
Antiguo 23/09/2010, 15:32
 
Fecha de Ingreso: septiembre-2010
Ubicación: http://nomenrecordo.blogspot.com/
Mensajes: 111
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: ayuda en este ejercicio de C

Y para leer int es mejor poner scanf("%i", nombre_variable);

Etiquetas: ejercicios, pseudocodigo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:22.