Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DARKDMR en 13 Octubre 2010, 01:10 am



Título: Ayuda con codigo en C
Publicado por: DARKDMR en 13 Octubre 2010, 01:10 am
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:
Código:
 #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.


Título: Re: Ayuda con codigo en C
Publicado por: Khronos14 en 13 Octubre 2010, 01:28 am
Hola DARKDMR, para empezar tienes varios errores conceptuales bastante graves:

Código:
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.

Código:
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().

Código:
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.


Título: Re: Ayuda con codigo en C
Publicado por: DARKDMR en 13 Octubre 2010, 01:30 am
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.


Título: Re: Ayuda con codigo en C
Publicado por: Shell Root en 13 Octubre 2010, 04:14 am
Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.    int sTerreno = 0;
  5.    int sConstruccion = 0;
  6.    int sTipo = 0;
  7.    double sValor;
  8.  
  9.    printf("Ingrese el valor del terreno:\n");
  10.    scanf("%d", &sTerreno);
  11.  
  12.    printf("Ingrese el tipo de construccion:\n    1-Lujo\n    2-Estandar\n");
  13.    scanf("%d", &sTipo);
  14.  
  15.    printf("Ingrese el valor de la construcción:\n");
  16.    scanf("%d", &sConstruccion);
  17.  
  18.    if (sTipo == 1){
  19.        sValor = sTerreno + sConstruccion;
  20.    }else{
  21.        sValor = (sTerreno + sConstruccion) * 15 / 100;
  22.    }
  23.  
  24.    printf("El valor del inmueble es: %f.\n", sValor);
  25.    return 0;
  26. }

Resultado,
Código
  1. shellroot@alex-laptop:~/Escritorio$ gcc PoC.c
  2. shellroot@alex-laptop:~/Escritorio$ ./a.out
  3. Ingrese el valor del terreno:
  4. 2000
  5. Ingrese el tipo de construccion:
  6.    1-Lujo
  7.    2-Estandar
  8. 1
  9. Ingrese el valor de la construcción:
  10. 3000
  11. El valor del inmueble es: 5000.000000.


Título: Re: Ayuda con codigo en C
Publicado por: DARKDMR en 13 Octubre 2010, 04:22 am
 ;-) muchas gracias amigo hay cosas que no entendi pero ya con eso de seguro lo termino gracias de nuevo por haberte tomado la molestia.


Título: Re: Ayuda con codigo en C
Publicado por: Shell Root en 13 Octubre 2010, 04:28 am
Pregunta por lo que no entiendes, yo también ando aprendiendo C y C++


Título: Re: Ayuda con codigo en C
Publicado por: DARKDMR en 13 Octubre 2010, 04:38 am
Código:
 int sTerreno = 0;
    int sConstruccion = 0;
    int sTipo = 0;
    double sValor;
no entiendo por que lo igualo a 0

y

Código:
 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...


Título: Re: Ayuda con codigo en C
Publicado por: Shell Root en 13 Octubre 2010, 05:04 am
Se inicializa la variable y como no contiene nada entonces le pongo 0. Que sería igual poner (aunque siempre prefiero darle un valor).
Código
  1. 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.


Título: Re: Ayuda con codigo en C
Publicado por: someRandomCode en 14 Octubre 2010, 04:35 am
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.


Título: Re: Ayuda con codigo en C
Publicado por: vincentlaw en 14 Octubre 2010, 07:59 am
lo que te han dicho  Shell Root y someRandomCode es correcto y una cosa mas:


Citar
cuando 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


Título: Re: Ayuda con codigo en C
Publicado por: xassiz~ en 14 Octubre 2010, 15:16 pm
Llamalo desde la consola


Título: Re: Ayuda con codigo en C
Publicado por: DARKDMR en 20 Octubre 2010, 01:15 am
gracias amigos ya se como lo que hago es agregarle al int una variable esperar algo como esto:
Código:
#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]
}
   


Título: Re: Ayuda con codigo en C
Publicado por: .:BlackCoder:. en 20 Octubre 2010, 01:59 am
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...