:: 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.
magda133
:: 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 votes Thanks 0
kamas248
Program napisany w c++, skompiluj np. w dev-c++ Pamiętaj o utworzeniu pliku dane.txt w folderze z programem
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; }
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.
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;
}