Mediana i Dominanta

0

Witam, w żaden sposób nie potrafię dodać do mojego programu Mediany i Dominanty, które liczone będą z posortowanej tablicy.
Czy ktoś potrafi mi pomóc?

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

using namespace std;
int t[21];

void generuj(int n)
{
	for(int i = 0; i < n; i++) t[i]=rand()%100;

	cout << "\nTablica zostala wygenerowana, oto elementy: " << endl;

	for(int i = 0; i < n; i++) cout << " | " << t[i];
}

int main(void)
{

	start:
	cout<<endl;

	srand(time(0));
	int n,temp;
	int k,l,p,z;

	cout << "Podaj rozmiar tablicy(max. 21): ";
	cin >> n;



	cout<< "- - - MENU - - -" <<endl;
	cout<< "1. Liczby losowe" <<endl;
	cout<< "2. Wprowadzam sam" <<endl;
	cout<< "3. Stala tablica" <<endl;




	int liczba;
    cout << endl << "Metoda wprowadzania: ";
    cin >> liczba;
    cout<<endl;
    system( "cls" );
	switch( liczba )
    {
    case 2:
        cout << "Wprowadz liczby: " << endl;
        for (int i=0;i<n; i++) cin>> t[i];

        cout<<endl;

		cout<< "Tablica nie posortowana: "<< endl;
		for (int i=0; i<n; i++) cout<<" | " << t[i] ;


        break;

	case 1:

        generuj(n);
        break;

	case 3:
        cout << "Stala tablica: " << endl;

     	t[0]=7;
     	t[1]=5;
     	t[2]=2;
     	t[3]=1;
     	t[4]=3;
     	t[5]=9;
     	t[6]=11;
     	t[7]=16;
     	t[8]=20;
     	t[9]=2;
     	t[10]=4;
     	t[11]=5;
     	t[12]=18;
     	t[13]=12;
     	t[14]=13;
     	t[15]=7;
     	t[16]=17;
     	t[17]=19;
     	t[18]=0;
     	t[19]=1;
     	t[20]=2;

     	for (int i=0; i<n; i++) cout<<" | " << t[i] ;

        break;
    }



cout<<endl;
// MIN,MAX,ŚREDNIA
    float suma=0;
	int max=t[0],min=t[0],pozmin=0,pozmax=0;
		for(int i=0;i<n;i++) {

			if(max<t[i]){ max=t[i];
			pozmax=i;
		}
			if(min>t[i]) {
		min=t[i];
			pozmin=i;	}

			suma+=t[i];

		}

		cout<<endl<<"MIN: "<<min<<" > INDEKS "<<pozmin<<endl;
		cout<<endl<<"MAX: "<<max<<" > INDEKS "<<pozmax<<endl<<endl;

		cout<<"AVG: "<<suma/n;





	//SORTOWANIE
	for(int j=n-1;j>0;j--)
	{
	for(int i = 0; i<j;i++)
	{
	if(t[i]>t[i+1])
		{
		int temp=t[i];
		t[i]=t[i+1];
		t[i+1]=temp;
		}
	}
	}






	cout << "\n\nPosortowane elementy:"<<endl;
	for(int i=0;i<n;i++) cout << " | " << t[i];





    cout<<endl;







	cout<<endl<<endl<<endl;
	cout<< "Powtorzyc program?"<<endl;
	cout<< "1. Tak"<<endl;
	cout<< "2. Nie"<<endl;
	int daw;
    cout << endl << "Wybor: ";
    cin >> daw;
    cout<<endl;

	switch( daw )
    {
    case 1:
        system( "cls" );
        goto start;
       	break;


}



	cout<<endl;
	return 0;
}



0

Kłamiesz. Gdybyś umiał napisać ten program powyżej to dodanie dominanty czy mediany byłoby banalnie proste. Mediana to po prostu tablica[n/2]; Do dominanty musiałbyś przelecieć tablicę i policzyć których elementów jest najwięcej.

0

Dla Mnie nie jest to takie "banalnie proste". Próbowałem,ale za każdym razem wychodziło zero jako wynik. Nie dodałem fragmentu swoich prób bo uznałem, że jest to złe. Ktoś wyrazi chęć, żeby dopisać te dwa elementy? - program na ocenę w technikum. Zależy mi na zdaniu z programowania w tym roku. :)

0

50 zl i pisze :D

0

Zależy mi na zdaniu z programowania

Czemu wszyscy uważają, że takie zdanie zwiększa prawdopodobieństwo dostania gotowca? Jak Ci zależy to bierz się do roboty. Pokaż nieudane próby to dostaniesz pomoc. A jak nie chcesz brudzić rąk do dodaj ogłoszenie w odpowiednim dziale z kwotą.

0

Proszę Moi kochani "pomocnicy". :)
Z tego wychodzą same głupoty a nie żaden wynik.
W tym kraju to chyba tylko w ryj można dostać za darmo...

 
		if(n%2==0){
			cout<<"\nMediana wynosi:"<<(t[(n/2)-1]+t[((n+2)-1)/2])/2;

		}
		else{cout<<"\nMediana wynosi:"<<t[((n+1)-1)/2];
		}



		for(int i=min;i<=max;i++){
             for(int j=0;j<n;j++) if(i==t[j]) zlicz[i+abs(min)]++;
                          }


    cout<<endl;
    for(int i=min;i<=max;i++) if(zlicz[i+abs(min)]!=0) cout<<i<<" Powtorzylo/a sie: "<<zlicz[i+abs(min)]<<endl;
    z=zlicz[0];
    for(int i=min+1;i<=max;i++) if(z<zlicz[i+abs(min)]) z=zlicz[i+abs(min)];

    cout<<"Dominanta jest/sa : ";
    for(int i=min;i<=max;i++) if(z==zlicz[i+abs(min)]) cout<<i<<"  ";
0

Ciekawe kiedy ludzie się w końcu przestawią z srand na <random>

0

Weź do ręki karte i długopis i policz tym sposobem co ty próbujesz zrobić ;) Weź pierwej rozpatrz ten pierwszy przypadek

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