Program nie liczy średniej liczb z tablicy.

0

Witam. Odgrzebałem folder z zajeć z Podstaw programowania i jeden program sprawia mi problem. Jestem mało doświadczony w tej dziedzinie, aczkolwiek muszę to zrozumieć, nie tylko nauczyć się na pamięć. bardzo proszę o pomoc, co w tym programie może byc nie tak i dlaczego nie wylicza mi średniej z tych dziesięciu liczb.?

#include<stdio.h>
main ()

{
    int i, tab[10], suma;
    float srednia;
        for(i=0; i<10; i++)
        scanf("%d", &tab[i]);
        suma=0;
        for(i=1; i<=10; i++)
        suma=suma+tab[i];
        srednia=suma/10;
        printf("%6.2f", srednia);
        
        return 0;
}



1

Pierwsza pętla:

for(i=0; i<10; i++)

To jest ok. Druga pętla:

for(i=1; i<=10; i++)

Dlaczego nagle od 1? Przecież ta pętla powinna być identyczna.

W zasadzie to:

srednia=suma/10;

też jest źle. Żeby wynik był prawidłowy musisz gdzieś mieć liczbę zmiennoprzecinkową - zamiast 10 daj 10.0f. Jeżeli będzie po prostu 10 zostaną przeprowadzone obliczenia na liczbach całkowitych.

Ogólnie można by ten program popoprawiać bardziej. Np. wystarczy jedna pętla i nie potrzeba żadnej tablicy.

0

Poprawione i działa. Brak doświadczenia przeze mnie przemawiał. Wielkie dzięki. Zadanie to polegało właśnie na użyciu tablicy, także musiała być użyta, a czy przy użyciu samej pętli nie musiał bym deklarować aż dziesięciu zmiennych??

2

Wystarczy tyle:

#include <stdio.h>
 
int main(void) {
  const size_t count = 10;
 
  float sum = 0.0f;
  float number;
 
  for (size_t i = 0; i < count; ++i) {
    scanf("%f ", &number);
    sum += number;
  }
 
  printf("%6.2f", sum / count);
 
  return 0;
}

(>= C99, http://ideone.com/p6FrDd)

0

Myślę, że temat wyjaśniony w stu procentach. Dzięki

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