C/Visual C - Arreglo de caracteres

 
Vista:

Arreglo de caracteres

Publicado por Sergio (3 intervenciones) el 03/08/2007 03:37:00
Hola, soy nuevo en el mundo de la programacion e intentando resolver este algoritmo me encontre con un problema al querer capturar la variable de tipo char.
les dejo el codigo fuente para que me puedan ayudar a resolverlo, seguro es algo facil, pero en fin parami resulto algo complicado.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int totsdo=0, mas2000=0,menos500=0;
int cat1=0,cat2=0,cat3=0;
int smax=0, empleado, cat, sueldo;
char nom[10] ;
char nomax;
int sprom;

for(empleado=1;empleado<=3;empleado++){

printf("Nombre: ");
scanf("%s", nom);
printf("Sueldo: ");
scanf("%d", &sueldo);
printf("Categoria: ");
scanf("%d", &cat);

switch(cat){
case 1:
cat1 = cat1 + sueldo;
if(sueldo<500)menos500 = menos500 +1;
break;
case 2:
cat2 = cat2 + sueldo;
break;
case 3:
cat3 = cat3 + sueldo;
break;
}
totsdo = totsdo + sueldo;
if (sueldo > 2000) mas2000= mas2000 +1;
if (sueldo > smax) {
smax = sueldo;
nomax = nom;
}

}
sprom = totsdo / 3;

printf("Total de sueldos que paga la empresa:%d\n", totsdo);
printf("Empleados que ganan mas de $2000:%d\n", mas2000);
printf("Empleados de categoria 1 que ganan menos de $500:%d\n", menos500);
printf("Empleado que gana mas:%s\n", nomax);
printf("Sueldo maximo:%d\n", smax);
printf("Total de sueldos de la categoria 1:%d\n", cat1);
printf("Total de sueldos de la categoria 2:%d\n", cat2);
printf("Total de sueldos de la categoria 3:%d\n", cat3);
printf("Sueldo promedio:%d \n", sprom);


system("PAUSE");
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Arreglo de caracteres

Publicado por Trebuchetino (28 intervenciones) el 03/08/2007 08:19:00
Hmm...y cual es el problema exactamente?
El único problema que encuentro es: nomax = nom.
Declaras nomax como una variable tipo char (char nomax;) cuando lo que quieres hacer probablemente sea hacer de ella un arreglo (char nomax[10];), puesto que mas abajo haces nomax = nom;
Espero que sea este el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Arreglo de caracteres

Publicado por Sergio (3 intervenciones) el 03/08/2007 23:51:37
Hola. si el codigo que envie tira un error en tiempo de ejecucion ya que no declare la variavle nomax como puntero *nomax.
El problema es que no logro(o mejor dicho no se como) capturar la variable del nombre que tiene el mayor sueldo. Planteo el problema para ver si alguien me puede ayudar.
Gracias.
Planteo:
Una empresa conoce para cada empleado los siguientes datos:
-nombre
-sueldo
-categoria
Hay 10 empleados(en el codigo puse 3)distribuidos en 3 categorias.
Se pide calcular e imprimir:
a) Total de Sueldo en pesos que paga la empresa.
b)Cantidad de empleados que ganan mas de 2000$.
c)Cantidad de empleados que ganan enos de 500$ cuya categoria sea 1.
d)Nombre del empleado quegana mas.
f)Sueldo maximo.
g)Sueldo promedio.

El punto en el que tengo problema es en el d) ya que no puedo capturar el nombre del empleado que gana mas. siempre aparece el ultimo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Arreglo de caracteres

Publicado por Trebuchetino (28 intervenciones) el 04/08/2007 08:57:39
Ya, claro. Es que no es correcto lo que estas haciendo. La variable nom siempre va a tener el último valor que introdujiste. Para solucionar ese problema lo que puedes hacer es declarar la variable nomax como un arreglo: nomax[10]. Asi le asignas el valor de nom a esta variable y se conserva a lo largo del programa a no ser que se de la condicion que le indicaste con el if.
Si apuntas con un puntero, solo te va a enseñar el contenido de la variable nom que logicamente va a ser el ultimo dato de nom.

Espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar