Целью программы является создание многомерного массива переменного размера, количество столбцов которого равно количеству политических партий, количество строк, являющихся «круглым», в котором мы находимся, и записи первогострока - это число голосов, которое получила каждая политическая партия, затем, когда вы попадаете во второй ряд, во втором раунде, вы делите все значения в первом ряду на 2, в третьем раунде вы делите значения в первом ряду на 3, иТо же самое относится и к тому, сколько строк у этой вещи.Я сделал все это, но после того, как эти операции закончились, я хочу найти N самых больших элементов, n - количество строк, и поместить эти элементы в вектор, по какой-то причине я не могу найти, когда я запускаю его, на консоли ничего не отображается, когда я добираюсь до части, где я хочу, чтобы он отсортировал элементы, он отключался, а затем зависал.
Я пытался что-то изменить,Я не думаю, что проблема в самом алгоритме, так как я попробовал его с помощью статических массивов, которые я заполнил случайным образом, и он разобрался с ними просто отлично.Как я уже сказал, я не знаю, где проблема, поэтому я покажу большую часть, я вырезал все, что не имеет отношения к делу.
double** ELEITORAL;
void bubble_sort(double** ELEITORAL)
{
int x, y;
double tItem;
int PassCount;
bool Mudou;
for (PassCount = 0; PassCount < (MAX_rows * MAX_columns); PassCount++)
{
//orders the rows
for (y = 0; y < MAX_columns; y++)
{
Mudou = true;
while (Mudou)
{
Mudou = false;
for (x = 1; x < MAX_rows; x++)
{
if (ELEITORAL[x - 1][y] > ELEITORAL[x][y])
{
Mudou = true;
tItem = ELEITORAL[x - 1][y];
ELEITORAL[x - 1][y] = ELEITORAL[x][y];
ELEITORAL[x][y] = tItem;
}
}
}
}
//ORDERS THE COLUMNS
for (x = 0; x < MAX_rows; x++)
{
Mudou = true;
while (Mudou)
{
Mudou = false;
for (y = 1; y < MAX_columns; y++)
{
if (ELEITORAL[x][y - 1] > ELEITORAL[x][y])
{
Mudou = true;
tItem = ELEITORAL[x][y - 1];
ELEITORAL[x][y - 1] = ELEITORAL[x][y];
ELEITORAL[x][y] = tItem;
cout << "entrei";
system("pause");
}
}
}
}
}
}
void DisplayTheArray(double** ELEITORAL)
{
for (int y = 0; y < MAX_columns; y++)
{
for (int x = 0; x < MAX_rows; x++)
{
cout.width(5);
cout << ELEITORAL[x][y];
}
cout << endl;
}
cout << endl;
}
void fill(double **p, int rowsize, int colsize) {
std::cout << std::fixed;
std::cout << std::setprecision(1);
printf("\n Introduza o n%cmero de votos nas listas por ordem \n", 163);
for (int col = 0; col < colsize; col++)
{
cin >> p[row][col];
}
cout << endl;
for (int row = 1; row < rowsize; row++)
{
for (int col = 0; col < colsize; col++)
{
p[row][col] = (p[0][col]/(row + 1));
}
cout << endl; //preenche as linhas
}
}//FILL OUT THE ARRAY
void print(double **p, int rowsize, int colsize)
{
for (int i = 0; i < header.size(); i++) { //HEADER IS TO STORE THE
//NAMES OF THE POLITICAL PARTIES
cout << setw(9) << header[i] << " ";
}
cout << endl;
for (row = 0; row < rowsize; row++) //IMPRIME A MATRIZ EM SI
{
for (col = 0; col < colsize; col++)
{
cout << setw(10) << p[row][col];
}
cout << endl;
}
}//PRINTS THE ARRAY
int MATRIZ()
{
std::cout << std::fixed;
std::cout << std::setprecision(1);
double rows, columns;
printf("\n Qual o n%cmero de candidatos a eleger? \n", 163);
cin >> rows;
printf("\n Qual o n%cmero de listas candidatas? \n", 163);
cin >> columns;
for (i = 0; i < columns; i++)
{
cout << " Qual o nome da lista " << i+1;
cout << endl;
cin >> nomL;
header.push_back(nomL);
}
cout << endl;
system("cls");
ELEITORAL = new double*[rows];
for (int row = 0; row < rows; row++)
{
ELEITORAL[row] = new double[columns];
}
fill(ELEITORAL, rows, columns);
cout << endl;
//After this I have a switch, in case 5 I call the functions
//giving me trouble
case '5':
{
bubble_sort(ELEITORAL);
DisplayTheArray(ELEITORAL);
break;
}