• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Proszę o pomoc w zadaniu c++, tablice, własne funkcje

VPS Starter Arubacloud
0 głosów
320 wizyt
pytanie zadane 27 stycznia 2017 w C i C++ przez vega Użytkownik (510 p.)

Cześć, mam problem z zadaniem, głownie chodzi mi o funkcje, nie wiem czy srednia ma być jedynie parametrem fukncji czy mam ją obliczyć w tej funkcji, ale pomoc w całości zadania jest bardzo mile widziana smiley

Napisz funkcje, która wyznaczy śrenią wartość tablicy będacej parametrem fukcji i sprawdzi ile elementów jest wiekszych od sredniej. Funkcja ma zapisać do zmiennych w programie głownym srednią i ilość elementów większych od średniej. 

komentarz 27 stycznia 2017 przez vega Użytkownik (510 p.)

#include <iostream>

using namespace std;

float srednia(int *tab, int ile)
{

	int s;
	for (int i = 0; i < ile; i++)
	{
		s += tab[i];
	}
	float sr = s / ile;



	return sr;

}
int main()
{
	int ile;
	cout << "Podaj wielkosc tablicy: ";
	cin >> ile;

	int tab[ile];

	for (int i = 0; i < ile; i++)
	{
		cout << "Podaj " << i + 1 << ". wartosc: ";
		cin >> tab[i];
	}

	cout << srednia(tab, ile);

	system("pause");
	return 0;
}

 

 

Udało mi się póki co tylko coś takiego i wiem, ze ten kod nie ma większegosensu, narazie chciałąm tyko aby zwrócił mi średnią Mogłabym prosić o korekte tego kodu?

1 odpowiedź

+1 głos
odpowiedź 27 stycznia 2017 przez niezalogowany
wybrane 27 stycznia 2017 przez vega
 
Najlepsza

Generalnie jest ok, ale kilka uwag:

int s; //int s = 0;

Zmienne powinny mieć wartości początkowe. W momencie kiedy ich zabraknie w zmiennej mogą znajdować się śmieci (np. jakaś liczba: 81291), a w dalszej części programu modyfikujesz ją (w tym przypadku dodajesz do śmieci kolejne liczby z tablicy) i w rezultacie otrzymasz błędne wyniki.

int ile;
cin >> ile;
int tab[ile];

Nie deklaruj w ten sposób tablicy, w innych kompilatorach niż gcc ta instrukcja nie zadziała (gcc po prostu akceptuje ten zapis i odwala robotę za ciebie). Deklaruj dynamicznie.

int *tab = new int [ile];

 

komentarz 27 stycznia 2017 przez vega Użytkownik (510 p.)
#include <iostream>

using namespace std;

float srednia(int *tab, int ile, int &e)
{

	int s=0, e=0;
	for (int i = 0; i < ile; i++)
	{
		s += tab[i];
	}

	float sr = s / ile;

	for (int i = 0; i < ile; i++)
	{
		if (tab[i]>sr) e++;
	}
		

	return sr;

}
int main()
{
	int ile;
	cout << "Podaj wielkosc tablicy: ";
	cin >> ile;

	int *tab= new int[ile];

	for (int i = 0; i < ile; i++)
	{
		cout << "Podaj " << i + 1 << ". wartosc: ";
		cin >> tab[i];
	}

	cout << srednia(tab, ile) << endl << "Ilosc liczb wiekszych od sredniej: " << e;

	system("pause");
	return 0;
}

 

Z treści zadania muszę policzyć ilośc liczb wiekszych od sredniej w fukcji, wiec jak umiescic zmienna e w mainie? ;/

komentarz 27 stycznia 2017 przez niezalogowany
edycja 27 stycznia 2017

Nie wiesz jak deklarować zmienne w mainie?

#include <iostream>
 
using namespace std;
 
float srednia(int *tab, int ile, int &e)
{
    int s=0;
    for (int i = 0; i < ile; i++)
    {
        s += tab[i];
    }
 
    float sr = s / ile;
 
    for (int i = 0; i < ile; i++)
    {
        if (tab[i]>sr) e++;
    }
         
 
    return sr;
 
}
int main()
{
    int ile, e=0;
    cout << "Podaj wielkosc tablicy: ";
    cin >> ile;
 
    int *tab= new int[ile];
 
    for (int i = 0; i < ile; i++)
    {
        cout << "Podaj " << i + 1 << ". wartosc: ";
        cin >> tab[i];
    }
 
    cout << srednia(tab, ile, e) << endl;
    cout << e << endl;
 
    system("pause");
    return 0;
}

Trochę więcej zaangażowania.

komentarz 27 stycznia 2017 przez vega Użytkownik (510 p.)

mógłbyś wytłumaczyć co znacza ten zapis: <strong>e</strong> i niestety program się nie kompiluje 

 

#include <iostream>


using namespace std;

float srednia(int *tab, int ile, int &e)
{

	int s=0;
	for (int i = 0; i < ile; i++)
	{
		s += tab[i];
	}

	float sr = s / ile;

	for (int i = 0; i < ile; i++)
	{
		if (tab[i]>sr) e++;
	}
		

	return sr;

}
int main()
{
	int ile, e=0;
	cout << "Podaj wielkosc tablicy: ";
	cin >> ile;

	int *tab= new int[ile];

	for (int i = 0; i < ile; i++)
	{
		cout << "Podaj " << i + 1 << ". wartosc: ";
		cin >> tab[i];
	}

	cout << "Srednia podanej tablicy= " << srednia(tab, ile, e) << endl << "Ilosc liczb wiekszych od sredniej: " << e << endl;

	system("pause");
	return 0;
}

Ja próbowałam z czymś takim, jednak e ciagle ma warosc 0

komentarz 27 stycznia 2017 przez niezalogowany
Te strongi to pogrubienie, chciałem ci uwidocznić co zmieniłem, ale w bloczku kodu chyba nie działają (już je usunąłem). Przeklej mój kod, który działa i go przeanalizuj.
komentarz 27 stycznia 2017 przez vega Użytkownik (510 p.)

Jest super! Dziękuję za poswięcenie takiej ilości czasu smileysmiley

Podobne pytania

0 głosów
1 odpowiedź 523 wizyt
pytanie zadane 2 listopada 2020 w C i C++ przez scuhcaj Nowicjusz (120 p.)
0 głosów
1 odpowiedź 187 wizyt
0 głosów
2 odpowiedzi 1,712 wizyt
pytanie zadane 26 stycznia 2017 w C i C++ przez vega Użytkownik (510 p.)

92,454 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...