Program obliczający średnia z podanego zakresu liczb

0

Cześć!

Chcę napisać program który wczyta z klawiatury zakres liczb i w jakiś sposób zliczy ich ilość i policzy średnia. Jak coś takiego zrobić?

Na razie stworzyłem zapytanie o zakres i pętelke

 

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
	float a,b;
	
	cout << "Podaj zakres liczb: " << endl;
	cin >> a >> b;
	cout << endl;
	cout << "Podales liczby z zakresu: " << "(" << a << "," << b << ">" << endl;

	int srednia = 0;
	int ilosc = 0;
	
	for (int i=a; i<=b; i++)
	{
		ilosc++;
		}
		
	cout << "W zbiorze jest: " << ilosc << " liczb" << endl;


system("PAUSE");
}

Jak na razie to obliczyłem sobie ilosc liczb w podanym zbiorze ale jak teraz te liczby zsumowac?

Nie wiem jak to ugryźć :/ proszę o pomoc

0
for (int i=a; i<=b; i++)
        {
                ilosc++;
                srednia=srednia + i;
                }

potem już tylko podzielić srednia przez ilość i wypisać, swoją drogą dziwne że się na czymś tak prostym wyłożyłeś

0

Czemu tak?

Kurcze źle mi liczy te liczby :/ bo jest np zakres od (2 do 4> to powinno policzyc 3 i 4 czyli 2 liczby bo bez 2 a liczy wszystko :/

0

A przepraszam liczy średnia dobrze


#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
	float a,b;
	
	cout << "Podaj zakres liczb: " << endl;
	cin >> a >> b;
	cout << endl;
	cout << "Podales liczby z zakresu: " << "(" << a << "," << b << ">" << endl;

	float srednia = 0;
	int ilosc = 0;
	
	for (int i=a; i<=b; i++)
	{
		ilosc++;
		srednia = srednia +i;
		}
		
	cout << "W zbiorze jest: " << ilosc << " liczb" << endl;

	
	cout << "Srednia podanego zakresu to: " << srednia/ilosc << endl;
	
system("PAUSE");
} 

Musialem zmienic typ danych na float xd

Ale wciąż bierze wszystkie liczby jakby był to zakres otwarty (1,5) a ma byc (1,5> czyli z piątką bez jedynki xd

0
#include <iostream>

int main()
{
     float fPoczatek, fKoniec;
     std::cout << "Podaj zakres liczb od: ";
     std::cin >> fPoczatek;
     std::cout << "do: ";
     std::cin >> fKoniec;

     float fSuma = 0;
     int iIlosc = 0;

     for(int i = a + 1; i <= b; ++i) // dla a == 1, policzy od i = 2
     {
          ++ilosc;
          fSuma += i;
     }

     std::cout << "W zbiorze jest: " << iIlosc << " liczb." << endl;
     std::cout << "Srednia podanego zakresu to: " << fSuma/iIlosc << endl;

     getchar();
     return 0; // Ja wiem, że kompilator jest na tyle mądry, że sam to sobie doda, ale w dobrym zwyczaju jest pisać coś takiego
}
0

Czy Wy chodziliście na matematykę w szkole średniej? Przecież na to są wzory.

0

Wiem ,że są

X = a1+a2+a3+...+an/n

I o to w tym chodzi... tylko nie wczytujesz z klawiatury bezpośrednio 2 liczb tylko masz pewien zakres który należy zsumować i podzielić przez ilość składników czyli wzór został zastosowany...

Czy ma może kolega jakieś lepsze rozwiązanie do wdrożenia?

0

Dowiedz się to co to jest "ciąg arytmetyczny".

0

OK. Wiem co to jest ciąg arytmetyczny. Co tutaj niby mam zle?

0

W zbiorze jest b - a + 1 liczb(o ile b >= a), a ich średnia wynosi 0.5*(a + b). Nie potrzebujesz nawet pętli do tego.

0

O przepraszam nie zauważyłem Twojego posta

#include <iostream>

int main()
{
float fPoczatek, fKoniec;
std::cout << "Podaj zakres liczb od: ";
std::cin >> fPoczatek;
std::cout << "do: ";
std::cin >> fKoniec;

 float fSuma = 0;
 int iIlosc = 0;

 for(int i = a + 1; i <= b; ++i) // dla a == 1, policzy od i = 2
 {
      ++ilosc;
      fSuma += i;
 }

 std::cout << "W zbiorze jest: " << iIlosc << " liczb." << endl;
 std::cout << "Srednia podanego zakresu to: " << fSuma/iIlosc << endl;

 getchar();
 return 0; // Ja wiem, że kompilator jest na tyle mądry, że sam to sobie doda, ale w dobrym zwyczaju jest pisać coś takiego

}

Sorry za błędy ale mi chodzi żeby to działało. Nie musi to być składniowo super napisane. Ale dzięki za pomoc.

Może i nie potrzebuje ale w zadaniu wymagana była pętla FOR więc jej użyłem.

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