Algorytm do rozważenia

0

algorytm.png

Mi się wydaje że powinna być odp c.Problem taki, że program np.dla n=3 wyświetla 1.83 a mi się wydaje że powinien wyświetlać 3,I nie wiem co robię żle

#include <stdio.h>
#include <stdlib.h>

int main() {
  float i = 0; //tutaj mam float bo bez tego wynik jest =1, nie można dzielić liczby float przez int?
  float s = 0; 
  do {
    i += 1;
    s += 1 / i;
  } while (i < 3);
  printf("%.2f", s);
  return 0;
} 
0

Powinna być odp C. Z jakiej okazji wg Ciebie powinno być tam 3? Przecież to jest 1 + 1/2 + 1/3.

0

"tutaj mam float bo bez tego wynik jest =1, nie można dzielić liczby float przez int?"
Gdzie w Twoim kodzie jest dzielenie float przez int?
Iloraz dwóch liczb typu int jest typu int, dlatego 1/3 = 0 Logiczniejszy byłby kod

  int i = 0;
  float s = 0; 
  do {
    i += 1;
    s += 1.0 / i;
  } while (i < 3);
0

banany-dla-biegacza-co-takiego-maja-w-sobie-01-01.gif
.

0

no właśnie dlaczego taka instrukcja

s += 1.0 / i;

acha, czyli do s zostaje zapisany int? ale przecież s jest typem float

1

W instrukcji

s+=1/i;

typ zmiennej s nie ma znaczenia, wpierw wykonywane jest dzielenie całkowite 1/i. Wynik tego dzielenie (dla i > 1), to zero.

1 użytkowników online, w tym zalogowanych: 0, gości: 1