• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Двумерные массивы на C

FreeManShokave

Ученик
Регистрация
8 Янв 2017
Сообщения
2
Реакции
0
Баллы
0
Двумерные массивы на C

Я походу тупенький и уже овер дофига времени не могу сделать эту задачу:
Из матрицы A сформировать матрицу B, отсортировав по убыванию все элементы матрицы A и располагая их в матрице B по спирали, начиная с максимального элемента b11.
Помогите написать программу, пожалуйста:3 (исключительно на Си, препод по другому не желает:с)
 
А в чем основные проблемы - в языке или в алгоритме? Дело в том, что я на СИ не пишу, но могу попытаться нарисовать на Паскале. Если Вы владеете языками программирования, то переведете без труда, а если нет, то, извините, - увы!
 
Давай на паскале) Я матрицу сделать и по убывающей составить делаю без проблем, но как ее сделать по спирали понятия не имею)
 
Давай на паскале) Я матрицу сделать и по убывающей составить делаю без проблем, но как ее сделать по спирали понятия не имею)
Даю.
Я уж тут и ненавистную СИ-шную нумерацию с 0 применил (дико неудобно, когда работаешь с матрицами). Как-то так:
Код:
Const
 M=8;
 N=10;

Var
 A:Array[0..M-1,0..N-1] of Integer;
 B:Array[0..M*N-1] of Integer;
 i,j,k,p,D:Integer;

Begin
 Randomize;
 for i:=0 to M-1 do
  begin
   for j:=0 to N-1 do
    begin
     A[i,j]:=Random(100);
     write(A[i,j]:4);
     B[i*N+j]:=A[i,j];
    end;
   writeln;
  end;
 writeln;
 writeln;

 for i:=0 to M*N-2 do
  for j:=0 to M*N-2-i do
   if B[j]<B[j+1] then
    begin
     D:=B[j];
     B[j]:=B[j+1];
     B[j+1]:=D;
    end;

 p:=-1;
 k:=-1;
 While p<=M*N-1 do
  begin
   k:=k+1;
   i:=k;
   for j:=k to N-2-k do
    begin
     p:=p+1;
     if p<=M*N-1 then A[i,j]:=B[p];
    end;
   j:=N-1-k;
   for i:=k to M-2-k do
    begin
     p:=p+1;
     if p<=M*N-1 then A[i,j]:=B[p];
    end;
   i:=M-1-k;
   for j:=N-1-k downto k+1 do
    begin
     p:=p+1;
     if p<=M*N-1 then A[i,j]:=B[p];
    end;
   j:=k;
   for i:=M-1-k downto k+1 do
    begin
     p:=p+1;
     if p<=M*N-1 then A[i,j]:=B[p];
    end;
  end;

  for i:=0 to M-1 do
   begin
    for j:=0 to N-1 do write(A[i,j]:4);
    writeln;
   end;

 Readln
End.
 

Вложения

  • AA01.webp
    AA01.webp
    23.1 KB · Просмотры: 86
Назад
Сверху