Dziwny błąd w prostym kodzie

Dziwny błąd w prostym kodzie
Zbigniew128
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Ledwo zacząłem moją przygodę z programowanie a już mnie natknął niezrozumiały dla mnie błąd, po wciśnięciu 14 razy enter wyskakuje za duża liczba a po wciśnięciu 15 raz enter działa i tak co jakiś czas

Kopiuj
   #include <iostream>

using namespace std;
float x, y, z, v;
int main()
{
x=0.01;
z=0;
 for (float i=0;;i+=0.01)
 {
  y=x*14;
  z=z+x;
  v=y-z;

  if (v<0)
        x=x+0.01;

    cout<<x<<endl;  
    cout<<y<<endl;  
    cout<<v<<endl;  
    cout<<z<<endl;  
    getchar();
    }
    return 0;
}
lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5025
1

Co to za pomysł indeksować pętlę floatami?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

Liczby binarne bardzo nie lubią ułamków okresowych, a 0.1 i 0.01 takimi są. Twój problem polega na tym, że nie wiesz jak działają floaty.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
enedil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1028
0

U mnie działa:

Kopiuj
#include <iostream>

int main() {
    int x = 0;
    for (float i = 0; i < 1; i += 1.0 / 9.0) {
        x += 1;
    }
    std::cout << x;
}

Poprawnie wypisuje 9.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.