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

Problema en C

Estas en el tema de Problema en C en el foro de C/C++ en Foros del Web. El profesor nos pidio lo siguiente... 2. Haga un programa que permita calcular el valor de la función f(x) según la siguiente expresión. f(x)= Y^3 ...
  #1 (permalink)  
Antiguo 03/04/2012, 12:17
 
Fecha de Ingreso: abril-2012
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
Problema en C

El profesor nos pidio lo siguiente...
2. Haga un programa que permita calcular el valor de la función f(x) según la siguiente expresión.
f(x)= Y^3 si (Y mod 4) = 0
f(x)= ((Y^2)-14)/(Y^3) si (Y mod 4) = 1
f(x)= (Y^3) + 5 si (Y mod 4) = 2
mod = (operador %)



#include<stdio.h>
int main()
{
float y;
printf("Ingrese un numero\n");
scanf("%f",&y);
if(y%4 == 0)
{
printf("El nuevo valor segun la funcion f(x)=y^3 sera: %f\n",y*y*y);
}
if(y%4 == 1)
{
printf("El nuevo valor segun la funcion f(x)=((y^2)-14)/(y^3) sera: %f%f\n",(((y*y)-14)/(y*y*y)));
}
if(y%4 == 2)
{
printf("El nuevo valor segun la funcion f(x)=(Y^3)+5 sera: %f\n",(y*y*y)+5);
}
getchar();
getchar();
}



Mi problema es que no compila y no comprendo el por que... :/

De ante manos Gracias :)
  #2 (permalink)  
Antiguo 03/04/2012, 12:28
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Problema en C

Hola! si no me equivoco el operador resto % es para numeros enteros no de tipo flotante.. La variable "y" deberia ser de tipo int no float

Saludos
  #3 (permalink)  
Antiguo 03/04/2012, 12:31
 
Fecha de Ingreso: abril-2012
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema en C

Cesar, probe con int pero la 2da funcion no se me cumple favor intentalo tu y veras que es verdad lo que te digo, gracias igualmente!
  #4 (permalink)  
Antiguo 03/04/2012, 12:48
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Problema en C

Aca te dejo el codigo modificado. Cambie los %f x %d y en el segundo if tenias dos %f. Otra cosa en el segundo if, al tener "y" de tipo int si vos haces esa cuenta siempre va a dar cero; porque ((y^2)-14) siempre va a ser menor a (y^3). Es por eso que castie el resultado a float

Codigo:
Código C:
Ver original
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int y;
  5. printf("Ingrese un numero\n");
  6. scanf("%d",&y);
  7. if(y%4 == 0)
  8. {
  9. printf("El nuevo valor segun la funcion f(x)=y^3 sera: %d\n",y*y*y);
  10. }
  11. if(y%4 == 1)
  12. {
  13. printf("El nuevo valor segun la funcion f(x)=((y^2)-14)/(y^3) sera: %f\n",(((float)(y*y)-14)/(y*y*y))); // fijate el cast que hice
  14. }
  15. if(y%4 == 2)
  16. {
  17. printf("El nuevo valor segun la funcion f(x)=(Y^3)+5 sera: %f\n",(y*y*y)+5);
  18. }
  19. }
  #5 (permalink)  
Antiguo 03/04/2012, 12:48
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Problema en C

Código C:
Ver original
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int  y;
  5. printf("Ingrese un numero\n");
  6. scanf("%d",&y);
  7. if(y%4 == 0)
  8. {
  9. printf("El nuevo valor segun la funcion f(x)=y^3 sera: %f\n",(float)y*y*y);
  10. }
  11. if(y%4 == 1)
  12. {
  13. printf("El nuevo valor segun la funcion f(x)=((y^2)-14)/(y^3) sera: %f\n",(((y*y)-14)/(float)(y*y*y)));
  14. }
  15. if(y%4 == 2)
  16. {
  17. printf("El nuevo valor segun la funcion f(x)=(Y^3)+5 sera: %f\n",(float)(y*y*y)+5);
  18. }
  19. }

No te funciona porque usas entero y la division de entero devuelve entero. Para arreglar eso tenes que castearlo a float a la hora de hacer la division. Mira como lo arregle.

Saludos
  #6 (permalink)  
Antiguo 03/04/2012, 13:05
 
Fecha de Ingreso: abril-2012
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema en C

me fije que la variable era int y en la primera funcion ponen %d, es lo mismo que %i ??? :)
  #7 (permalink)  
Antiguo 03/04/2012, 13:10
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Problema en C

No se. En la especificacion del scanf no aparece la %i. Fijate si funciona igual. Me parece raro porque para el printf si esta.

Saludos
  #8 (permalink)  
Antiguo 03/04/2012, 14:10
 
Fecha de Ingreso: marzo-2012
Ubicación: Argentina, Buenos Aires
Mensajes: 11
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Problema en C

En el caso del printf %i y %d significan lo mismo. Pero en el caso de scanf %i ademas de interpretar enteros, interpreta hexadecimal si es precedido por "0x" o octal en caso de ser precedido por "0".

Ej: "033" con %i = 27 y con %d = 33

Última edición por GuillermoADC; 03/04/2012 a las 15:14

Etiquetas: funcion, int, programa
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 22:39.