:: Mediana to wartość środkowa w uporządkowanym zbiorze o nieparzystej liczbie elementów. W zbiorze o parzystej liczbie elementów są dwa elementy środkowe, więc za medianę przyjmij ten z niższym indeksem.
Zadanie
Oblicz medianę zbioru n-elementowego.
Wejście
Pierwszy wiersz pliku tekstowego zawiera liczbę n oznaczającą liczbę elementów zbioru.
Kolejne n wierszy zawiera liczby całkowite (elementy zbioru)
Wyjście
W jedynym wierszu standardowego wyjścia jedna liczba całkowita oznaczająca medianę zbioru danych.

2

Odpowiedzi

2009-12-02T19:57:39+01:00
:: Mediana to wartość środkowa w uporządkowanym zbiorze o nieparzystej liczbie elementów. W zbiorze o parzystej liczbie elementów są dwa elementy środkowe, więc za medianę przyjmij ten z niższym indeksem.
Zadanie
Oblicz medianę zbioru n-elementowego.
Wejście
Pierwszy wiersz pliku tekstowego zawiera liczbę n oznaczającą liczbę elementów zbioru.
Kolejne n wierszy zawiera liczby całkowite (elementy zbioru)
Wyjście
W jedynym wierszu standardowego wyjścia jedna liczba całkowita oznaczająca medianę zbioru danych.
1 1 1
2009-12-02T20:40:53+01:00
Program napisany w c++, skompiluj np. w dev-c++
Pamiętaj o utworzeniu pliku dane.txt w folderze z programem

Pozdrawiam
Kamil

Kod programu:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

using namespace std;

int main(int argc, char *argv[])
{
string line; //deklaracja zmiennej typu string
stringstream line_convert; //deklaracja typu zmiennej służącej do konwersji stringa
int n;
float zbior[100000];
ifstream plikWejsciowy("dane.txt"); //inicjalizacja pliku tekstowego "dane.txt jako wejśćia
if (plikWejsciowy.is_open()) { //sprawdzanie czy plik tekstowy istnieje i jest zdatny do odczytu
getline(plikWejsciowy, line); // wczytanie pierwszej lini pliku tekstowego i konwersja typu string na init
line_convert << line;
line_convert >> n;
line_convert.clear();
for(int i = 0; i<=n-1;i++) { //wczytanie pozostałych wierszy, konwersja danych na typ init i zapisanie ich w tablicy "zbior"
getline(plikWejsciowy, line);
line_convert << line;
line_convert >> zbior[i];
line_convert.clear();
}
for (int j=0; j < n-1; j++) { //sortowanie bąbelkowe tablicy
for (int i=0; i < n-j-1; i++){
if (zbior[i] > zbior[i+1]){
swap(zbior[i], zbior[i+1]);
}
}
}

if (n%2 == 0) { //wypisanie mediany dla n parzystego
cout << zbior[(n/2)-1] << "\n";
}
else {
cout << zbior[(n/2)] << "\n"; //wypisanie mediany dla n nieparzystego
}
plikWejsciowy.close(); //zamknięcie pliku tekstowego
}
else {
cout << "Nie mozna odczytac pliku zrodlowego !\n"; //błąd, jeżeli nie można otworzyć pliku tekstowego
}
system("PAUSE");
return EXIT_SUCCESS;
}