Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2010, 16:07   #1
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
Вопрос Прошу помочь переделать.Код внутри.С++

Дана матрица A [10][10] отсортировать элементы лежащие на главной диагонали в порядке возрастания.

Решение:
Код:
#include <iostream>
#include <ctime>

using namespace std;

template <class T>
void sort(T A[10][10])
{
	int i, j, tmp;
	for (i = 0; i < 9; i++)
		for (j = i + 1; j < 10; j++)
			if (A[i][i] < A[j][j])
			{
				tmp = A[i][i];
				A[i][i] = A[j][j];
				A[j][j] = tmp;
			}
}

int main()
{
	int A[10][10];
	int i ,j;
	srand((unsigned int)time(0));
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			A[i][j] = rand() % 10;
			printf("%d ", A[i][j]);
		}
		printf("\n");
	}
	sort(A);
	printf("\nResult:\n\n");
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
			printf("%d ", A[i][j]);
		printf("\n");
	}
	system("pause");
	return 0;
}
Но моего преподавателя такой вариант не устраивает и нужно переделать таким образом

Код:
#include "stdafx.h"

void form_mas (double *Arr,int row,int col);
void out_mas (double *Arr,int row,int col);
void sort (double *Arr,int row, int col);

int main()
{   int const row=10;
	int const col=10;
	double Arr[row * col];
	
	form_mas ((double) *Arr,int row,int col);
	out_mas ((double) *Arr,int row,int col)
    sort ((double) *Arr,int row,int col);
	printf("\nResult:\n\n");
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < col; j++)
			printf("%d ", Arr[i*col +j]);
		printf("\n");
	}

	return 0;
}


void form_mas (double *Arr,int row,int col){
srand((unsigned int)time(0)); 	
	for (int i = 0; i < row; i++)
		for (int j = 0; j < col; j++)
			Arr[i * col + j] = - 10 + rand() % 21;
}

void out_mas (double *Arr, int row, int col){
	for (int i=0;i<row;i++){
		for (int j=0;j<col;j++)
		printf("%.f ", Arr[i * col + j]);
		printf("\n");
	}
}

void sort( double *Arr, int row,int col)
{
	double tmp;
	for (int i = 0; i < row-1; i++)
		for (int j = i + 1; j < col; j++)
			if (Arr[i* col +i] < Arr[j* col +j])
			{
				tmp = Arr[i*col +i];
				Arr[i*col +i] = Arr[j*col +j];
				Arr[j*col +j] = tmp;
			}
}
но вот в функции sort как переделать я чего-то не могу сообразить...
И вообще имеет смысл делать из двумерного массива одномерные?
Или это лишь требования моего преподавателя?
Помогите переделать ф-ю сорт...там походу я бред один понаписал...
Так то вроде все нормально...

Последний раз редактировалось BackSlash; 10.01.2010 в 16:11.
BackSlash вне форума Ответить с цитированием
Старый 10.01.2010, 20:36   #2
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

Проблема решена, спасибо товарищу Alex_F
BackSlash вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помочь найти ошибку.Текст внутри BackSlash Помощь студентам 3 21.12.2009 12:13
Прошу помочь с запросом MASTERKEY БД в Delphi 0 18.05.2007 14:15