Suma ciągu, średnia arytmetyczna i funkcje

0

Witam.

Mógłby ktoś mnie oświecić jak poprawić to co napisałem tak, żeby program sprawdzał czy wartość ciągu cyfr jedności jest większy, niż 1/10 średniej arytmetycznej całych liczb? Doszedłem do tego, że w void srednia_arytmetyczna zapisuje się wartość liczby wynik2 z pętli for i przez to w sprawdzaniu wyświetla mi złą odpowiedź, ponieważ zwykle wychodzi tam większa wartość, niż wartość w funkcji suma_jednosci.

Fragment kodu:

//Dodawa cyfr jednosci
void suma_jednosci(int tab[], int n)
{
	float wynik = 0;
	for (int i = 0; i < n; i++)
	{
		wynik += tab[i] % 10;
	}
	cout << "wynik sumy " << wynik << endl;
}
//Z suma całych liczb -> srednia arytmetyczna -> srednia arytmetyczna / 10 = 1/10 sredniej arytmetycznej
void srednia_arytmetyczna(int tab[], int n)
{
	float wynik2 = 0, wynik1 = 0, wynik0 = 0;
	for (int i = 0; i < n; i++)
	{
		wynik2+= tab[i];
	}

	wynik1 = wynik2 / n;
	wynik0 = wynik1 / 10;

	cout << "wynik sumy ciagu: " << wynik2 << " sredniej arytemtycznej: " << wynik1 << " oraz wynik 1/10 jej wartosci: " << wynik0 << endl;

}
//
void sprawdzanie(int tab[], int n)
{
	if (suma_jednosci > srednia_arytmetyczna)
		cout << "Suma cyfr jednosci jest wieksza od 1/10 sredniej arytmetycznej calych liczb." << endl;
	else if (srednia_arytmetyczna > suma_jednosci)
		cout << "1/10 sredniej arytmetycznej calych liczb jest wieksza od sumy cyfr jednosci." << endl;
	else
		cout << "Liczby sa rowne." << endl;
}

PS. Dopiero się uczę programować, więc prosiłbym o jakieś w miarę "normalne" dla nowej osoby wyjaśnienie.

Pozdrawiam Quori :)

1
  1. Nie nadużywaj postinkrementacji.
  2. To
void suma_jednosci(int tab[], int n)
{
    float wynik = 0;
    for (int i = 0; i < n; i++)
    {
        wynik += tab[i] % 10;
    }
    cout << "wynik sumy " << wynik << endl;
}

tylko nazywa się suma_jednosci() powinno się nazywać wyswietl_sume_jednosci() zaś suma_jednosci() powinna wyglądać tak:

int suma_jednosci(int tab[], size_t size)
  {
   int ret=0;
   for (int i=0;i<size;++i) ret+ tab[i]%10;
   return ret;
  }

wtedy będzie można użyć tej funkcji do dowolnego celu (nie tylko do wyświetlenia) to samo dotyczy srednia_arytmetyczna() po naprawieniu będzie można zapisać:

int sprawdzanie(int tab[],size_t size)
  {
   int sum=suma_jednosci(tab,size);
   float avg10=srednia_arytmetyczna(tab,size)/10;
   return (sum>avg10)-(sum<avg10);
  }

Natomiast wszelkie mazanie po ekranie zostaw dla funkcji main np tak:

const char *msg[3]={"Suma cyfr wieksza","Suma cyfr mniejsza","Rowne"};
cout<<msg[1+sprawdzanie(tab,size)]<<endl;
0

Okej, już zrozumiałem i wszystko działa. Dzięki wielkie za pomoc. :)

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