Процедура+Массив\удаление к-й строки, задача |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Процедура+Массив\удаление к-й строки, задача |
BoB@N |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: 0 |
Условие задачи:
\Из данного двумерного массива удалить к-й столбец.\ Примечание: 1)"Из данного"-массив задаётся по желанию. 2)Программа дожна быть составлена с использованием процедуры или функции. (что-то типо: procedure del_line). |
Altair |
Сообщение
#2
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
http://forum.pascal.net.ru/index.php?showt...indpost&p=38100
поменяй k с k+1, k+1 с k+2 и так далее... в итоге k станет последним и протсо уменьши размерность матрицы на 1 по столбцам. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Fang |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Fang Репутация: 2 |
Недавно одногруппник попросил написать такую же программу. Вот исходник:
Код uses crt; var m,n,i,j:integer; a: array[1..10,1..10] of integer; ch:char; {процедура вывода матрицы} procedure MatrixOut(x,y:integer); begin writeln; for i:=1 to x do begin for j:=1 to y do write(a[i,j]:8); writeln; end; writeln; end; {процедура переназначения эл-в массива} procedure MatrixPer(temp:integer); begin for i:=temp to m-1 do begin for j:=1 to n do begin a[i,j]:=a[i+1,j]; end; end; end; {основная программа} begin repeat clrscr; write('Введите размер матрицы (MxN): '); readln(m,n); writeln('Введите элементы матрицы: '); {Вводим матрицу} for i:=1 to m do for j:= 1 to n do begin write('A[',i,' ',j,']:='); readln(a[i,j]); end; {проверяем равен ли какой-либо эл-т 0} MatrixOut(m,n); for i:=1 to m do for j:=1 to n do if a[i,j] = 0 then MatrixPer(i); {шаг 1. (см. алгоритм} writeln('Результат: '); MatrixOut(m-1,n); {шаг 2. (см. алгоритм)} writeln('Для выхода нажми ESC...'); ch:=readkey; until ch=#27; end. |
volvo |
Сообщение
#4
|
Гость |
To: Fang
Вполне возможно, что эта программа даже будет работать... НО !!! Ты внимательно читал условие? Цитата \Из данного двумерного массива удалить к-й столбец.\ Все. Никаких проверок на 0 и т.п. Извини, но если ты уж даешь исходник ПОЛНОСТЬЮ, то он должен удовлетворять условию, иначе ты просто запутываешь автора вопроса... |
Fang |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Fang Репутация: 2 |
Sorry, забыл написать что программа удаляет столбец в котором имеется 0.
|
Fang |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Fang Репутация: 2 |
За то что пытался запутать автора - переписал исходник. Теперь он полностью удовлетворяет условию. И описание добавил.
Код {-------------------------------------------------- Удаление стобцов в матрице. --------------------------------------------------- >> Описание процедур --------------------------------------------------- 1) MatrixOut(x,y:integer) - выводит матрицу на экран. x - количество строк, y - количество столбцов. 2) MatrixPer(temp:integer) - Эта процедура делает переназначение элементам массива. temp - номер строки/стобца. --------------------------------------------------- >> Пример --------------------------------------------------- Дана матрица: 1 0 -3 A = 4 6 2 -1 4 7 , необходимо удалить вторую столбей. Алгоритм такой: 1) Необходимо присовить элементам второго стобца элементы третьего столбца (A[1,2] = A[1,3], A[2,2] = A[2,3] и т.д.) После преобразований получится матрица: 1 -3 -3 A = 4 2 2 -1 7 7 2) Теперь осталось скрыть третий столбец и вывести на экран только первые два } uses crt; var m,n,i,j,k:integer; a: array[1..10,1..10] of integer; {процедура вывода матрицы} procedure MatrixOut(x,y:integer); begin writeln; for i:=1 to x do begin for j:=1 to y do write(a[i,j]:8); writeln; end; writeln; end; {процедура переназначения эл-в массива} procedure MatrixPer(temp:integer); begin for i:=1 to m do begin for j:=temp to n-1 do begin a[i,j]:=a[i,j+1]; end; end; end; {основная программа} begin clrscr; write('Введите размер матрицы (MxN): '); readln(m,n); writeln('Введите элементы матрицы: '); {Вводим матрицу} for i:=1 to m do for j:= 1 to n do begin write('A[',i,' ',j,']:='); readln(a[i,j]); end; MatrixOut(m,n); {вывод матрицы} write('Введите номер стобца который необходимо удалить: '); readln(k); MatrixPer(k); {шаг 1. (см. алгоритм} writeln('Результат: '); MatrixOut(m,n-1); {шаг 2. (см. алгоритм)} readln; end. Сообщение отредактировано: Fang - |
BoB@N |
Сообщение
#7
|
|||
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Репутация: 0 |
Задание Выполнено ! прошу закрыть тему.
|
|||
Текстовая версия | 23.12.2024 20:55 |