Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2012, 15:27   #1
apel1806
 
Регистрация: 16.12.2009
Сообщений: 3
Восклицание проблема сортировки в матрице

есть исходник с программой, но не работает сортировка
+Отсортировать числа «по ступенькам» относительно главной диагонали.

2) Вывести максимальное число среди тех чисел, которые НЕ подверга-лись сортировке.(не смог сделать)
сделал, но просто занулил элементы
а нужно как то написать по умному
чтоб без такого было
заранее спасибо

код программы:


#include<stdio.h>
#include <stdlib.h>
#define N 16

int main()
{
int x;
printf ("Для автоматического задания матрицы нажмите 1\n");
printf ("Для самостоятельного задания матрицы нажмите 2\n\n");
scanf ("%i", &x);

int n, i, j;
int A[N][N];
if ((x != 1) && (x !=2)){
printf ("\nНеверный ввод !\n");
return -1;
}

printf ("\nВведите размерность матрицы: n = ");
scanf ("%i", &n);
printf ("\n");

if ((n > N-8) || (n < 1)) {
printf ("Недопустимое значение n\n");
return -1;
}

if (x == 1){
printf ("Исходная матрица\n\n");
srand (time(0));
for (i = 0; i < n; i ++){
for (j = 0; j < n; j ++){
A[i][j] = rand () % 200-100;
printf ("%3i", A[i][j]);
}
printf ("\n \n");
}
}

if (x == 2) {
printf ("\nЗадайте значения для каждого элемента матрицы:\n\n");
for (i = 0; i < n; i++){
for (j = 0; j < n; j++) {
printf ("A[%i][%i] = ", i, j);
scanf ("%i", &A[i][j]);
}
}
printf ("\nИсходная матрица:\n\n");
for (i = 0; i< n; i++){
for (j = 0; j < n; j++) {
printf ("%3i", A[i][j]);
}
printf ("\n \n");
}
}

int B[N];
j = 0;
for (i = 0; i < n; i++) {
B[j] = A[i][i];
j++;
// printf ("B[%i] = %i\n", j-1, B[j-1]);
if (i+1 < n){
B[j] = A [i][i+1];
j++;
// printf ("B[%i] = %i\n", j-1, B[j-1]);
}
}

int k;
// printf ("\nСортировка\n\n");
for (j = 0; j < 2*n-1; ++j) {
int index_min = j;
for (k = j + 1; k < 2*n-1; ++k) {
if (B[k] < B[index_min]) {
index_min = k;
}
}

if (j != index_min) {
int tmp = B[j];
B[j] = B[index_min];
B[index_min] = tmp;
}
}
for (j = 0; j < 2*n - 1; ++j) {
// printf ("B[%i] = %i\n", j, B[j]);
}

printf ("\nОтсортированная матрица\n\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++){
A[i][i] = B[2*j];
A[i][i+1] = B[(2*j)-1];
printf ("%3i", A[i][j]);
}
printf ("\n \n");
}

// printf ("Вторая матрица\n\n");
for (i = 0; i< n; i++) {
for (j = 0; j < n; j++){
A[i][i] = -99;
A[i][i+1] = -99;
// printf ("%3i", A[i][j]);
}
// printf ("\n \n");
}

int maxi = 0, maxj = 0;
for (i = 0; i< n; i++) {
for (j = 0; j < n; j++){
if (A[i][j] > A[maxi][maxj]) {
maxi = i;
maxj = j;
}
}
}

printf("\n");
printf("Максимальное число среди не отсортированных равно %i\n", A[maxi][maxj]);
}
apel1806 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структуры данных. проблема сортировки однонаправленного списка. s-mumrik Общие вопросы C/C++ 0 24.05.2012 15:46
Алгоритмы сортировки пирамидальный(кучей) и быстрой сортировки (с++) mmd12 Помощь студентам 4 17.05.2012 14:14
В матрице... Avvakymova Паскаль, Turbo Pascal, PascalABC.NET 4 08.05.2011 13:53
Проблема Шейкер-сортировки vs алгоритма простого слияния... a9N2k Помощь студентам 5 06.02.2011 12:43
Проблема с алгоритмом быстрой сортировки maryan.vetrov Общие вопросы C/C++ 2 31.08.2010 18:56