@SunNeverSets

Как вытянуть одномерный массив Arr[j] с функции min и отсортировать его в функции quicksort?

#include "stdafx.h"
#include <iostream>
#include <ctime>

using namespace std;

void show(double **Arr, int SizeArr);
void init(double **Arr, int SizeArr);
void del(double **Arr, int SizeArr);
void min(double **Arr, int SizeArr);
//void quicksort(double *a, int first, int last);

int main()
{
	srand(time(0));
	double **a;
	const int SizeArr = 6;
	a = new double*[SizeArr];
	for (int i = 0; i < SizeArr; i++) {
		a[i] = new double[SizeArr];
	}
	init(a, SizeArr);
	show(a, SizeArr);
	min(a, SizeArr);
	del(a, SizeArr);
	//quicksort(*a, 0, SizeArr - 1);
	return 0;
}

void del(double **Arr, int SizeArr) {
	for (int i = 0; i < SizeArr; i++) {
		delete[]Arr[i];
	}
	delete[]Arr;
}

void init(double **Arr, int SizeArr) {
	srand(time(0));
	for (int i = 0; i < SizeArr; i++) {
		for (int j = 0; j < SizeArr; j++) {
			Arr[i][j] = rand() % 10;
		}
	}
}

void show(double **Arr, int SizeArr) {
	for (int i = 0; i < SizeArr; i++) {
		for (int j = 0; j < SizeArr; j++) {
			cout << Arr[i][j] << " ";
		}
		cout << endl;
	}
	cout << endl;
}

void min(double **Arr, int SizeArr) {
	int min;
	double *MinArr;
	MinArr = new double[SizeArr];
	for (int j = 0; j < SizeArr; j++) {
		min = 0;
		for (int i = 0; i < SizeArr; i++) {
			if (Arr[min][j] > Arr[i][j]) min = i;
		}
		MinArr[j] = Arr[min][j];
		cout << MinArr[j] << " ";
	}
}

//void quicksort(double *a, int first, int last) { 
//	int i = first, j = last; 
//	double tmp, x = a[(first + last) / 2]; 
//	do { 
//		while (a[i] < x) i++;
//		while (a[j] > x) j--; 
//		if (i <= j) { 
//			if (i < j) { 
//				tmp = a[i]; 
//				a[i] = a[j]; 
//				a[j] = tmp; } 
//			i++; 
//			j--;
//		} 
//	} while (i <= j);
//	if (i < last) 
//		quicksort(a, i, last);
//	if (first < j) 
//		quicksort(a, first, j);
//}
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
@magazovski
Проинициализировать массив до вызова функции и передать его как параметр.
void min(double **Arr, double *MinArr;  int SizeArr) {
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
double* min(double **Arr, int SizeArr) {
   // Всё оставь как есть, убери вывод   
   return MinArr;
}

Ну и не забудь уничтожить результат функции min где-то ниже по коду. «Си с крестами» сам ничего созданного через new не уничтожит.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы