![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Определение столбца............. |
![]()
Сообщение
#1
|
Гость ![]() |
Помогите пожалуйста
Вот такая задача Я нашел число нулевых элементов в каждом столбце(ch[j]) И теперь мне надо найти столбец в котором больше всего нулевых элементов.? |
![]() ![]() |
Дож |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 179 Пол: Мужской Репутация: ![]() ![]() ![]() |
Допустим вот так:
А вообще про массивы написано в FAQ. Сообщение отредактировано: Дож - 15.05.2005 22:35 -------------------- Доброго времени суток.
:nnn: |
Serega18 |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Репутация: ![]() ![]() ![]() |
подЗадача:Поставить на первое место столбец с наименьшим количеством нулевых элементов .
Есть матрица A[i,j] и число нулевых элементов в столбце пусть num[j] Вот как сделал я Код Procedure resort(var a:matrix;var num:integer); Var i,j:integer; Begin for i:=1 to 5 do Begin For j:=1 to 5 do Begin IF num[1]>num[j] A[i,1]:=A[i,j]; A[i,j]:=A[1,1]; end; end; end; Что здесь не так? |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
:no: Ты должен сначала определить, в каком столбце число нулевых элементов минимально, а уже потом менять этот столбец с первым...
Чтобы это сделать одним оператором, нужно определить матрицу по-другому: FAQ: Как задать матрицу чтобы ... |
Serega18 |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Репутация: ![]() ![]() ![]() |
Faq прочел ниче не понял.
А чтобы найти столбец с наименьшим число нулевых элементов пойдет вот так: Код Procedure(var A:matrix,var num:integer); var i,j:integer; begin j:=0 for i:=1 to 5 do begin for j:=1 to 5 do begin if num[j]<min then min:=num[j]; end; end; end; |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Не пойдет... У тебя это даже не скомпилируется ... Ты передаешь Num как Integer, а внутри процедуры обращаешься к нему как к массиву... Это как понять?
|
Serega18 |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Репутация: ![]() ![]() ![]() |
FА если у меня num будет одномерным массивом
Код Procedure(var A:matrix,var num:odn); var i,j:integer; begin j:=0 for i:=1 to 5 do begin for j:=1 to 5 do begin if num[j]<min then min:=num[j]; end; end; end; |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Function min_nulls(var A:matrix): integer; Эта функция возвращает номер столбца, в котором число нулевых элементов минимально... И не надо ничего делать перед этим, никаких подсчетов :P |
Serega18 |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Репутация: ![]() ![]() ![]() |
count,indx -а что это такое?
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Переменные, что еще?
![]() |
Serega18 |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Репутация: ![]() ![]() ![]() |
Значит при перестоновке поставить indx
Код Procedure resort(var a:matrix;var num:integer); Var i,j:integer; Begin for i:=1 to 5 do Begin For j:=1 to 5 do Begin IF num[1]>num[j] A[i,1]:=A[i,indx]; A[i,indx]:=A[1,1]; end; end; end; |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Да что тебя так тянет на этот NUM?
Procedure resort(var a:matrix; indx: integer); Вот и все... и вызывать вот так: begin После этого только распечатать... |
Serega18 |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо :molitva: (А как во внутренней спецификации описать Т
![]() |
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата(Serega18 @ 15.05.05 23:09) А как во внутренней спецификации описать Т Во внутренней спец... чего? ![]() "Т" у меня - буферная переменная для обмена значений... |
Serega18 |
![]()
Сообщение
#15
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Репутация: ![]() ![]() ![]() |
Появился еще один вопрос:
А что если после нахождения столбца с наименьшим количеством нулевых элементов мне надо менять элементы в столбце,а не менять местами столбцы, например поставить все нули в конец столбца . Мой вариант: Код Procedure t(var a:matrix; indx:integer); Var i,n:integer; Begin n:=0 for i:=1 to 5 do Begin IF A[i,indx]=0 then T:=A[5-n,indx] A[5-n,ind]:=A[i,indx]; A[i,indx]:=T; n:n+1; end; end; |
volvo |
![]()
Сообщение
#16
|
Гость ![]() |
IF A[i,indx]=0 then это не будет работать... Begin ... End забыл. Кроме этого, зачем работать со значением A[i, indx], если ты только что выяснил, что оно равно 0? ![]() |
Serega18 |
![]()
Сообщение
#17
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Репутация: ![]() ![]() ![]() |
Код IF A[i,indx]=0 then T:=A[5-n,indx] A[5-n,ind]:=A[i,indx]; A[i,indx]:=T; n:=n+1; Условие-то что i-тый элемент в столбце indx =0 Затем я T -присваиваю последний элемент в столбце и меняю i-тый элемент который равен нулю с последним Цитата Кроме этого, зачем работать со значением A[i, indx], если ты только что выяснил, что оно равно 0? Я пытаюсь нулевой элемент переставить в конец,для этого A[i, indx] должен быть равен нулю |
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
Вот только не говори мне, что этот код НЕ эквивалентен твоему:
IF A[i,indx]=0 then begin T - "лишняя" переменная... Будь внимательнее |
Serega18 |
![]()
Сообщение
#19
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Репутация: ![]() ![]() ![]() |
А почему T лишняя? (я думал что для перестановки двух элементов всегда нужна переменная)
|
Дож |
![]()
Сообщение
#20
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 179 Пол: Мужской Репутация: ![]() ![]() ![]() |
Естественно, нет...
Это Код k:=a; a:=b; b:=k; можно заменить на то: Код a:=a+b; b:=a-b; a:=a-b; -------------------- Доброго времени суток.
:nnn: |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 13:14 |