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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2013, 12:13   #1
fobos-159
 
Регистрация: 17.11.2013
Сообщений: 4
Восклицание Сложная задача: Среди элементов заданной строки таблицы найти самый левый из тех, что принадлежат наибольшему количеству столбцов

Код:
program tablica;
uses crt;
const
max_s= 50;
max_d= 50;
k=5;
TYPE
AR=array[1..max_d,1..max_s] of integer;
var
a:AR;
MVcol:ARRAY[1..max_s] of integer;
d, s, i,aw,j, Min_Max: integer;

PROCEDURE Table_Inp(Dti,Sti:INTEGER; VAR Ati:AR);
VAR
i,j,z:INTEGER;
BEGIN
repeat
clrscr;
writeln ('Выберите способ ввода значений таблицы');
writeln ('1-Ввод с клавиатуры');
writeln ('2-Случайный ввод');
readln (z);
until (z=1) or (z=2);

if z=1 then
begin
for i:=1 to Dti do
begin
for j:=1 to Sti do
begin
write('Введите значение таблицы a[',i,',',j,'] ');
readln (Ati[i,j]);
end;
end;
end;

if z=2 then
begin
randomize;
for i:=1 to Dti do
for j:=1 to Sti do
Ati[i,j]:=random (k);
end;

clrscr;
for i:=1 to Dti do
begin
for j:=1 to Sti do
write(Ati[i,j]:3);
writeln;
end;
readln;

for j:=1 to s do
write(Ati[aw,j],' ');
while Ati[aw,1]


readln;
END;

begin
d:=1;
s:=1;

repeat
clrscr;
write('Введите длину столбцов не более ' ,max_d,': ');
readln(d)
until (d>=1) and (d<= max_d);
clrscr;
repeat
clrscr;
write('Введите длину строк не более ' ,max_s,': ');
readln(s)
until (s>=1) and (s<= max_s);
writeln('Введите номер строки от 1 до ',d);
readln(aw);
Table_Inp(d,s,a);
readln;
end.



Цель: Среди элементов заданной строки таблицы найти самый левый из тех, которые принадлежат наибольшему количеству столбцов.
я написал в подпрограмме что можно выбирать отдельную строку, но как дальше я не пойму как в коде писать(((

Последний раз редактировалось fobos-159; 17.11.2013 в 19:39.
fobos-159 вне форума Ответить с цитированием
Старый 17.11.2013, 14:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
найти самый левый из тех, которые принадлежат наибольшему количеству столбцов.
Долго думал над этим высказыванием... загрузил моск на 100%.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2013, 14:23   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1 2 3 4 5
3 7 4 5 8
4 0 3 4 7

Во 2-ой строке это 4? Принадлежит 3-ом столбцам, в отличии 3,7,5 - двум и 8 одному
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.11.2013 в 14:26.
Аватар вне форума Ответить с цитированием
Старый 17.11.2013, 14:38   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А может быть, нужно найти самый левый элемент из наиболее встречающихся в заданной строке?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 17.11.2013, 17:30   #5
fobos-159
 
Регистрация: 17.11.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
1 2 3 4 5
3 7 4 5 8
4 0 3 4 7

Во 2-ой строке это 4? Принадлежит 3-ом столбцам, в отличии 3,7,5 - двум и 8 одному
Да ты прав.
Но просто не понимаю как это в моем коде записать.
fobos-159 вне форума Ответить с цитированием
Старый 17.11.2013, 19:34   #6
fobos-159
 
Регистрация: 17.11.2013
Сообщений: 4
По умолчанию

короче я в тупике(
fobos-159 вне форума Ответить с цитированием
Старый 17.11.2013, 21:05   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Например, можно поступить так:
1. Формируем массив, в котором будем подсчитывать число столбцов для элементов указанной строки.
2. В цикле (а) по столбцам, выбираем элементы заданной строки.
3. В цикле (б) по столбцам, просматриваем все элементы матрицы по следующему алгоритму:
- если номер столбца в цикле (б) совпадает с номером столбца в цикле (а), переходим к следующему столбцу;
- в цикле (в) по строкам, просматриваем элементы столбца по строкам.
- если найдено совпадение со значением элемента заданной строки, то добавляем единицу в счетчик и переходим к следующему столбцу - цикл (б)
4. Просматриваем сформированный массив на поиск максимального элемента. Номер этого элемента соответствует столбцу в заданной строке.
5. Выводим результат.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти минимальный элемент среди всех элементов тех строк заданной матрицы, которые упорядочены по убыванию. KObotan Общие вопросы C/C++ 4 16.09.2012 14:54
массиве X(N) найти максимальный элемент среди положительных элементов массива и минимальный среди отрицательных элементов. sorok Общие вопросы C/C++ 2 20.03.2012 12:18
Построить вектор, каждый элемент которого равен наибольшему количеству равных элементов в соответствующей abakuz Помощь студентам 0 28.05.2011 18:08