Buenas amigos les escribo por un problema que tengo el cual es el siguiente:
tengo que hacer un ejercicio que me permita calcular el valor de un inmueble a partir del costo del terreno, construccion y del tipo de construccion (se agrega un impuesto del 15% del total cuando la construccion sea de lujo y no se agrega nada en especial en caso de que la construccion sea estandar.
mi codigo es el siguiente:
#include <stdio.h>
int main () {
int valor,ter,cons,tipo, esperar;
printf("introduzca el valor del terreno en bs: ");
scanf("%d",&ter);
printf("Diga el tipo de construccion si es de Lujo o estandar: ");
scanf("%c",&tipo);
printf("introduzca el valor de la construccion en bs: ");
scanf("%d",&cons);
if (tipo=='estandar') valor=ter+cons;
else valor=(ter+cons)*15/100;
printf(" el valor del inmueble es: %d.",valor);
scanf("%d",esperar);
}
No me lo corre como es y no se en donde me equivoque.
estoy utilizando este compilador Dev-C++
de ante mano agradezco la ayuda que pueda recibir y pido disculpas por mis molestias saludos.
Hola DARKDMR, para empezar tienes varios errores conceptuales bastante graves:
scanf("%c",&tipo);
Aquí, lees un solo carácter y lo almacenas en una variable de tipo int. Lo correcto sería declarar tipo como char.
if (tipo=='estandar')
Esto en c no se puede hacer así, de hecho, tipo lo tienes declarado como una variable de tipo integer y la estas comparando con una cadena de caracteres. Para comparar cadenas de caracteres utiliza strcmp().
int main ()
Si declaras el procedimiento main() para que devuelva un int, al final de la función debes devolver algún valor o al compilar te dará un error.
lo solucionaría como amigo?
porque es que el prof nos dio varios ejemplos y de hay nosotros teniamos que hacer este.
Gracias por la respuesta.
#include <stdio.h>
int main() {
int sTerreno = 0;
int sConstruccion = 0;
int sTipo = 0;
double sValor;
printf("Ingrese el valor del terreno:\n");
scanf("%d", &sTerreno);
printf("Ingrese el tipo de construccion:\n 1-Lujo\n 2-Estandar\n");
scanf("%d", &sTipo);
printf("Ingrese el valor de la construcción:\n");
scanf("%d", &sConstruccion);
if (sTipo == 1){
sValor = sTerreno + sConstruccion;
}else{
sValor = (sTerreno + sConstruccion) * 15 / 100;
}
printf("El valor del inmueble es: %f.\n", sValor);
return 0;
}
Resultado,
shellroot@alex-laptop:~/Escritorio$ gcc PoC.c
shellroot@alex-laptop:~/Escritorio$ ./a.out
Ingrese el valor del terreno:
2000
Ingrese el tipo de construccion:
1-Lujo
2-Estandar
1
Ingrese el valor de la construcción:
3000
El valor del inmueble es: 5000.000000.
;-) muchas gracias amigo hay cosas que no entendi pero ya con eso de seguro lo termino gracias de nuevo por haberte tomado la molestia.
Pregunta por lo que no entiendes, yo también ando aprendiendo C y C++
int sTerreno = 0;
int sConstruccion = 0;
int sTipo = 0;
double sValor;
no entiendo por que lo igualo a 0
y
if (sTipo == 1){
sValor = sTerreno + sConstruccion;
}else{
sValor = (sTerreno + sConstruccion) * 15 / 100;
}
no entiendo porque hay que volver a abrir las llaves y por ultimo lo de return 0 lo que pasa es que nosotros no trabajamos asi o almenos hasta orita y cuando compilo el codo se cierra de una vez que me tira el resultado.
Gracias de nuevo amigo...
Se inicializa la variable y como no contiene nada entonces le pongo 0. Que sería igual poner (aunque siempre prefiero darle un valor).
int sTerreno;
Los corchetes es para representar el bloque de código al que pertenece la clausula IF. En este caso, como es solo una linea, no es obligatorio la inclusión de los corchetes.
El RETURN, es porque al iniciar el MAIN, le dices que retorne un entero, con el fin de verificar si ocurrió algún error en el método principal.
C no inicializa las variables por defecto, lo que tomen por valor inicial es lo que hubiera en ésa zona de memoria anteriormente, asique es correcto inicializar las variables.
Dadas las cantidades de memoria que tienen los equipos hoy en dia, es muy probable que de antemano no hubiere nada escrito por ahi, pero no está de más asegurarse.
lo que te han dicho Shell Root y someRandomCode es correcto y una cosa mas:
Citarcuando compilo el codo se cierra de una vez que me tira el resultado.
si te refieres a que se te sierra rapidisimo
puedes poner antes de tu ultimo corchete un
getchar();
o un
system("pause")
simplemente para ver el resultado, esto no tiene una funcion fundamental, es unicamente para poder ver los resultados
Llamalo desde la consola
gracias amigos ya se como lo que hago es agregarle al int una variable esperar algo como esto:
#include <stdio.h>
int main () {
[b][u] int base,altura,radio,area,esperar;[/u][/b]
char elija;
printf("deseas calcular el area de un triangulo[t] o un circulo[c]?: ");
scanf("%s",&elija);
if (elija=='t') {
printf("introduzca el valor de la base: ");
scanf("%d",&base);
printf("introduzca el valorde la altura: ");
scanf("%d",&altura);
area=(base*altura)/2;
} else if (elija=='c') {
printf("introduzca el valor del radio: ");
scanf("%d",&radio);
area= 3.1415*radio*radio;
}
printf("el area es: %d.\n",area);
[b][u] scanf("%d",esperar);[/u][/b]
}
Hace tiempo no programo pero note un problemita... area lo declaraste del tipo entero, y si calculas el area del circulo cuando multiplicas por pi (3,1415) te dara un decimal... Tonces tendrias un error... Entonces pana lo que te recomiendo es q declases area de tipo float, o hagas un casting de tipos que es algo que quizas no concoscas tonces, solo hazla del tipo float...
Saludos...