przekazanie tablicy

0

Mam do zrobienia takie zadanie.
Średnią arytmetyczną ciągu liczb tex[/tex]i=1...n nazywamy liczbę E= (suma ai)/n. Napisz funkcję wyznaczającą średnią z przekazanej jej tablicy liczb typu float.

Jeśli dobrze rozumiem, program ma za zadanie przyjąć od użytkownika podane wartości a następnie podzielić ich sumę przez ich ilość. Zrobiłem na razie coś takiego:

#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int main()
{
    int n;
    int i;
    int suma=0.0;
        float tablica[MAX];
        printf("Ile chcesz wprowadzić liczb? ");
        scanf("%d",&n);
        for(i=0;i<n;i++);
                         {
                         scanf("%f",&tablica[i]);
                         suma=suma+tablica[i];
                         printf("Średnia arytmetyczna:\n", suma/n);
                         }
                         system("PAUSE");
}                         

Niestety nie wiem jak zrobić, aby po podaniu n móc wpisać n wartości w programie.

0
  1. Klasyczny blad: srednik tuz za for'em :) usun go to twoja petla sie wykona prawidlowo.
  2. Srednia arytmetyczna wyswietlasz dopiero po zsumowaniu wszystkiego a nie dla kazdej liczby, czyli musisz tego printf'a umiescic juz poza petla.
  3. Operujesz na liczbach typu float wiec zmienna suma tez musi byc typu float.
  4. Przy printfie z tym srednia arytmetyczna brakuje ci ciagu formatujacego:
printf("Średnia arytmetyczna: %f\n", suma/n);
0

Dzięki wielkie:) Już wszystko działa:)

Teraz mam problem z drugą częścią zadania:
Standardowym odchyleniem ciągu liczb a_i nazywamy liczbę
S = sqrt((ai-E)^2/n)
gdzie E oznacza średnią arytmetyczną. Napisz funkcję wyznaczającą standardowe odchylenie tablicy liczb typu float.

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define MAX 100
int main()
{
    int n;
    int i;
    float arytmetyczna;
    float suma=0.0;
    float kwroz; //kwadrat roznicy sumy elementów i średniej arytmetycznej
    float odchylenie;//standardowe odchylenie
        float tablica[MAX];
        printf("Ile chcesz wprowadzić liczb? ");
        scanf("%d",&n);
        for(i=0;i<n;i++)
                         {
                         scanf("%f",&tablica[i]);
                         suma=suma+tablica[i];
                         }
                         {
                          arytmetyczna=(suma/n);
                         }
                         {                        
                                                  kwroz=pow(suma-arytmetyczna,2);
                                                  }
                                                  {
                                                                                 printf("Standardowe odchylenie: %f\n"),sqrt(kwroz/n);
                                                                                 }
                                                                                 system("PAUSE");
                                                                                 }

Co bym nie podał wynik zawsze mi wyjdzie 0.0000. Nie wątpie, że w dalszej fazie narobiłem pełno błędów. Proszę powiedzcie mi gdzie:P

0

Przepraszam, że nie edytuje, ale chciałbym odświeżyć temat, ponieważ chciałbym wiedzieć gdzie mam ten błąd. Do końca października muszę oddać to zadanie. Proszę o pomoc:)

0

Jak się nauczyc normalnie formatować kod, to takich błędów nie będzie...

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

#define MAX 100
int main()
{
  int n;
  int i;
  float arytmetyczna;
  float suma=0.0;
  float kwroz;
  float odchylenie;
  float tmp; //na co ci cała tablica? o_O
  printf("Ile chcesz wprowadzić liczb? ");
  scanf("%d",&n);
  for (i=0;i<n;i++)
    {
      scanf("%f",&tmp);
      suma+=tmp;
    }
    arytmetyczna=(suma/n);
    kwroz=pow(suma-arytmetyczna,2);
    printf("Standardowe odchylenie: %f\n",sqrt(kwroz/n));
  system("PAUSE");
}
0

dzięki wielkie:) Dopiero się uczę, także proszę o wyrozumiałość:) Jeszcze raz dzięki.

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