Witam. Po kilku godzinach zapisałem taki kod w C++. Chcę żeby wypowiedział się na jakim poziomie jest to kod.
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
//zmienne globalne, wskaznik do tablicy, oraz zmienna n przechowujaca rozmiar tablicy
int* array;
int n;
//Podprogram zmieniajacy rozmiar tablicy
void changeArraySize(){
cout << "Podaj rozmiar tablicy: ";
if(!(cin >> n)){
cout << "Kernel PANIC!\n";
exit(0);
}
array = new int[n];
}
//Glowne menu programu, jako wynik zwraca numer opcji
int mainMenu(){
int option;
cout << "Menu: \n\n\t0-Zakoncz program\n\t1-Wczytaj do tablicy wartosci z klawiatury\n\t2-Wczytaj wartosci losowe\n\t3-Wyswietl tablice\n\t4-Wyswietl najmniejszy element\n\t5-Zmien rozmiar tablicy\n\t6-Sortowanie poprzez wstawianie tablicy\n\t7-Sortowanie babelkowe\n\t8-Sortowanie quick\n\nPodaj numer opcji: ";
if(!(cin >> option)){
cout << "Kernel PANIC!\n";
exit(0);
}
cout << "Wybrano opcje: " << (option>7?1:option) << "\n\n";
return option;
}
//wypelnianie tablicy za pomoca klawiatury
void keyboardFill(int* array){
cout << "Wczytywanie z klawiatury\n";
for(int i=0; i<n; ++i){
cin>>array[i];
cout << "Podaj jeszcze: " << n-i << " liczb \n";
}
}
//Wypelnianie tablicy liczbami losowymi
void randomFill(int* array){
cout << "Wypelniam tablice wartosciami losowymi :)\n";
for(int i=0; i<n; ++i){
array[i]=rand()%10001;
}
}
//Podprogram drukujacy tablice
void arrayPrint(int* array){
system("CLS");
cout<<"\nWypisuje zawartosc tablicy:\n\n";
for(int i=0; i<n; ++i){
cout<<array[i] << "\t";
}
cout << "\n\nNacisnij dowolny klawisz";
cin.get(); cin.get();
}
//Popprogram ktory szuka minimum w tablicy
void findTheSmallestNumber(int* array){
int min=array[0];
int index=0;
for(int i=1; i<n; ++i){
if(min > array[i]){
min = array[i];
index=i;
}
}
cout << "Najmniejszy element ma wartosc: " << min << " jest pod indeksem: "<< index <<"\n";
cin.get(); cin.get();
}
//struktura przechowujaca dwa int'y
struct indexData{
int index;
int data;
};
//Przeciazana funkcja wyszukujaca minimum w okreslonym fragmencie tablicy od start do konca
indexData findTheSmallestNumber(int* array, int start){
int min=array[start];
int index=start;
for(int i=start+1; i<n; ++i){
if(min > array[i]){
min = array[i];
index=i;
}
}
indexData temp;
temp.data=min;
temp.index=index;
return temp;
}
//glowna procedura sortujaca poprzez wstawianie
void sortByInstert(int* array, int n){
char a;
int j=0;
int temp;
indexData temp2;
while(j<n){
temp2=findTheSmallestNumber(array,j);
temp = array[temp2.index];
array[temp2.index]=array[j];
array[j]=temp;
j=j+1;
a=rand()%120+120;
cout << a;
}
cout << "\n\nPosortowano! Nacisnij dowolny klawisz";
cin.get(); cin.get();
}
//sortowanie babelkowe
void sortBubble(int* array, int n){
int x;
for(int i=0; i<n; i++)
{
for(int j=0; j<n - 1; j++)
{
if(array[j]>array[j+1])
swap(array[j], array[j+1]);
}
}
}
//sortowanie szybkie
void sortowanieSzybkie( int* array, int lewy, int prawy )
{
int i = lewy;
int j = prawy;
int x;
int s = array[(lewy+prawy)/2];
do
{
while(array[i]<s)
i++;
while(array[j]>s)
j--;
if( i <= j )
{
x=array[i];
array[i]=array[j];
array[j]=x;
i++;
j--;
}
} while(i<=j);
if(lewy<j) sortowanieSzybkie(array,lewy,j);
if(prawy>i) sortowanieSzybkie(array,i,prawy);
}
//Podprogram wlaczajacy inne podprogramy w zaleznosci od podanego numeru opcji, po wykonaniu podprogramu sie znow wlacza
void menuSelector(){
system("cls");
switch(mainMenu()){
default:
case 1:
system("CLS");
keyboardFill(array);
break;
case 2:
system("CLS");
randomFill(array);
break;
case 3:
system("CLS");
arrayPrint(array);
break;
case 4:
system("CLS");
findTheSmallestNumber(array);
break;
case 5:
system("CLS");
changeArraySize();
break;
case 6:
system("CLS");
sortByInstert(array,n);
break;
case 7:
system("CLS");
sortBubble(array,n);
break;
case 8:
system("CLS");
sortowanieSzybkie(array,0,n-1);
break;
case 0:
cout << "Koncze dzialanie programu...";
exit(1);
break;
}
return menuSelector();
}
int main(){
changeArraySize();
//definiowanie maszyny losujacej
srand(time(0));
//wlaczanie glownego podprogramu
menuSelector();
cin.get(), cin.get();
}