Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 08.01.2017, 19:46   #1 (permalink)
FreeManShokave
Новичок
 
Регистрация: 08.01.2017
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Двумерные массивы на C

Я походу тупенький и уже овер дофига времени не могу сделать эту задачу:
Из матрицы A сформировать матрицу B, отсортировав по убыванию все элементы матрицы A и располагая их в матрице B по спирали, начиная с максимального элемента b11.
Помогите написать программу, пожалуйста:3 (исключительно на Си, препод по другому не желает:с)
FreeManShokave вне форума   Ответить с цитированием

Старый 08.01.2017, 19:46
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ранее созданные обсуждения должны помочь вам

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

Старый 08.01.2017, 20:04   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

А в чем основные проблемы - в языке или в алгоритме? Дело в том, что я на СИ не пишу, но могу попытаться нарисовать на Паскале. Если Вы владеете языками программирования, то переведете без труда, а если нет, то, извините, - увы!
Vladimir_S вне форума   Ответить с цитированием
Старый 15.01.2017, 17:30   #3 (permalink)
FreeManShokave
Новичок
 
Регистрация: 08.01.2017
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Давай на паскале) Я матрицу сделать и по убывающей составить делаю без проблем, но как ее сделать по спирали понятия не имею)
FreeManShokave вне форума   Ответить с цитированием
Старый 15.01.2017, 19:04   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от FreeManShokave Посмотреть сообщение
Давай на паскале) Я матрицу сделать и по убывающей составить делаю без проблем, но как ее сделать по спирали понятия не имею)
Даю.
Я уж тут и ненавистную СИ-шную нумерацию с 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.jpg  
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Метки
помогите плес, язык c, язык си


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 14:45.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.