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

Sin errores ni warnings al compilar, pero no corre

Estas en el tema de Sin errores ni warnings al compilar, pero no corre en el foro de C/C++ en Foros del Web. Que tal amigos, estoy haciendo un pequeño ejercicio muy básico pues estoy comenzando en C, y el ejercicio es el siguiente: e) Calcule el sueldo ...
  #1 (permalink)  
Antiguo 20/07/2009, 19:39
Avatar de moendo  
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 18
Antigüedad: 15 años, 8 meses
Puntos: 0
Sin errores ni warnings al compilar, pero no corre

Que tal amigos, estoy haciendo un pequeño ejercicio muy básico pues estoy comenzando en C, y el ejercicio es el siguiente:

e) Calcule el sueldo neto de un empleado conociendo el valor de la hora de trabajo (VH), el numero de horas trabajadas (NH), el % de descuento pro Impuesto sobre la renta (ISLR), el % de descuento por seguro social (SS) su nombre y cedula. Dando un reporte que contenga la información pedida.


Luego de compilar, no genera ni warnings ni errores por lo que asumo que es un error de lógica, el problema es que no logro verlo.

Aqui les dejo el codigo para ver si alguno de ustedes me echa una mano:

Código:
#include <stdio.h>
#include <stdlib.h>

/* 	nh es Numero de horas, vh es Valor de cada hora, pi es Porcentaje de ISLR,
	ps es Porcentaje de Seguro Social, ic y sc son el cociente de los porcentajs
	entre 100, para luego calcular el sueldo neto, sn es el sueldo neto
*/

char nombre;
int ci;
float nh,vh,pi,ps,ic,sc,sueldo,sn;

void introducirVar()
{
	printf("Nombre: ");
	scanf("%s",&nombre);
	getchar();
	printf("\n\nC.I.: ");
	scanf("%d",&ci);
	getchar();
/* 	a partir de aqui todos son floats porque habra division y para evitar errors
	utilizo decimales
*/

	printf("\n\nNro. de horas: ");
	scanf("%f",&nh);
	getchar();
	printf("\n\nValor de cada hora: ");
	scanf("%f",&vh);
	getchar();
	printf("\n\nISLR: ");
	scanf("%f",&pi);
	getchar();
	printf("\n\nSeguro Social: ");
	scanf("%f",&ps);
	getchar();
}

void procesarVar()
{
	sueldo=nh*vh;
	ic=pi/100;
	sc=ps/100;
	sn=sueldo-(ic*sueldo)-(sc*sueldo);

}

void mostrarSueldo()
{
	printf("Nombre: %s",nombre);
	printf("C.I.: %d",ci);
	printf("Sueldo neto a cobrar: %f",sn);
}

main()
{
	introducirVar();
	procesarVar();
	mostrarSueldo();
	system("pause");
}

Gracias de antemano

Saludos cordiales,

moendo
  #2 (permalink)  
Antiguo 20/07/2009, 21:18
 
Fecha de Ingreso: diciembre-2007
Mensajes: 12
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Sin errores ni warnings al compilar, pero no corre

El primer error que veo haciendo un paso a paso es que estas intentando guardar una cadena (nombre) en una variable tipo "char" que solo soporta un caracter. Lo podes arreglar haciendo un vector de char como "char nombre[80];". Y no uses el scanf para capturar una cadena usa el "gets(nombre);".

Aparte hay varias cosas que podes corregir, como esos getchar despues de los scanf que no le veo sentido, y utilizar variables globales para todo el programa es ridiculo (sin ofender). Usa las variables en las funciones que las necesites, y en todo caso si necesitas pasarselas a otras funciones pasasela como argumento.

Saludos.
  #3 (permalink)  
Antiguo 20/07/2009, 21:49
Avatar de moendo  
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 18
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Sin errores ni warnings al compilar, pero no corre

Gracias por tu respuesta, el caso es que no puedo utilizar variables locales pues no lo he visto en la universidad y no me lo aprobarían como válido.

Tengo solo dos clases de C, por lo que creo que mucho he hecho hasta ahora solo.

Ya entiendo lo de la variable char, y sí funcionó con ese tip que me diste.

Gracias nuevamente



POSTDATA: Procura ser más flexible con los novatos, que bien lo indiqué al comienzo
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 12:40.