IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Матрица
сообщение
Сообщение #1


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


Дана матрица 4x6. Найти макс. элемент последних 3-х столбцов и заменить на минимальный элемент первой строки матрицы. Вывести на экран.

Макс и мин нашла. А как теперь заменить макс на мин и вывести результирующую матрицу? blink.gif


uses crt;

var
A : array [1..4, 1..6] of integer;
i,j, m, n : byte;
max, min : integer;


begin
clrscr;

For i:=1 to 4 do
for j:=1 to 6 do
begin
If j=1 then GoToXY (i,i);
If j=2 then GoToXY (i+10,i);
If j=3 then GoToXY (i+20,i);
If j=4 then GoToXY (i+30,i);
If j=5 then GoToXY (i+40,i);
If j=6 then GoToXY (i+50,i);
write ('A[',i,',',j,']=');
read (A[i,j]);
end;

min:=a[1,1];
For i:=1 to 1 do
for j:=1 to 6 do
begin
If A[i,j] < min then min:=A[i,j];
end;

max:=0;
For i:=1 to 4 do
for j:=4 to 6 do
begin
If A[i,j] > max then begin max:=A[i,j]; A[i,j] := min; end;
end;



Сообщение отредактировано: Анна -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Анна @ 3.05.2008 21:05) *
Макс и мин нашла. А как теперь заменить макс на мин и вывести результирующую матрицу? blink.gif
мне нечего в голову не лезет, кроме как, после нахождения минимума, делать как-то так:
{...}
max := A[1, 4]; //кто тебе сказал что все элементы будут положительные? )
for i := 1 to 4 do
for j := 4 to 6 do
If A[i, j] > max then max := A[i, j];

for i := 1 to 4 do
for j := 4 to 6 do
If A[i, j] = max then A[i, j] := min;
{...}

зы и проверь программу на наличие лишних переменных;)

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Вывод (так гораздо легче)

for i := 1 to ... do //строки
begin
for y := 1 to ... do ///столбцы
write(i,y,' ');
writeln();
end ;



Сообщение отредактировано: renesko1 -


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


renesko1, сорри голова уже не работает под вечер, немного не так понял твой код... эт все из-за форматирования)

но все же выводится у тебе совсем не элементы матрицы;)

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


да извеняюсь, оправдыватся не буду


for i := 1 to ... do //строки
begin
for y := 1 to ... do ///столбцы
write(matrix[i,y],' '); // smile.gif
writeln;
end ;


Только я не понял про begin и end ведь я поставил их что бы сначало вывести элементы 1 строки в ряд и перейти на 2 ?

Сообщение отредактировано: renesko1 -


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
Макс и мин нашла.
Находить надо не сами max/min, а их индексы, тогда задача будет решаться гораздо проще...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


А еще лучше - и то, и другое. (экстремумы - для последующего сравнения до конца цикла, а индексы - для последующей обработки за пределами цикла)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


Цитата(renesko1 @ 3.05.2008 23:19) *
да извеняюсь, оправдыватся не буду


for i := 1 to ... do //строки
begin
for y := 1 to ... do ///столбцы
write(matrix[i,y],' '); // smile.gif
writeln;
end ;


Только я не понял про begin и end ведь я поставил их что бы сначало вывести элементы 1 строки в ряд и перейти на 2 ?

А как при вводе сделать аналогично?

  For i:=1 to 4 do
begin
for j:=1 to 6 do
begin
write ('A[',i,',',j,']=');
read (A[i,j]);
end;
writeln;
end;

Не хочет даже с read. И кромер GoToXY больше ничего не приходит в голову mega_chok.gif


Добавлено через 9 мин.
Да и вообще при таком выводе, если, к примеру все числа в первом ряду двузначные, а во втором однозначные, то первый ряд сдвинут получается. Лучше уж GoToXY, там равномерней.


А если с запоминанием индексов, то вот:
 max:=a[1,4];
For i:=1 to 4 do
for j:=4 to 6 do
begin
If A[i,j] > max then begin max:=A[i,j]; m:=i; n:=j; end;
end;

For i:=1 to 4 do
for j:=4 to 6 do
begin
If (i=m) and (j=n) then A[i,j] := min;
end;


Сообщение отредактировано: Анна -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
Да и вообще при таком выводе, если, к примеру все числа в первом ряду двузначные, а во втором однозначные, то первый ряд сдвинут получается.
Вообще-то надо задавать ширину поля, в котором выводятся числа, а не разделять их пробелами вручную:
for i := 1 to 4 do begin
for j := 1 to 6 do write(A[i, j]:5);
writeln;
end;

 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


А при вводе данных подобным образом можно сделать? Чтобы после ввода элемента матрицы курсор не на новую строку переходил?

Сообщение отредактировано: Анна -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 22:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name