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

Program znajdujacy liczbe najblizsza sredniej danych liczb.

VPS Starter Arubacloud
+4 głosów
11,875 wizyt
pytanie zadane 8 kwietnia 2015 w C i C++ przez 1110200039910 Gaduła (4,630 p.)

Witam, mam problem z programem (a właściwie zadaniem domowym) z 11 odcinka kursu Pana Mirosława.

Program ma podać liczbę najbliższą średniej trzech liczb (u mnie 'm'), srednia liczy poprawnie aczkolwiek zamiast liczby najblizszej sredniej wypisuje najwieksza. Prosze o pomoc, jak ten program powinien wygladac.

 

#include<iostream>

using namespace std;

float a,b,c,sr,m;

int main()
{
    cout<<"Podaj 3 liczby:\n";
    cin>>a>>b>>c;

    sr=(a+b+c)/3;

    m=a;
    if (sr-b<sr-a)
        m=b;
    if (sr-c<sr-b)
        m=c;
    cout<<endl<<sr<<endl<<m;

    return 0;
}

 

14 odpowiedzi

+1 głos
odpowiedź 8 kwietnia 2015 przez krecik1334 Maniak (58,390 p.)
Twój kod jest bez sensu, masz sprawdzić najbliższą średnią a instrukcje w warunkach nie zależą od średniej, patrz:

sr-b<sr-a

-b<-a

b>a

To bez sensu, to na pewno nie zadziała.
komentarz 8 kwietnia 2015 przez 1110200039910 Gaduła (4,630 p.)
Rzeczywiscie, nie zdalem sobie z tego sprawy. Dziekuje za odpowiedz.
komentarz 8 kwietnia 2015 przez 1110200039910 Gaduła (4,630 p.)
Nie mam pojęcia jak napisać warunki. Miałem pomysł żeby porównać różnicę liczb od średniej ale właśnie mi pokazałeś że to bez sensu.
+1 głos
odpowiedź 8 kwietnia 2015 przez Ukis Gaduła (4,580 p.)

Użyj funkcji abs(), która służy do zwracania wartości bezwzględnej. Żeby z niej skorzystać, na początku programu musisz użyć biblioteki cmath. Tak może wyglądać Twój kod po przerobieniu:

#include<iostream>
#include <cmath>


using namespace std;

float a,b,c,sr,m;

int main()
{
    cout<<"Podaj 3 liczby:\n";
    cin>>a>>b>>c;

    sr=(a+b+c)/3;

    m=a;
    if (abs(sr-b)<abs(sr-a))
        m=b;
    if (abs(sr-c)<abs(sr-b))
        m=c;
    cout<<endl<<sr<<endl<<m;

    return 0;
}

 

 

komentarz 8 kwietnia 2015 przez 1110200039910 Gaduła (4,630 p.)
Czyli mój pomysł jednak był dobry, ale zapomniałem uwzględnić wartości bezwzględnej w moich działaniach. Dziękuję bardzo!
komentarz 8 kwietnia 2015 przez 1110200039910 Gaduła (4,630 p.)

Jednak program nie działa prawidłowo. Rozszerzyłęm go do 5 liczb tak jak to powinno wyglądać i podając liczby takie jak np. {6.5 ; 3.5 ; 0 ; 15 ; 0} uzna liczbę '0' za najbliższą średniej która wynosi '5'.

 

#include<iostream>
#include <cmath>


using namespace std;

float a,b,c,d,e,sr,m;

int main()
{
    cout<<"Podaj 5 liczb:\n";
    cin>>a>>b>>c>>d>>e;

    sr=(a+b+c+d+e)/5;

    m=a;
    if (abs(sr-b)<abs(sr-a))
        m=b;
    if (abs(sr-c)<abs(sr-b))
        m=c;
    if (abs(sr-d)<abs(sr-c))
        m=d;
    if (abs(sr-e)<abs(sr-d))
        m=e;
    cout<<endl<<"Srednia wynosi: "<<sr<<endl<<"Liczba najblizej sredniej to: "<<m;

    return 0;
}

 

komentarz 8 kwietnia 2015 przez Ukis Gaduła (4,580 p.)
Tak, ale błąd wynika z Twojego sprawdzania warunków, więc to nie moja wina. :D Jeśli wprowadzisz liczby w kolejności od najmniejszej do największej, to będzie dobrze. Jeśli chcesz wprowadzać w różnej kolejności, to należy zmienić warunki.
0 głosów
odpowiedź 27 października 2017 przez pawelpawel1717 Nowicjusz (140 p.)

Hej wiem, że to stary post ale mam swoją własną wersję tego zadania i nie znam jeszcze tych bibliotek więc zrobiłem po swojemu, trochę długie ale działa smiley

#include <iostream>

using namespace std;

int main()
{ float a,b,c,d,e,srednia,n;
cin >>a>>b>>c>>d>>e;
float a1,b1,c1,d1,e1;
  srednia = (a+b+c+d+e)/5;
  cout <<"Srednia to: "<<srednia<<endl;


  //ZAPISANIE A
    if(a==srednia)
       a1=0;
    else if (a>srednia)
        a1=srednia-a;
        else if (a<srednia)
            a1=a-srednia;
   //ZAPISANIE B
    if(b==srednia)
       b1=0;
    else if (b>srednia)
        b1=srednia-b;
        else if (b<srednia)
            b1=b-srednia;
   //ZAPISYWANIE C
     if(c==srednia)
       a1=0;
    else if (c>srednia)
        c1=srednia-c;
        else if (c<srednia)
            c1=c-srednia;
    //ZAPISANIE D
    if(d==srednia)
       d1=0;
    else if (d>srednia)
        d1=srednia-d;
        else if (d<srednia)
            d1=d-srednia;
    //ZAPISANIE E
    if(e==srednia)
       e1=0;
    else if (e>srednia)
        e1=srednia-e;
        else if (e<srednia)
            e1=e-srednia;


    //WYPISANIE LICZBY NAJBLIZSZEJ SREDNIEJ

    n=a1;
    if (b1>n)
        n=b1;
    if (c1>n)
        n=c1;
    if (d1>n)
        n=d1;
    if (e1>n)
        n=e1;

    if (n==a1)
        cout <<"Liczba najblizsza sredniej to: " <<a;
        else if (n==b1)
        cout <<"Liczba najblizsza sredniej to: " <<b;
        else if (n==c1)
        cout <<"Liczba najblizsza sredniej to: " <<c;
        else if (n==d1)
        cout <<"Liczba najblizsza sredniej to: " <<d;
        else if (n==e1)
        cout <<"Liczba najblizsza sredniej to: " <<e;
 return 0;
}

 

komentarz 17 kwietnia 2019 przez wojtek999 Nowicjusz (100 p.)

Witam, szukając rozwiązania tego tematu trafiłem tutaj. Po dłuższym zastanowieniu podeszłem inaczej do tematu, a mianowicie na eliminacji skrajnych liczb najniższej i najwyższej, dodałem kilka wyjątków. Może się komuś przyda. Na pewno da się jeszcze kod zoptymalizować 

 

#include <iostream>

using namespace std;

float a[5], srednia=0, min1, min2, max1, max2;

int main()
{
    cout << "Podaj piec liczb:" << endl;
    for (int i=0;i<5;i++)
    {
        cin >> a[i];
        srednia+=a[i];
    }
    srednia /=5;
    cout << "Srednia to:" << srednia << endl;

    for (int i=0; i<5; i++)
    {
        if (a[i]==srednia)
        {
            cout << "Najblizsza liczba to:" << a[i];
            return 0;
        }
    }
    max1=a[0];
    for (int i=0; i<4; i++)
    {
        if (a[i+1]>max1) max1=a[i+1];
    }

    min1=a[0];
    for (int i=0; i<4; i++)
    {
        if (a[i+1]<min1) min1=a[i+1];
    }

    max2=a[0];
    for (int i=0; i<4; i++)
    {
        if ((a[i+1]>max2) && (a[i+1]<max1) ) max2=a[i+1];
    }

    if (min1=a[0]) min2=a[1];
    else min2=a[0];

    for (int i=0; i<4; i++)
    {
        if ((a[i+1]<min2) && (a[i+1]>min1)) min2=a[i+1];
    }

    for (int i=0; i<5;i++)
    {
    if ((a[i]>min2) && (a[i]<max2))
    {
    cout << "Najblizsza liczba to: " << a[i];
    return 0;
    }
    }

    if ((srednia-min2)==(max2-srednia)) cout <<"Najblizsze liczby to:"<< min2 <<" i "<<max2<<endl;
        else if ((srednia-min2)<(srednia-max2))    cout <<"Najblizsza liczba to:"<<min2<<endl;
            else cout <<"Najblizsza liczba to:"<<max2<<endl;



    return 0;
}

 

0 głosów
odpowiedź 11 listopada 2018 przez Karol Matusiewicz Nowicjusz (200 p.)
edycja 11 listopada 2018 przez Karol Matusiewicz

Jakby ktoś kiedyś szukał to ten kod działa ;) (przynajmniej na 5 liczbach) 

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int i, ile_liczb;
    float suma=0.0, srednia, liczba, sr=0,wb=0, maxi=0, mini=0;
    cout<<"podaj ile liczb: ";
    cin>>ile_liczb;
    float tab[ile_liczb];
    for(i=0; i<ile_liczb; i++)
    {
        cout <<"podaj liczbe nr "<<i<<": ";
        cin>>tab[i];
        suma+=tab[i];

    }
    srednia=suma/ile_liczb;
    for(int a=0; a<ile_liczb; a++)
    {

        sr=abs(srednia-tab[0]);

        wb=abs(srednia-tab[a]);
        if (wb<sr)
            sr=tab[a];


        


    }
    cout<<"zblizona do sredniej: "<<sr<<endl;
    cout<<"srednia wynosi: "<<srednia<<endl;

    return 0;
}

 

komentarz 24 maja 2020 przez DziarskiHenk Nowicjusz (180 p.)
Dobry kierunek, ale zamieszczony kod nie przechodzi poprawnie wszystkich testów.
0 głosów
odpowiedź 11 listopada 2018 przez Drax Użytkownik (630 p.)

Witam! Wiem, że mineło sporo czasu od napisania tego postu ale mimo wszystko chciałbym pokazać  moje rozwiązanie tego problemu. Może się komuś to przyda.

#include <iostream>

using namespace std;

double a,b,c,d,e;
double a1,b1,c1,d1,e1;
double srednia,w,m;


int main()
{
cout << "Podaj 5 liczb: ";
cin>>a>>b>>c>>d>>e;

srednia=(a+b+c+d+e)/5;

a1=a-srednia;
b1=b-srednia;
c1=c-srednia;
d1=d-srednia;
e1=e-srednia;

if(a1<0) a1=a1*(-1);
if(b1<0) b1=b1*(-1);
if(c1<0) c1=c1*(-1);
if(d1<0) d1=d1*(-1);
if(e1<0) e1=e1*(-1);

m=a1;
w=a;

if(b1<m) {m=b1; w=b;}
if(c1<m) {m=c1; w=c;}
if(d1<m) {m=d1; w=d;}
if(e1<m) {m=e1; w=e;}


cout<<endl<<"Najblizej sredniej jest: "<<w;


    return 0;
}

 

0 głosów
odpowiedź 5 czerwca 2019 przez minuss0 Nowicjusz (140 p.)

Chyba udało mi się zrobić w miarę odpowiedni program. Niestety ma wadę, jeśli jakaś liczba bliska będzie wynosiła 12345 to niestety nie wskaże jej jako liczbę najbliższą.
 

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    float a=6.5, b=3.5, c=0, d=15, e=0, s, m, n, tab[4];
    s=(a+b+c+d+e)/5;

    for(int i=0;i<4;i++)
    {
        tab[i]=NULL;
    }

    m=abs(s-a);
    n=a;
    if(abs(s-b)<=m)
    {
        if(abs(s-b)==m)
            {
                tab[0]=a;
                m=abs(s-b);
                n=b;
            }
        else
        {
            m=abs(s-b);
            n=b;
        }
    }
    if(abs(s-c)<=m)
    {
        if(abs(s-b)==m)
            {
                tab[1]=b;
                m=abs(s-c);
                n=c;
            }
        else
        {
            m=abs(s-c);
            n=c;
        }
    }
    if(abs(s-d)<=m)
    {
        if(abs(s-b)==m)
            {
                tab[2]=c;
                m=abs(s-c);
                n=d;
            }
        else
        {
            m=abs(s-c);
            n=d;
        }
    }
    if(abs(s-e)<=m)
    {
        if(abs(s-b)==m)
            {
                tab[3]=d;
                m=abs(s-e);
                n=e;
            }
        else
        {
            m=abs(s-e);
            n=e;
        }
    }
    cout<<"Srednia: " << s << endl;
    cout<<"Najblizej: " << n;
    for(int j=0; j<4;j++)
    {
        if(tab[j]!=NULL)
        {
            cout << " oraz "<<tab[j];
        }
    }



    return 0;
}

 

0 głosów
odpowiedź 18 lipca 2019 przez dobre_pomarańczowe Nowicjusz (140 p.)
edycja 18 lipca 2019 przez dobre_pomarańczowe
#include <iostream>

using namespace std;

float bezw(float n)
{
	if (n < 0) return -1 * n;
	else return n;
}

int main() 
{	
	int ile;
	cout << "Ile liczb: ";
	cin >> ile;
	float* liczba;
	liczba = new float[ile];
	float* odchylenie;
	odchylenie = new float[ile];
	float* byly;
	byly = new float[ile];

	float suma = 0, srednia, najmniejsze;

	for (int i = 0; i < ile; i++)
	{
		cin >> liczba[i];
		suma += liczba[i];
	}

	srednia = suma / ile;

	cout << "Srednia: " << srednia << endl;

	cout << "Odchylenie: " << endl;
	for (int i = 0; i < ile; i++)
	{
		odchylenie[i] = bezw(liczba[i] - srednia);
		cout << i + 1 << ". " << odchylenie[i] << endl;
	}


	int ileRazy = 1;
	najmniejsze = odchylenie[0];
	for (int i = 1; i < ile; i++)
	{
		if (odchylenie[i] == najmniejsze) ileRazy++;
		if (odchylenie[i] <= najmniejsze) najmniejsze = odchylenie[i];
	}

	cout << "Najmniejsze odchylenie: " << najmniejsze << " powtarza sie " << ileRazy << " raz/y" << endl;

	int Flag = 0;
	cout << "Najblizej:";
	for (int i = 0; i < ile; i++)
	{
		if (najmniejsze == odchylenie[i])
		{
			Flag = 0;
			
			for (int j = 0; j < i; j++)
			{
				if (byly[j] == liczba[i] && i > 0)
				{
					Flag = 1;
					break;
				}
			}
			byly[i] = liczba[i];
			if(Flag != 1) cout << " " << liczba[i];
		}
	}
	
	

	delete [] liczba;
	delete [] odchylenie;
	delete [] byly;

	return 0;
}

 

komentarz 18 lipca 2019 przez tkz Nałogowiec (42,020 p.)
Lepiej ukryj odpowiedź przed ogólno-formułowym linczem. goto nie jest zalecane, tak delikatnie pisząc.
komentarz 18 lipca 2019 przez dobre_pomarańczowe Nowicjusz (140 p.)
Zgadzam się że "goto" czasami może być mylące, ale jednak jest to dobre rozwiązanie do wyjścia z zagnieżdżonych pętli. Chętnie posłucham jakie rozwiązanie zaproponujesz.

PS. Nie znalazłem kodu tego zadania działającego dla wszystkich przypadków. A w tym nie znalazłem jakiegoś nie działającego, ale zachęcam do sprawdzenia, a gdyby coś nie działało postaram się naprawić.
komentarz 18 lipca 2019 przez tkz Nałogowiec (42,020 p.)
Flaga w pętli, która by ją przerwała.
komentarz 18 lipca 2019 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Jak dla mnie goto w tym przypadku wcale nie zaburza czytelności, wręcz jest czytelniejsze niż dodatkowa flaga. Nie ma co popadać w jakiś puryzm, tylko stosować proste, dobre i skuteczne rozwiązania. smiley

Za goto można karcić, kiedy ktoś używa tego do definiowania przebiegu programu, używa zamiast go zamiast pętli. Wtedy tworzy się tzw. kod spaghetti. Ale jak mówię, w powyższym przypadku nie widzę niczego złego.

komentarz 18 lipca 2019 przez tkz Nałogowiec (42,020 p.)

 

Potwierdzone...your slow connection sucks, get a faster one to see this image

Oczywiście można się o to kłócić, ale no, nie ma chyba sensu. Nadal uważam, że to zbędne. 

komentarz 18 lipca 2019 przez dobre_pomarańczowe Nowicjusz (140 p.)

Kończąc spór zamieniłem niesławne 'goto' na flagę, przy okazji poprawiając błąd dla przypadku "4 4 2 2".

 

Z pewnością da się jeszcze lepiej zoptymalizować, ale nie będę się zamykał na jednym zadaniu.

komentarz 18 lipca 2019 przez tkz Nałogowiec (42,020 p.)
Samo w sobie goto nie jest złe, bo niby dlaczego. Jeżeli użyjesz go odpowiednio wszystko jest okey. Tak czytam, że niby nadal jest używane, rzadko bo rzadko, ale się zdarza. Całkiem fajnie sprawdza się w tym co pisałeś, czyli wychodzeniu z zagnieżdżonej pętli.
komentarz 18 lipca 2019 przez dobre_pomarańczowe Nowicjusz (140 p.)
Przydatne jest do wychodzenia z pętli, ale w poprzedniej wersji robiło to zbyt szybko, przed sprawdzeniem, więc i tak musiałem zmienić coś, to spróbowałem z flagami tym razem.

Teraz działa dla wszystkich przypadków, które mogłem wymyślić.
0 głosów
odpowiedź 18 lipca 2019 przez TomekS Nowicjusz (140 p.)
Witam, Ja użyłem takiego kodu, obeszło się bez biblioteki #include using namespace std; float a,b,c,d,sr,m; int main() { cout<<"Podaj 4 liczby: "; cin>>a>>b>>c>>d; sr=(a+b+c+d)/4; if((sr-a)<(sr-d)) m=a; else if ((sr-b)<(sr-a)) m=b; else if ((sr-c)<(sr-b)) m=c; else if((sr-d)<(sr-c)) m=d; cout<<"Srednia wynosi: "<<sr<<endl; cout<<"Szukana liczba to: "<<m<<endl; return 0; } pozdrawiam
0 głosów
odpowiedź 27 lutego 2020 przez Złoty_dZ Nowicjusz (140 p.)
edycja 27 lutego 2020 przez Złoty_dZ

Witam ;) Chciałbym się podzielić moja praca. Temat ćwiczenia podchwyciłem od Pana Mirosława i bardzo on mnie zainteresował. Udało mi się napisać kod: Obliczający Średnia 5 Ocen oraz podający ocenę która jest najbliżej średniej tych liczb. 

#include <iostream>
#include <cmath>
 
using namespace std;
 
float tab[5];
int nSuma = 0;
int nSrednia = 0;
int a, b, c, d, e;
 
void ntablica()
{
  for (int i=0;i<5;i++)
  {
  cout<<"Podaj "<<i+1<<" Ocene: ";
  cin>>tab[i];
  nSuma+=tab[i];
  }
}
 
void wSrednia()
{
  nSrednia=nSuma/5;
  cout<<"Srednia ocen wynosi: "<<nSrednia;
}
 
void najblizsza_sredniej()
{
a = abs(tab[0]-nSrednia);   
b = abs(tab[1]-nSrednia);
c = abs(tab[2]-nSrednia);
d = abs(tab[3]-nSrednia);
e = abs(tab[4]-nSrednia);
 
int min=a;
if (min>b)  min=b;
if (min>c)  min=c;
if (min>d)  min=d;
if (min>e)  min=e;
 
cout<<endl<<"Ocena najblizej sredniej: ";
 
if (min==a) cout<<tab[0]<<" ";
if (min==b) cout<<tab[1]<<" ";
if (min==c) cout<<tab[2]<<" ";
if (min==d) cout<<tab[3]<<" ";
if (min==e) cout<<tab[4]<<" ";
}
 
int main() 
 
{
ntablica();
wSrednia();
najblizsza_sredniej();
}

 

0 głosów
odpowiedź 24 maja 2020 przez DziarskiHenk Nowicjusz (180 p.)
edycja 24 maja 2020 przez DziarskiHenk

Zamieszczam kod, który:

  1. Działa dla wszystkich scenariuszy testowych z odcinka 11 c++ Mirosława Zelenta,
  2. Działa dla dowolnej liczby zmiennych, a więc jest skalowalny i nie wymaga edycji kodu w razie zmiany liczby wprowadzanych zmiennych.
  3. Wyświetla w razie potrzeby również drugą liczbę najbliższą średniej (bo taki przypadek może wystąpić - przykład - test nr 3: liczby 6.5, 3.5, 0, 15, 0).
  4. W moim przekonaniu - ładny on jest smiley (czytaj: prosty i czytelny).
#include <iostream>
#include <cmath>

using namespace std;

float suma=0, srednia, odchylenie, szukana1, szukana2;
int ile_liczb;
bool drugaliczba=false;

int main()
{
    cout<<"Podaj ile liczb: ";
    cin>>ile_liczb;
    float liczba[ile_liczb];
    for (int i=0; i<ile_liczb; i++)
    {
        cout<<"Podaj "<<i+1<<" liczbe: ";
        cin>>liczba[i];
        suma+=liczba[i];
    }
    srednia = suma / ile_liczb;
    cout<<"Srednia = "<<srednia<<endl;

    szukana1 = liczba[0];
    odchylenie = abs((srednia - szukana1));

    float x[ile_liczb];
    for (int i=0; i<ile_liczb; i++)
    {
        x[i] = abs((srednia-liczba[i]));
        if (x[i]<odchylenie) {szukana1=liczba[i]; odchylenie=x[i];}
        if ((x[i]==odchylenie) && (liczba[i]!=szukana1)) {szukana2=liczba[i]; drugaliczba=true; odchylenie=x[i];}
    }
    cout<<endl<<"Liczba najblizsza sredniej: "<<szukana1;
    if (drugaliczba==true) cout<<" oraz "<<szukana2;
    return 0;
}

 

0 głosów
odpowiedź 28 października 2020 przez Alipi Nowicjusz (140 p.)

Kod dla 5 liczb.  Jestem świadoma, że można napisać to lepiej, ale działa.  Będę próbować.

#include <iostream>
#include <stdlib.h>

using namespace std;

 float a,a1,b,b1,c,c1,d,d1,e,e1,srednia,najblizsza;



int main()
{
    cout << "Podaj piec liczb rozdzielonych spacja: "<<endl;
    cin>>a>>b>>c>>d>>e;

    srednia=(a+b+c+d+e)/5;
    cout<<"Srednia z 5 liczb to: "<<srednia;

    a1=abs(a-srednia);
    b1=abs(b-srednia);
    c1=abs(c-srednia);
    d1=abs(d-srednia);
    e1=abs(e-srednia);

    najblizsza=a1;

    if      ((a1<b1)&&(a1<c1)&&(a1<d1)&&(a1<e1))
        cout<<endl<<"Najblizsza sredniej jest: "<<a;
    else if ((b1<a1)&&(b1<c1)&&(b1<d1)&&(b1<e1))
        cout<<endl<<"Najblizsza sredniej jest: "<<b;
    else if ((c1<a1)&&(c1<b1)&&(c1<d1)&&(c1<e1))
        cout<<endl<<"Najblizsza sredniej jest: "<<c;
    else if ((d1<a1)&&(d1<b1)&&(d1<c1)&&(d1<e1))
        cout<<endl<<"Najblizsza sredniej jest: "<<d;
    else if ((e1<a1)&&(e1<b1)&&(e1<c1)&&(e1<d1))
        cout<<endl<<"Najblizsza sredniej jest: "<<e;
    return 0;
}

 

komentarz 28 października 2020 przez NewEraOfPeace Gaduła (4,790 p.)

Chciałbym zauważyć, że post jest sprzed 5 lat i zostało udzielone już 11 odpowiedzi smiley

0 głosów
odpowiedź 14 listopada 2020 przez jankowalskijfk Nowicjusz (140 p.)

Witam, Poniżej chyba najprostsze i najbardziej zgrabne rozwiązanie:

 

#include <iostream>

using namespace std;


float a,b,c,d,e,m;
float srednia,odchylenie;
float najblizsza;



int main()
{



    cout << "Podaj piec liczb: " << endl;
    cin>>a>>b>>c>>d>>e;


    srednia = (a+b+c+d+e)/5.0;

    odchylenie=(srednia-a);
    najblizsza=a;
    cout<<odchylenie<<endl;

    if(abs(srednia-b)<odchylenie) odchylenie=abs(srednia-b),najblizsza=b;
    if(abs(srednia-c)<odchylenie) odchylenie=abs(srednia-c),najblizsza=c;
    if(abs(srednia-d)<odchylenie) odchylenie=abs(srednia-d),najblizsza=d;
    if(abs(srednia-e)<odchylenie) odchylenie=abs(srednia-e),najblizsza=e;






cout<<"Średnia z tych liczb to: "<<srednia<<endl;
cout<<"Liczba najblizsza sredniej to: "<<najblizsza;


    return 0;
}

 

komentarz 14 listopada 2020 przez Wiciorny Ekspert (277,460 p.)
zauważ proszę, że 5 lat temu to pytanie zostało dodane i ma pełno odpowiedzi jak już ktoś to samo pisał
komentarz 14 listopada 2020 przez jankowalskijfk Nowicjusz (140 p.)
oj:) Przepraszam! Ale może się komuś przyda. Każdy w innym momencie zaczyna przygodę z programowaniem:)
0 głosów
odpowiedź 4 maja 2022 przez marekkafarek77 Nowicjusz (140 p.)

To ja pozwolę sobie dodać swoje rozwiązanie.

#include <iostream>

using namespace std;

int main()
{
//float a=-55, b=-44, c=-33, d=22, e=11;

//float a=0, b = 3.5, c=0, d=6.5, e=15;
float a=1, b=3, c=3 , d=5, e=3;
//float a=1.5, b=3.14, c=7.5, d=1.25, e=3.42;
    
float a1, b1, c1, d1, e1;
    float srednia, suma, m;
    
    suma=a+b+c+d+e;
    srednia=suma/5;
cout<<a<<endl<<b<<endl<<c<<endl<<d <<endl<<e<<endl;
cout<<"Srednia wynosi "<<srednia <<endl;

a1=a-srednia; if(a1<0) a1=a1*-1;
b1=b-srednia; if(b1<0) b1=b1*-1;
c1=c-srednia; if(c1<0) c1=c1*-1;
d1=d-srednia; if(d1<0) d1=d1*-1;
e1=e-srednia; if(e1<0) e1=e1*-1;

cout<<a1<<endl<<b1<<endl<<c1<<endl<<d1 <<endl<<e1<<endl;

m=a1;
if(m>b1) m=b1;
if(m>c1) m=c1;
if(m>d1) m=d1;
if(m>e1) m=e1;
    
cout<<endl<<"Najblizsza sredniej jest: ";
if(m==a1) cout<<a<<"   ";
if(m==b1&&b!=a) cout<<b<<"   ";
if(m==c1&&c!=a&&c!=b) cout<<c<<"   ";
if(m==d1&&d!=a&&d!=b&&d!=c) cout<<d<<"   ";
if(m==e1&&e!=a&&e!=b&&e!=c&&e!=d) cout<<e<<"   ";
    
    
return 0;
}

 

1
komentarz 4 maja 2022 przez Wiciorny Ekspert (277,460 p.)
nie odświeżaj tematów z przed 5 lat.
–1 głos
odpowiedź 17 stycznia 2018 przez Vu-Szu Nowicjusz (140 p.)
edycja 11 listopada 2018 przez ScriptyChris

Mój kod. Nie koniecznie tylko to co trzeba ale działa.
 

#include <iostream>

using namespace std;

 

float a,b,c,d,e,xa,xb,xc,xd,xe;

float suma,srednia,alfa,niewiadoma;

float najblizsza(float sr,float m)
{
    float y;

 if ((sr>0)&&(m>0) || (sr>0)&&(m<0) || (sr==0) || (m==0))

    y = sr - m ;

 if((sr<0) && (m>0))
 {
     sr=-sr;

     y=sr + m;
 }

 if ((sr<0) && (m<0))
 {
      sr = -sr ;  m = -m;

      y = sr - m;
 }
    if(y<0)

       y=-y;

        return y;
}

int main()

{
    cout<<"Podaj piec liczb: "<<endl;

   cin>>a>>b>>c>>d>>e;

   suma=a+b+c+d+e;

    srednia=suma/5;

    cout<<"Srednia to: "<<srednia<<endl;

    xa=najblizsza(srednia,a);
    xb=najblizsza(srednia,b);
    xc=najblizsza(srednia,c);
    xd=najblizsza(srednia,d);
    xe=najblizsza(srednia,e);

cout<<xa<<endl;
cout<<xb<<endl;
cout<<xc<<endl;
cout<<xd<<endl;
cout<<xe<<endl;

alfa=xa;
if (alfa>xb) alfa=xb;
if (alfa>xc) alfa=xc;
if (alfa>xd) alfa=xd;
if (alfa>xe) alfa=xe;

cout<<" Najmniejsza odleglosc to: "<<alfa<<endl;

if ( alfa == xa )
    niewiadoma = a;
if ( alfa == xb )
    niewiadoma = b;
if (alfa == xc)
    niewiadoma = c;
if (alfa == xd)
    niewiadoma = d;
if (alfa == xe)
    niewiadoma = e;

    cout<<" Najbli¿sza liczba œredniej to : "<<niewiadoma<<endl;

 

return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 832 wizyt
0 głosów
5 odpowiedzi 327 wizyt
0 głosów
1 odpowiedź 356 wizyt
pytanie zadane 24 maja 2019 w C i C++ przez Ania2019 Użytkownik (530 p.)

92,977 zapytań

141,940 odpowiedzi

321,182 komentarzy

62,303 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...