![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
1111 |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
Народ помогите пожайлуста дополнить эту программу(надо дополнить её выводом исходной матрицей) и посмотреть правильно ли я её сделал. Заранее всех благодарю.
Сама задача. В данной действительной матрице 6х9 поменять местами строку, содержащую элемент с наибольши значение. предпологается, что эти элементы единственные. Program matr;
var
mat:array[1..6,1..9] of integer;
max,b:integer;
j,i,maxj:byte;
BEGIN
randomize;
for i:=1 to 6 do
begin
for j:=1 to 9 do
begin
mat[i,j]:=integer (random(100))-50;
write(mat[i,j]:4,' ');
end;
writeln;
end;
max:=mat[1,1]; maxj:=1;
for i:=1 to 6 do
for i:=1 to 9 do
if mat[i,j]>max then begin
maxj:=j;
max:=mat[i,j];
end;
end.
Сообщение отредактировано: 1111 - 30.10.2007 16:35 |
compiler |
![]()
Сообщение
#2
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
а полное задание засекречино?
![]() добавленно о задание появилось! ![]() А что означает <<поменять местами строку>>? превернуть? Сообщение отредактировано: compiler - 30.10.2007 16:33 -------------------- Спасибо!
Удачи! |
1111 |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
постовить строку на место другой
|
compiler |
![]()
Сообщение
#4
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
-------------------- Спасибо!
Удачи! |
1111 |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
на любую. Как мне сказали что этоя сделал правильно надо теперь чтобы выводилась исходная матрица
|
КМА |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
A стабильно, точно так же как и вводил(а) не подойдет? в смысле
for i:=1 to 6 do
begin
for j:=1 to 9 do
write (mat [i, j], ' ');
writeLn;
end
Это я про вывод. Про строку, сейчас что нибудь придумаем. Добавлено через 7 мин. Я у тебя ошибку нашел, вот здесь:
for i:=1 to 6 do
for i:=1 to 9 do
if mat[i,j]>max then begin
maxj:=j;
max:=mat[i,j];
end;
Во втором цикле желательно бы использовать j. У меня еще вопрос, индекс строки это второй или первый? Т. е. сколько строк 6 или 9? А integer тут при чем?
mat[i,j]:=integer (random(100))-50;
Сообщение отредактировано: КМА - 30.10.2007 19:45 |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата А integer тут при чем? При генерации случайных чисел без приведения к Integer-у при некоторых условиях можно получить RunTime Error... Поэтому использован (кстати, совершенно правильно) Integer...Сообщение отредактировано: volvo - 30.10.2007 20:07 |
КМА |
![]()
Сообщение
#8
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, спасибо, не знал
|
1111 |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
за ошибку спасибо а вывод исходной матрицы неработает.
6-строк 9-столбцов Сообщение отредактировано: 1111 - 30.10.2007 21:44 |
КМА |
![]()
Сообщение
#10
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну тогда смотри:
Program matr;
var
mat:array[1..6,1..9] of integer;
i, j, nMax: byte;
max, item: integer;
BEGIN
randomize;
for i:=1 to 6 do {введем матрицу}
begin
for j:=1 to 9 do
begin
mat[i,j]:=integer (random(100))-50;
write(mat[i,j]:4,' ');
end;
writeln;
end;
{ищем максимальный, точнее его номер}
max:=mat[1,1];
nMax:=1;
for i:=1 to 6 do
for i:=1 to 9 do
if mat[i,j]>max
then
begin
nMax:=i;
max:=mat[i,j];
end;
{теперь меняем местами, если это первая строка, то меняем со второй, если какая либо другая, то с верхней}
if nMax=1
then
for j:=1 to 9 do
begin
item:=mat[nMax, j];
mat[nMax, j]:=mat[nMax+1, j];
mat[nMax+1, j]:=item
end
else
for j:=1 to 9 do
begin
item:=mat[nMax, j];
mat[nMax, j]:=mat[nMax-1, j];
mat[nMax-1, j]:=item
end;
{выведем массив}
for i:=1 to 6 do
begin
for j:=1 to 9 do
write (mat [i, j], ' ');
writeLn
end
END.
Сообщение отредактировано: КМА - 30.10.2007 23:10 |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата(KMA) begin
item:=mat[nMax, j];
mat[nMax, j]:=mat[nMax+1, j];
mat[nMax-1, j]:=item { <--- Здесь должен быть плюс... }
end
|
КМА |
![]()
Сообщение
#12
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Единственное что, это надо сказать, что раз ты задаешь все однозначно (т. е. максимальный элемент 1), то тогда нужно пользовать ручным вводом (т. е. с клавиатуры), иначе может попасться два одинаковых элемента.
To volvo, я пока редактировал, ты уже успел отправить(у меня еще одна ошибка была)... Оперативно... спасибо что заметил. Сообщение отредактировано: КМА - 30.10.2007 23:12 |
1111 |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
всем большое спасибо
|
1111 |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
помогите с выводом исходной матрицы
|
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 22:28 |