То така и на мен ми забива, ако искам да сортирам масива, преди да го въведа, а и не съм добавил
delete за освобождаване на паметта, заделена за сортирания масив. Така май е по-добре:
- Код: Избери целия код
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <algorithm>
using namespace std;
char ch[256];
void Enter(int &N, int FN[])
{
do
{
cout << "\nБрой студенти (1..25): ";
cin.getline(ch,256);
N = atoi(ch);
}
while(N < 1 || N > 25);
for(int counter = 0; counter < N; counter++)
{
do
{
cout << "\nСтудент номер " << 1 + counter << " Факултетен номер (10 000 .. 99 999): ";
cin.getline(ch,256);
FN[counter] = atoi(ch);
}
while(FN[counter] < 10000 || FN[counter] > 99999);
}
}
void MaxOdd(int N, int FN[])
{
int odd[25], mx = 0, M = 0;
for(int counter = 0; counter < N; counter++)
if(FN[counter] % 2)
{
odd[M] = FN[counter]; M++;
if(FN[counter] > mx) mx = FN[counter];
}
if(M > 0)
{
cout << "\nНечетни факултетни номера:" << endl;
for(int counter = 0; counter < M - 1; counter++)
cout << odd[counter] << ", ";
cout << odd[M - 1] << endl << endl;
cout << "Максимален от тях: " << mx << endl << endl;
}
}
void FormSorted(int N, int FN[])
{
int *srtd = new int[N];
for(int counter = 0; counter < N; counter++)
srtd[counter] = FN[counter];
sort(srtd, srtd + N);
cout << "\nСортиран масив:\n\n";
for(int counter = 0; counter < N - 1; counter++)
cout << srtd[counter] << ", ";
if(N > 0)
cout << srtd[N - 1];
cout << endl << endl;
delete srtd;
}
int main()
{
int choose, N, FN[25];
SetConsoleCP(1251); SetConsoleOutputCP(1251);
do
{
cout << "Работа с факултетни номера" << endl << endl;
cout << "1) Въвеждане на броя студенти и масив с факултетни номера" << endl;
cout << "2) Формиране на масив с нечетните номера и определяне на максималния от тях" << endl;
cout << "3) Формиране на сортиран масив от първоначалния" << endl;
cout << "4) КРАЙ" << endl;
do
{
cout << "Избери (1..4): ";
cin.getline(ch,256);
choose = atoi(ch);
}
while(choose < 1 || choose > 4);
switch(choose)
{
case 1:
Enter(N, FN);
break;
case 2:
MaxOdd(N, FN);
break;
case 3:
if(N > 0) FormSorted(N, FN);
break;
default:
break;
}
}
while(choose < 4);
return 0;
}