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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2009, 16:08   #1
bestlover
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 23
По умолчанию Заменить максимальный по модулю элемент каждой строки на противоположный по знаку

Задан двумерный массив nxm
1) Заменить максимальный по модулю элемент каждой строки на противоположный по знаку
2) Вставить после каждой четной строки первую строку
3) Удалить все строки содержащие ноль
4) Поменять местами средний столбцы
bestlover вне форума Ответить с цитированием
Старый 05.04.2009, 16:26   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Где ваши наработки? Что конкретно непонятно?
Пока что я вижу только условие задачи.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.04.2009, 16:48   #3
bestlover
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 23
По умолчанию

В том и дело что я не знаю как...
bestlover вне форума Ответить с цитированием
Старый 05.04.2009, 16:57   #4
bestlover
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 23
По умолчанию

по крайней мере дальше не знаю, вот код
program Er_1;
const n=4; m=6;
type dmyarray=array[1..n,1..m] of integer;
var a myarray;
procedure init(var xmyarray);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
x[i,j]:=-25+random(51);
end;
procedure print(xmyarray);
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do
write(x[i,j]:5);
writeln;
end;
end;
procedure maximum(xmyarray;var max,maxi,maxj:integer);
var i,j:integer;
begin
max:=x[1,1];
maxi:=1;
maxj:=1;
for i:=1 to n do
for j:=1 to m do
if x[i,j]>max then
begin
max :=x[i,j];
maxi:=i;
maxj:=j;
end;
не знаю как дальше делать....=(
bestlover вне форума Ответить с цитированием
Старый 05.04.2009, 16:57   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
В том и дело что я не знаю как...
Что как? "Как это записать на паскале"? (как тут некоторые говорят).
Раз есть задания, то и материал вам давали.

1. В цикле идете по строкам.
Для каждой строки идете по столбцам (по элементам) и ищете максимум по модулю. Запоминаете его индекс. После этого меняете его знак.

2. Чтобы вставить строку, нужно сдвинуть все остальные вниз. Это делается в цикле по строкам начиная с (M+1)-й строки (M - количество строк). Поэлементно копируете строку M в строку M+1. И так пока не доберетесь до места, куда нужно вставить строку.

3. Как я понимаю, в данном случае под удалением подразумевается простой сдвиг вверх всех строк ниже удаляемой. Ну вот. Просто сдвигаете, начиная с номера удаляемой строки.

4.
Цитата:
Поменять местами средний столбцы
Средний столбцы? Может, средние? Тогда это будет работать только если количество столбцов четно. Поэлементно обмениваете. И все.

----------
В задачках нет ничего сложного. И если вы не поленитесь прочитать нужный материал (на это уйдет 1-2 часа. А при том, что вам уже давали нужный материал, еще меньше), то сможете сами их быстро решить.

==================
Цитата:
по крайней мере дальше не знаю, вот код
Код заключайте в тег CODE ("#" на панели в окне редактирования). Так его намного удобнее будет читать.
К какой это задаче?
Собственно, поместите его в CODE. Как видите, там куча смайлов вместо того, что нужно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 05.04.2009 в 17:00.
Sazary вне форума Ответить с цитированием
Старый 05.04.2009, 17:12   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
procedure maximum(x:dmyarray;var max,maxi,maxj:integer);
Зачем столько ненужных переменных, да еще и передавать в аргументах?
Понадобится только одна.

Код:
program Er_1;
uses crt;
const n=4; m=6;
type dmyarray=array[1..n,1..m] of integer;

var a : dmyarray;

procedure init(var x : dmyarray);
var i,j:integer;
begin
for i:=1 to n do
 for j:=1 to m do
  x[i,j]:=-25+random(51);
end;

procedure print(x : dmyarray);
var i,j:integer;
begin
for i:=1 to n do
 begin
 for j:=1 to m do
  write(x[i,j]:5);
 writeln;
 end;
writeln;
end;

procedure maximum(var x : dmyarray);
var i,j:integer;
maxj : integer;
begin
for i:=1 to n do
 begin
 maxj := 1;
 for j:=2 to m do
  if abs(x[i,j])>abs(x[i,maxj]) then
   maxj := j;
  x[i,maxj] := -x[i,maxj];
 end;
end;


begin
randomize;
init(a);
print(a);
maximum(a);
print(a);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 06.04.2009, 18:04   #7
bestlover
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 23
По умолчанию

Цитата:
Раз есть задания, то и материал вам давали.
неа! не давали! Вот именно что на паскале то и не получается ! а алгоритм я знаю как делать!
bestlover вне форума Ответить с цитированием
Старый 06.04.2009, 18:06   #8
bestlover
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 23
По умолчанию

Если бы я мог сам сделать, я бы не обращался за помощью.... Для вас может быть и просто) я примеры смотрел и материал читал) но там легкие примеры , я не знаю как на паскале реализовать!
bestlover вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Первый нечетный элемент каждой строки удвоить (предполагается, что в каждой строке есть нечетный элемент Галина002 Помощь студентам 1 18.03.2009 06:30
Вставить первую строку после строки, в которой находится первый встреченный максимальный элемент. JiLiYa Паскаль, Turbo Pascal, PascalABC.NET 4 03.12.2008 12:13
Определить максимальный по модулю элемент каждой строки. (Kate) Помощь студентам 2 29.11.2008 21:05
В каждой строке массива выбирается максимальный элемент sergeyfsd Общие вопросы Delphi 2 13.05.2008 00:10
Функция которая в массиве ищет максимальный по модулю элемент Absent Помощь студентам 5 19.11.2007 21:23