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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2018, 20:57   #1
Новичок_2
 
Регистрация: 02.01.2018
Сообщений: 5
По умолчанию массивы

Здравствуйте! Мой код прошел 14 из 20 тестов. 6 тестов не прошел, наверное, по времени. Подскажите, пожалуйста, другие способы
решения задачи.

Задача

Задан двумерный массив. Напишите программу, которая в этом массиве находит столбец, содержащий максимальный элемент, находит столбец содержащий минимальный элемент и меняет местами эти два столбца. Из всех столбцов, содержащих максимальный элемент, надо выбрать столбец с максимальным номером. Из всех столбцов, содержащих минимальный элемент, надо выбрать столбец с минимальным номером.
Формат входных данных.
В первой строке входного файла записаны два числа N и M(1<=N<=100, 1<=N<=100). Далее следует N строк по M чисел в каждой строке - элементы двумерного массива. Все элементы по модулю не превосходят 1000.
Формат входных данных.
В выходной файл выведите полученный двумерный массив.


Код:
var a:array[1..100,1..100] of integer;
max,min:integer;
i,j,n,m,l,k:word;
procedure swap (var a,b:integer);
var t:integer;
begin 
 t:=a; a:=b; b:=t;
 end;
 procedure Openfies;
begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
end;
begin
Openfies;
read(n,m);
for  i:=1 to n do begin
    for  j:=1 to m do begin
      read(a[i,j]);
    end;
  end;  
max:=a[1,1]; l:=1;min:=a[1,1]; k:=1;
for i:=1 to n do begin
   for j:=1 to m do begin
   if max<=a[i,j] then begin max:=a[i,j]; l:=j; end;
   if min>a[i,j] then begin min:=a[i,j]; k:=j; end;
   end;
 end;
 i:=1;j:=1;
 while i<=n do begin
    while j<= m do begin
   if a[i,j]=min then begin  k:=j; j:=m;i:=n; end;
   j:=j+1;
    end;
   i:=i+1;
 end;
 for  i:=1 to N do 
   swap(a[i,l], a[i,k]);
 for  i:=1 to N do begin
    for  j:=1 to M do begin
      write(a[i,j],' ');
    end;
    writeln;
    end; 
end.
Новичок_2 вне форума Ответить с цитированием
Старый 09.02.2018, 10:16   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Новичок_2 Посмотреть сообщение
Код:
i:=1;j:=1;
 while i<=n do begin
    while j<= m do begin
   if a[i,j]=min then begin  k:=j; j:=m;i:=n; end;
   j:=j+1;
    end;
   i:=i+1;
 end;
не понимаю, зачем этот кусок кода. я бы его просто выкинул!!
Код:
max:=a[1,1]; l:=1;min:=a[1,1]; k:=1;
for i:=1 to n do begin
   for j:=1 to m do begin
   if max<=a[i,j] then begin max:=a[i,j]; l:=j; end;
   if min>a[i,j] then begin min:=a[i,j]; k:=j; end;
   end;
 end;
 if l<>k then
   for i:=1 to N do swap(a[i,l], a[i,k]);
 for  i:=1 to N do begin
    for  j:=1 to M do write(a[i,j],' ');
    writeln;
 end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программу массивы (C++) - Даны два массива, скопировать эти массивы в 3-й результирующий (размером 10 элементов) так, что Саша1990 Помощь студентам 1 02.02.2015 16:03
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12