Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Meylar en 13 Junio 2011, 08:46 am



Título: Problemas con un programita
Publicado por: Meylar en 13 Junio 2011, 08:46 am
Hola, estoy comensando a programar en dev c++; asi que codifique un problema sencillo, pero cuando lo ejecuto me sale un mensaje que dice : "problema 20.exe dejo de funcionar", ya modifique la codificación varias veces y sigue el error,  nose que ocurre... :-(

Aqui el programa:

#include <stdio.h>
#include <conio.h>

main()
{
      int pla_max, tip;
      char nom;
      float sal, comi, mon;
      float comi_to=0,mon_ma=0, mon_me=0;
      int n=1;
   
      while(n==1)
      {
                 puts("Digite el nombre del empleado");
                 scanf("%s",nom);
                 puts("El empleado es:\n1. Publico\n2. Privado");
                 scanf("%i",&tip);
                 while((tip!=1) || (tip!=2))
                 {
                              puts("Vuelva a ingrrsar el tipo de empleado. Tiene que ser:\n1. Publico\n2. Privado");
                              scanf("%i",&tip);
                  }
                 puts("Digite el salario del empleado:");
                 scanf("%f",&sal);
                 while (sal<=0)
                     {
                              puts("ERROR. El salario tiene que ser > 0. Vuelva a digitarlo:");
                              scanf("%f",&sal);
                       }
                 if(tip==1)
                 {
                     mon=sal*10;
                     comi=mon*0.05;
                     pla_max=7;
                     comi_to+=comi;
                  }
                 
                 else
                  {
                     mon=sal*7;
                     comi=mon*0.03;
                     pla_max=5;
                     comi_to+=comi;
                    }
                 if(mon_ma<mon)
                   {
                     mon_ma=mon;
                     }
                 else
                  {
                      if(mon_me<mon)
                          mon_me=mon;
                   }
                  printf("El empleado: %s tiene:", nom);
                  printf("El monto del prestamo es: $ %f", mon);
                  printf("Su comisión a pagar es: $ %f", comi);
                  printf("tiene un plazo maximo de: %f años", pla_max);
                  puts("¿Tiene otro empleado?");
                  scanf("%i", &n);
       }
       
       printf("La comisión total es: $ %f", comi_to);
       printf("El monto del prestamo mayor es: $ %f", mon_ma);
       printf("El monto del prestamo menor es: $ %f", mon_me);
       
       getch();
       return 0;
}


Título: Re: Problemas con un programita
Publicado por: fantasma306 en 13 Junio 2011, 15:14 pm
hola Meylar

bueno tu codigo tiene unas cuantas cosas mal o a lo mejor en dev c++ se programa diferente  :rolleyes:

te cuento:
 (esto puede que se te haya escapado)
Código:
scanf("%s",nom);
Código:
scanf("%s", &nom); 


tienes un error de logica
Código:
 while((tip!=1) || (tip!=2))
Código:
 while((tip!=1) &&  (tip!=2))

otra cosa, nom es un char por lo tanto tienes que poner %c en lugar de %s
Código:
printf("El empleado: %s tiene:", nom);
Código:
printf("El empleado: %c tiene:", nom);

PD: no se si te funcionan los scanf con %f para los float, a mi no me los cogia, y lo cambie por double, y el scanf en lugar de %f puse %lf.  ;)

suerte


Título: Re: Problemas con un programita
Publicado por: bettu en 13 Junio 2011, 22:29 pm
Código:
puts("Digite el nombre del empleado");
scanf("%s",nom);

Se supone que si es el nombre del empleado, contendrá más de un caracter, por lo tanto en:

Código:
char nom;

deberías de declararlo como vector (cadena de caracteres). Una manera sencilla de hacerlo es con char nom[30]; (se declara un vector de 30 posiciones, si el nombre es más largo no cabrá). Yo recomiendo hacer el valor declarándolo con una etiqueta.

Una vez declarado el vector, esto...:
Código:
scanf("%s",nom);

lo tendrías que poner a:
Código:
scanf ("%[^\n]%*c", nom);

Lo demás, tal y como dice fantasma306.

Saludos!


Título: Re: Problemas con un programita
Publicado por: Dark Invader en 13 Junio 2011, 22:56 pm
Código:
puts("Digite el nombre del empleado");
scanf("%s",nom);

Se supone que si es el nombre del empleado, contendrá más de un caracter, por lo tanto en:

Código:
char nom;

deberías de declararlo como vector (cadena de caracteres). Una manera sencilla de hacerlo es con char nom[30]; (se declara un vector de 30 posiciones, si el nombre es más largo no cabrá). Yo recomiendo hacer el valor declarándolo con una etiqueta.

Una vez declarado el vector, esto...:
Código:
scanf("%s",nom);

lo tendrías que poner a:
Código:
scanf ("%[^\n]%*c", nom);

Lo demás, tal y como dice fantasma306.

Saludos!

Yo me acostumbraria a coger las palabras con "gets(palabra)"ya que scanf solo lee hasta los espacios,en este caso si el nombre es jose maria scanf solo leería jose pero con gets leería todo el nombre.

Salu2


Título: Re: Problemas con un programita
Publicado por: bettu en 13 Junio 2011, 22:58 pm
Yo me acostumbraria a coger las palabras con "gets(palabra)"ya que scanf solo lee hasta los espacios,en este caso si el nombre es jose maria scanf solo leería jose pero con gets leería todo el nombre.

Salu2

Con el método que he puesto lee todo, pero cuando detecta el intro deja de leer. Lo que tú dices también es correcto  :)


Título: Re: Problemas con un programita
Publicado por: Dark Invader en 13 Junio 2011, 23:01 pm
Cierto no me habia parado bien en tu codigo,solo lei scanf y ya pense en gets()  :xD

Salu2


Título: Re: Problemas con un programita
Publicado por: Meylar en 15 Junio 2011, 08:34 am
jeje gracias a todos... logre darle unos cuantas modificaciones a mi programita ;D; ademas fantasma306 tiene un poco de razón: esque en dev c++ se programa un poco  diferente  :rolleyes: