float zahl wird nicht angezeigt

Ken89

Mitglied
Hallo kollegen ;)

ich habe ein kleies Konsolenprogramm geschrieben mit dem ich die differenz 2 aufeinanderfolgenden zahlen errechnen möchte (fibonacci-folge ;) )

mein problem ist ich bekomme nie einen fließkommawert angezeigt sondern nur int (also ganzzahlen)
hier das programm:

Code:
#include <iostream>
using namespace std;

int main()
{

int a,b,c,z;
float t;

a = 1;
b = 2;

z = 1;


     while(1)
  // for(int i=1;i<10;i++)
        {

         // cout<<a<<"---"<<t<<endl;
          t = b/a;
          cout<<"t ergibt sich aus: "<<b<<"/"<<a<<" = "<<t<<endl;
          c = a+b;

          a = b;
          b = c;


          z++;
          if(z==10){z=0; getchar();}
        }

        getchar();
        return 0;
}

ich hoffe ihr könnt mir helfen ;)
 
ganz einfach, dein problem liegt daran, 2 Integer zu teilen. Dadurch nimmt er logischerweise an, dasergebnis danach zu runden, weil es sich um 2integer handelt-Lösung: entweder alles als float deklarieren:
Code:
float a,b,c,z,t;
oder explizit zu casten:
Code:
int a,b,c,z;
float t;
...
t= (float) b/a;

lg
 
C++:
#include <iostream>

int main()
{
    std::cout << "Fibonacci-Folge V1.0\n"
                 << "--------------------------------\n" << std::endl;

    unsigned int last(0);
    unsigned int current(1);

    std::cout << "f0: " << last << "\nf1: " << current << std::endl; // f0 u. f1 sind als 0 u. 1 definiert!

    for (std::size_t i(0); i < 100; ++i)
    {
        unsigned int temp(current);
        current = last + current;
        last = temp;
        std::cout << "f" << i + 2 << ": " << current << std::endl;
    }

    std::cout << "Druecken Sie eine beliebige Tasten zum beenden des Programms!" << std::endl;
    std::cin.ignore();
}
...
 
okay vielen dank euch beiden für die schnelle antwort ;)

jedoch hab ich in dem code von devdevil einige sache nicht ganz so verstanden, da ich kein professioneller c++ coder bin, aber es klappt :)

dankeschön ;)
 
Zurück