![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
imouto |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Добрый вечер, у меня возник вот какой вопрос. Нужно написать процедуру, которая среди чисел заданной строки таблицы находит такое, которое принадлежит наибольшему количеству столбцов таблицы. Все это делается с помощью двухмерного массива. Так как я в программировании полный профан, удалось мне написать только чтобы одно число из заданой строки принадлежало наибольшему кол-ву столбцов но и там у меня есть какая то ошибка, либо там написан бред. Другая половина процедуры, где из заданной строки будет более одного числа встречаться одинаковое кол-во раз у меня не выполнена. Рассчитываю на чью-нибудь помощь.
procedure processing(var p,v,t: single; q:PMatr); |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата и там у меня есть какая то ошибка, либо там написан бред Даже не зная описания PMatr - да, там написан бред. Уже потому, что индексироваться типом Single массив не может (нужен перечислимый тип), а тебе, видно, очень хочется:Цитата procedure processing(var p,v,t: single; q:PMatr); Цитата Все это делается с помощью двухмерного массива. Неправда. У тебя это делается с помощью структуры данных, которая имитирует динамический двумерный массив, скорее всего (еще раз - описания PMatr я не вижу, поэтому утверждать что-либо не могу). |
imouto |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Tint=integer; что делать тогда, если там бред написан? Сообщение отредактировано: imouto - 21.12.2010 13:18 |
TarasBer |
![]()
Сообщение
#4
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Tmas=array [1..1] of TReal;
> PMas=^Tmas; Не лучший способ объявлять динмассив (я про 1..1). Где-то про это в ЧАВО написано... -------------------- |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата что делать тогда, если там бред написан? Переписать, чтоб не было бреда, наверное? Я по крайней мере другого способа не знаю.Для начала - уточним задание: процедура получает на вход матрицу и номер строки. Она должна вернуть максимально часто встречающееся в одном столбце число из этой строки? То есть, если у меня матрица 1, 6, 3, 4, 5 6, 3, 4, 0, 9 6, 5, 1, 3, 5 3, 8, 6, 4, 2 , и номер строки = 1, то на выходе я должен получить "3"? (поскольку 3 встречается в четырех столбцах, первом, втором, третьем и четвертом, а больше ни одно число из первой строки в четырех и более столбцах не встречается) Я правильно понял задание? Добавлено через 1 мин. Цитата Где-то про это в ЧАВО написано... Как не надо писать программы, пункт 2 в этом посте... |
imouto |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я все понимаю, что это не рационально, однако в универе стоит именно такая задача. им требуется не рациональность, а просто насилование мозга студентам.
Цитата Я правильно понял задание? Да, так. Цитата Переписать, чтоб не было бреда, наверное? Если б я мог ![]() |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Для обычной статической матрицы решение может быть таким:
type, для динамической - попробуй реализовать самостоятельно (только разберись в коде, а не просто копируй его). Что не получится - пиши, подскажем... P.S. Всем супероптимизаторам: не надо супероптимизировать. Оптимизировать будете СВОЙ код у себя на машине для своих личных нужд. Чужой оставьте в покое. Это понятно? Ибо все ваши супероптимизации - пшик, в лучшем случае не вредящий, в худшем - замедляющий программу. Компилятор без вас разберется, что и как делать для конкретного процессора, указанного в настройках. |
imouto |
![]()
Сообщение
#8
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
В общем написал вот так. Но тут нужно процедуру сделать функцией, булевской. Ниче не могу придумать. Помогите плиз.
Код type Treal=real; Tmas=array [1..1] of TReal; PMas=^Tmas; TMatr=array [1..1] of PMas; PMatr=^Tmatr; Procedure Zadanie(var mass1:PMatr;Realstr1,Realstl1,strin:integer); var m,n,q,qm:integer; mm:TReal; b:boolean; i1,j1,k1:integer; begin qm:=-5; b:=true; massmax:=mass1^[strin]^[1]; for k1:=1 to realstr do begin q:=0; b:=false; for i1:=1 to Realstl1 do begin for j1:=1 to Realstr1 do begin if (mass1^[i1]^[j1]=mass1^[strin]^[k1]) and (b=false) then begin q:=q+1; mm:=mass1^[i1]^[j1]; b:=true; end; end; b:=false; if(q>qm) then begin massmax:=mm; qm:=q; end; end; end; end; Сообщение отредактировано: imouto - 28.12.2010 22:00 |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:58 |