#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <time.h>
#include <algorithm>
using namespace std;
//--------------------------------- Czytanie danych/przypisywanie zmiennych do tablicy
void czyt_dane(int A[], int &n){
int a, b, i;
cout << "Podaj początek przedziału" << endl;
cin >> a;
cout << "Podaj koniec przedziału" << endl;
cin >> b;
cout << "Podaj rozmiar tablicy <=100" << endl;
cin >> n;
n = n - 1;
for (i = 0; i <= n; i++){
A[i] = (rand() % (b - a + 1)) + a;
}
}
//---------------------------------- Rysowanie tablicy
void pisz_tab(int A[], int n){
int i, przecinek = 0;
cout << "oto tablica" << endl << endl;
for (i = 0; i <= n; i++){
cout << A[i] << '\t';
przecinek++;
if (przecinek == 10) {
przecinek = 0;
cout << endl;
}
}
}
//-------------------------------------Liczenie średniej arytmetycznej
float srednia(int A[], int n){
int i;
float suma = 0;
float sr = 0;
for (i = 0; i <= n; i++){
suma += A[i];
}
sr = suma / n;
return sr;
}
//------------------------------------------Ile razy wystepuje ok
void ile(int A[], int n){
int liczba, i, licznik = 0;
cout << "podaj liczbe" << endl;
cin >> liczba;
for (i = 0; i <= n; i++) {
if (A[i] == liczba) {
licznik++;
}
}
cout << "liczba powtarza się " << licznik << "razy" << endl;
}
//---------------------------------------nieparzyste ok
void nieparzyste(int A[], int n){
int i, licznik = 0;
int suma=0;
for (i = 0; i <= n; i++){
if (A[i] % 2 != 0){
licznik++;
suma += A[i];
}
}
cout << "jest " << licznik << "liczb nieparzystych w tej tablicy" << "ich suma to " << suma << endl;
}
//----------------------------------min ok
void min(int A[], int n){
int i, min,licznik=0;
min = A[0];
for (i = 1; i <= n; i++){
if (A[i] <= min) {
min = A[i];
licznik = i+1;
}
}
cout << "najmniejsza wartosc to " << min << "indeks to " << licznik << endl;
}
//-------------------------------------max ok
void max(int A[], int n){
int i, max, licznik;
max = A[0];
for (i = 0; i <= n; i++) {
if (A[i] > max) {
max = A[i];
licznik = i+1;
}
}
cout << "najwieksza wartosc to " << max << "indeks to " << licznik << endl;
}
///-------------------------------------sasiednie ok
void sasiednie(int A[], int n) {
int i, suma=0,naj=0;
for (i = 0; i < n; i++) {
suma = A[i] + A[i + 1];
if (suma > naj) {
naj = suma;
}
}
cout << naj << endl;
}
//-------------------------------------------------------najczesciej ok
void najczestszy(int A[], int n) {
int ile_razy = 0, i, j, L, W, jaka;
for (i = 0; i < n; i++)
{
W = A[i]; L = 0;
for (j = 0; j < n; j++) if (A[j] == W) L++;
if (L > ile_razy)
{
ile_razy = L; jaka = W;
}
}
cout << "Najczęsciej wystepujaca liczba jest " << jaka << " ukazała się " << ile_razy << "razy." << endl;
}
//-------------------------------------------------------najczesciej przes sortowanie
void najczestszysort(int A[], int n) {
sort(A, A + n);
pisz_tab(A, n);
int i = 0,licznik=0,jaka=0;
int x=A[i];
cout << x;
for (; i <= n; i++) {
if (A[i] == x) {
licznik++;
jaka = A[i];
}
}
cout << "Najczęsciej wystepujaca liczba jest " << jaka << " ukazała się " << licznik << "razy." << endl;
}
//----------------------------------------------------------------------menu
int menu(){
int wybor;
cout << "wybierz jedna z funkcji do wykonania" << endl;
cout << "1. obliczanie sredniej" << endl;
cout << "2. liczba wystapien tego samego elementu" << endl;
cout << "3. Liczby nieparzyste oraz ich suna" << endl;
cout << "4.Element minimalny oraz jego indeks" << endl;
cout << "5.element maksymalny oraz jego indeks" << endl;
cout << "6. para sasiednich elementów o najwiekszej sumie" << endl;
cout << "7. element najczesciej wystepujacy w tablicy" << endl;
cout << "8. element najczesciej wystepujacy w tablicy sortowanie tablicy" << endl;
cout << "9. koniec programu " << endl;
cin >> wybor;
if (wybor == 8) {
return 0;
}
return wybor;
}
//-----------------------------------------------------------main
int _tmain(int argc, _TCHAR* argv[])
{
char wybor;
int A[100], n;
czyt_dane(A, n);
pisz_tab(A, n);
do{
switch (menu()) {
case 1:
srednia(A, n);
cout << srednia;
break;
case 2:
ile(A, n);
break;
case 3:
nieparzyste(A, n);
break;
case 4:
min(A, n);
break;
case 5:
max(A, n);
break;
case 6:
sasiednie(A, n);
break;
case 7:
najczestszy(A, n);
break;
case 8:
najczestszysort(A, n);
break;
case 9:
return 0;
break;
default:
break;
}
cout << "jeszcze raz? t/n" << endl;
cin >> wybor;
} while (wybor == 't');
return 0;
}