elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problemas con un programita
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con un programita  (Leído 3,611 veces)
Meylar

Desconectado Desconectado

Mensajes: 16



Ver Perfil
Problemas con un programita
« 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;
}


En línea

fantasma306

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Re: Problemas con un programita
« Respuesta #1 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


En línea

Es mejor callar y que piensen que eres idiota a hablar y demostrarlo.
bettu


Desconectado Desconectado

Mensajes: 923


Ver Perfil
Re: Problemas con un programita
« Respuesta #2 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!
« Última modificación: 13 Junio 2011, 22:56 pm por bettu » En línea

Dark Invader

Desconectado Desconectado

Mensajes: 111


Lucha hasta el final para conseguir tu objetivo.


Ver Perfil
Re: Problemas con un programita
« Respuesta #3 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
En línea

bettu


Desconectado Desconectado

Mensajes: 923


Ver Perfil
Re: Problemas con un programita
« Respuesta #4 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  :)
En línea

Dark Invader

Desconectado Desconectado

Mensajes: 111


Lucha hasta el final para conseguir tu objetivo.


Ver Perfil
Re: Problemas con un programita
« Respuesta #5 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
En línea

Meylar

Desconectado Desconectado

Mensajes: 16



Ver Perfil
Re: Problemas con un programita
« Respuesta #6 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:
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programita « 1 2 ... 5 6 »
Ingeniería Inversa
ana6 52 19,200 Último mensaje 7 Agosto 2010, 12:45 pm
por ana6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines