Napisz program, który wyznaczy element środkowy w tablicy. Jeśli liczba elementów jest parzysta, wyznaczamy średnią arytmetyczną dwóch środkowych.
Input Pewna ilość liczb naturalnych (nie większa niż 100) zakończona liczbą -1 (-1 nie jest liczona do wyznaczenia wartosci środkowej). Liczby są z zakresu [0..1000].
std::cout << "Wpisz liczby, powinny znajdowac sie w przedziale <0:1000>, a ostatnia liczba powinna byc -1\n";
while (l < maxLen) {
std::cin >> nums[l];
if (nums[l] == -1) {
break;
}
else if (nums[l] < minVal || nums[l] > maxVal) {
std::cout << "Podano niepoprawna liczbe!";
return 0;
}
l++;
}
if (nums[l] != -1) {
std::cout << "Ostatnia liczba powinna byc -1!";
return 0;
}
if (l > 0) {
std::cout << "Wynik: ";
int h = l / 2;
if (l % 2 == 0) {
std::cout << (nums[h] + nums[h - 1]) * 0.5f;
}
else {
std::cout << nums[h];
}
}
return 0;
}
Szczegółowe wyjaśnienie: Program pobiera w pętli liczby wprowadzane przez użytkownika dopóki ilość podanych liczb nie przekroczy 100. Sprawdza czy każda liczba znajduje się w przedziale <0:1000>, jeśli nie - koniec programu, ale jeśli liczba jest -1 to przechodzi do następnej części programu. Sprawdza czy ostatnia liczba jest równa -1, jeśli nie to program kończy swoją działalność.
Następnie jeśli ilość wprowadzonych liczb (bez -1) jest większa niż 0, to program sprawdza czy ilość tych liczb jest podzielna przez 2 - jeśli tak, to zwraca średnią arytmetyczną elementów po środku tabeli, jeśli nie - zwraca środkowy element.
Oto kod programu w języku Python.
def main():
tablica = []
liczba = int(input("Podaj liczbę (zakończ wprowadzanie liczbą -1): "))
while liczba != -1:
tablica.append(liczba)
liczba = int(input("Podaj liczbę (zakończ wprowadzanie liczbą -1): "))
if len(tablica) == 0:
print("Brak elementów w tablicy.")
elif len(tablica) % 2 == 1:
srodkowy_element = tablica[len(tablica) // 2]
print("Element środkowy:", srodkowy_element)
else:
srodkowy_element1 = tablica[len(tablica) // 2 - 1]
srodkowy_element2 = tablica[len(tablica) // 2]
srednia_arytmetyczna = (srodkowy_element1 + srodkowy_element2) / 2
print("Średnia arytmetyczna dwóch środkowych elementów:", srednia_arytmetyczna)
if __name__ == "__main__":
main()
I to samo w C++
#include <iostream>
#include <vector>
int main() {
std::vector<int> tablica;
int liczba;
std::cout << "Podaj liczbę (zakończ wprowadzanie liczbą -1): ";
std::cin >> liczba;
while (liczba != -1) {
tablica.push_back(liczba);
std::cout << "Podaj liczbę (zakończ wprowadzanie liczbą -1): ";
std::cin >> liczba;
}
int n = tablica.size();
if (n == 0) {
std::cout << "Brak elementów w tablicy." << std::endl;
} else if (n % 2 == 1) {
int srodkowy_element = tablica[n / 2];
std::cout << "Element środkowy: " << srodkowy_element << std::endl;
} else {
int srodkowy_element1 = tablica[n / 2 - 1];
int srodkowy_element2 = tablica[n / 2];
double srednia_arytmetyczna = (srodkowy_element1 + srodkowy_element2) / 2.0;
std::cout << "Średnia arytmetyczna dwóch środkowych elementów: " << srednia_arytmetyczna << std::endl;
}
return 0;
}
Odpowiedź:
#include <iostream>
int main()
{
const int maxLen = 100;
const int minVal = 0;
const int maxVal = 1000;
int nums[maxLen];
int l = 0;
std::cout << "Wpisz liczby, powinny znajdowac sie w przedziale <0:1000>, a ostatnia liczba powinna byc -1\n";
while (l < maxLen) {
std::cin >> nums[l];
if (nums[l] == -1) {
break;
}
else if (nums[l] < minVal || nums[l] > maxVal) {
std::cout << "Podano niepoprawna liczbe!";
return 0;
}
l++;
}
if (nums[l] != -1) {
std::cout << "Ostatnia liczba powinna byc -1!";
return 0;
}
if (l > 0) {
std::cout << "Wynik: ";
int h = l / 2;
if (l % 2 == 0) {
std::cout << (nums[h] + nums[h - 1]) * 0.5f;
}
else {
std::cout << nums[h];
}
}
return 0;
}
Szczegółowe wyjaśnienie:
Program pobiera w pętli liczby wprowadzane przez użytkownika dopóki ilość podanych liczb nie przekroczy 100. Sprawdza czy każda liczba znajduje się w przedziale <0:1000>, jeśli nie - koniec programu, ale jeśli liczba jest -1 to przechodzi do następnej części programu.
Sprawdza czy ostatnia liczba jest równa -1, jeśli nie to program kończy swoją działalność.
Następnie jeśli ilość wprowadzonych liczb (bez -1) jest większa niż 0, to program sprawdza czy ilość tych liczb jest podzielna przez 2 - jeśli tak, to zwraca średnią arytmetyczną elementów po środku tabeli, jeśli nie - zwraca środkowy element.