duda con devC++ (casting float ó int)

Hola.

Lo cierto es que estoy empezando a programar con devC++ (v4)

Lo que me pasa esque estoy haciendo unos egercicios en el cual me piden que haga una puñetera division de varias variables.

En teoría las variables son los coeficientes de un sistema de ecuaciones, y tengo que declararlas como INT, pero luego al operar con esos coeficientes me hace la division entera (usando la regla de kramer), o sea que siempre me da 0 o 1.

Sé que si se le pone (float) delante de la variable (esto lo ha llamado mi profesor casting) se convierte temporalmente en ese tipo de variable. Pero esque por mas que lo intento no me hace una mierda de lo que quiero. aparte me llena de ceros la pantalla y siempre me da resultado 0.0000000

ya estoy to quemado, incluso he añadido la math.h por si a caso.

Alguien me puede ayudar con esto? sigo sin entender del todo la filosofía del c, pero me debería hacer una cuenta sencilla, cagonla....

bueno, un saludo y gracias de antemano.


pd: lo he posteado aquí porque el que mas o el que menos chanela de c. si me he escurrido perdon. Y si hace falta puedo poner el source code por si la estoy cagando en otra cosa XD
Si escribes el trocito de codigo para ver lo que estas haciendo será mas fácil decirte en que te estas equivocando, por que los casting, lo que es funcionar, funcionan :D.
Exacto, si pones el fragmento en cuestion, mas facil, pero vamos, te deberia valer algo como:

c = (float)a/b;
#include <cstdlib>
#include <iostream>
#include "stdio.h"
#include "math.h"
using namespace std;

int main(int argc, char *argv[])
{
//declaramos las variables, que son 6 con dos intermedias
int a=0,b=0,c=0,d=0,e=0,f=0;
float x=0,y=0;
//esta es float porque es el resultado de una division

//ahora pedimos todos los oeficientes
....
....
....

system("PAUSE");
//ahora que está todo bonito empezamos a calcularlo, que es muy facil
/*en teoría debería tener solución, a no ser que los divisores sean 0,es decir, que
a*e no puede ser igual a b*d, así que vamos a prevenir*/
if (a*e != b*d ){

   x=(((c*e)-(b*f))/((a*e)-(b*d)));
   y=(((a*f)-(c*d))/((a*e)-(b*d)));
   printf(" X= %f \n Y= %f \n");
   }
   else {
        printf ("El sistema es incompatible, querias matarme o que\n");
        }

    system("PAUSE");
    return EXIT_SUCCESS;
}



Y ya está, si es solo una division compuesta, pero lo compilo sin error, pero me devuelve x=0.000000 y Y=0.#A0etc... letras raras

en fin

EDITO: lo he puesto sin el cast, pero sería en el calculo de x e y delante de cada letra (float)a*(float)b etc....

EDITO2: MIERDAAAAAAAAAAAAAAAA

Ya sabía yo que era yo el culpable, como coño te va a escribir el resultado si no pones en printf las variables que son

arghhhhhhhhhhhh

ni cast ni pollas.

bueno, el fallo estaba en
printf(" X= %f \n Y= %f \n");

y es
printf(" X= %f \n Y= %f \n",x,y);
carlosyeah escribió:
   printf(" X= %f \n Y= %f \n");
Antes de mirar nada mas... estooo... que tal si al printf le pones de que variables salen los %f? XD
dios, me he dado cuenta antes de que me lo dijeras, que verguenza coño
No te preocupes es un error bastante común. Yo ya llevo unos cuantos años programando en c, y eso mismo me sigue pasando de vez en cuando :D

Salu2!
Una cuestión, ¿ por qué haces el #include y el use namespace std, si realmente luego no lo usas ?

No lo digo a malas, ni mucho menos, pero a partir de eso podrías usar cout en vez del printf..

cout << x << y << endl;

Y luego te puedes cargar el stdio.h..
7 respuestas