[C] Ciąg i srednia arytmetyczna

S.W
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 12 sty 2010, o 14:03
Płeć: Mężczyzna
Podziękował: 1 raz

[C] Ciąg i srednia arytmetyczna

Post autor: S.W »

Witam mam problem z napisaniem programu, oto jego treść:

Dany jest ciąg a0,a1,a2,...an-1. Oblicz średnia arytmetyczną z wyrazów większych od zadanej liczby B.

Rozumiem że w zadaniu muszę podać przedział jakiś liczb (np. 30-40), a po wpisaniu liczby B (np. 35) program ma liczyć średnia wszystkich liczb większych od niej (czyli 36+37+38+39+40 : 5),
ale jak to mam zrobić to już większy problem ;/ Ktoś może pomóc ?
Crizz
Użytkownik
Użytkownik
Posty: 4094
Rejestracja: 10 lut 2008, o 15:31
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 12 razy
Pomógł: 805 razy

[C] Ciąg i srednia arytmetyczna

Post autor: Crizz »

Czemu akurat przedział liczb? W zadaniu nie było o tym mowy.

Dane wejściowe: tablica T liczb zmiennoprzecinkowych, ilość elementów w tablicy N, liczba zmiennoprzecinkowa B
Dane wyjściowe: średnia elementów tablicy, które są większe od B

Kod: Zaznacz cały

float średnia(float *T, float B, int N)
{
      float suma=0;
      float ilość=0;
      for(int i=0;i<N;i=i+1)
      {
            if(T[i]>B)
            {
                   suma=suma+T[i];
                   ilość=ilość+1;
            }
      }
      return suma/ilość;
}
Napisałem funkcję w postaci pseudokodu.
Na początku deklarujesz dwie zmienne:
*suma: będziemy do niej dodawać (w pętli) liczby większe od B w tablicy (po zakończeniu pętli, wartość zmiennej suma będzie róna sumie wszystkich elementów tablicy większych od B)
*ilość: za każdym razem, kiedy do zmiennej suma dodamy liczbę z tablicy T, do tej zmiennej dodajemy jeden (na koniec, kiedy przejdziemy już całą tablicę, wartość zmiennej ilość będzie równa ilości liczb dodanych do zmiennej suma)
Jak wyżej opisałem w pętli przeszukujesz cąłą tablicę; kiedy natrafisz na liczbę większą od B, dodajesz tę liczbę do zmiennej suma, a zmienną ilość zwiększasz o jeden
Dlaczego funkcja ma zwrócić wartość wyrażenia suma/ilość, nie muszę chyba tłumaczyć.
S.W
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 12 sty 2010, o 14:03
Płeć: Mężczyzna
Podziękował: 1 raz

[C] Ciąg i srednia arytmetyczna

Post autor: S.W »

Mhm czyli nie wybierać przedziału.. wystarczy że zadeklaruje jakąś tablice, wpisze B i niech sumuje liczby od niej większe ?
Spróbuje napisać zobaczymy co z tego wyjdzie

-- 12 sty 2010, o 23:29 --

Coś mi się udało napisać - zlepek wcześniejszych zadań i twoich wskazówek, ale nie chce działać, pewnie czegoś za dużo albo czegoś brak :/

wiesz co nie tak ?

Kod: Zaznacz cały

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


int main ()
{

int i,n;
double t[50],suma,ilosc,liczba,srednia;

suma=0;
ilosc=0;

printf("Podaj liczbe B ");
scanf("%lf",&n);

for( i=0; i<n ;i=i+1)

scanf("%lf",&t[i]);

if (t[i]>n)
{
           
suma=suma+t[i];         
ilosc=ilosc+1;
}


if (liczba!=0)
{
srednia=suma/ilosc;
printf("srednia wynosi %lf", srednia);
}
else
printf("Podales 0  ");

}
-- 13 sty 2010, o 15:09 --.
ODPOWIEDZ