Страница 1 из 1
Помогите отчисляют!(Pascal)
Добавлено: 04 апр 2007, 23:16
And1
помогите пожалуйста! мне нужно описать прогу на Паскале т.е. написать комменты к строчкам из проги(если можно то к каждой строчке).
Вот сама прога:
const
nmax = 101;
var
a: array[1..nmax, 1..nmax] of longint;
n, i, j, maxi, maxj, v : longint;
begin
repeat
write('Введите нечётное n < ', nmax, ': ');
readln(n);
if not odd(n) then
writeln('n должно быть нечётно');
if n > nmax then
writeln('n должно быть меньше ', nmax);
until (odd(n) and (n < nmax));
writeln('Ввод матрици');
for i:=1 to n do
for j:=1 to n do begin
write('a[', i, ',', j, '] = ');
readln(a[i, j]);
end;
maxi := 1;
maxj := 1;
for i:=1 to n do
for j:=1 to n do begin
if (a[maxi,maxj] < a[i, j]) then begin
maxi := i;
maxj := j;
end;
if (a[maxi, maxj] < a[i, n - j + 1]) then begin
maxi := i;
maxj := n - j + 1;
end;
end;
v := a[maxi, maxj];
a[maxi, maxj] := a[(n + 1) div 2, (n + 1) div 2];
a[(n + 1) div 2, (n + 1) div 2] := v;
writeln('После обработки матрица принела следующий вид:');
for i:=1 to n do begin
for j:=1 to n do
write(a[i, j], ' ');
writeln;
end;
end.
Re: Помогите отчисляют!(Pascal)
Добавлено: 04 апр 2007, 23:20
And1
Если нужно то вот задание к этой проге:
Дана действительная квадратная матрица порядка N(n- нечетное). Все элементы матрицы различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.
Помогите плизз! очень нужно!
Re: Помогите отчисляют!(Pascal)
Добавлено: 05 апр 2007, 09:43
Хыиуду
Код: Выделить всё
for i:=1 to n do
for j:=1 to n do begin
if (a[maxi,maxj] < a[i, j]) then begin
maxi := i;
maxj := j;
end;
if (a[maxi, maxj] < a[i, n - j + 1]) then begin
maxi := i;
maxj := n - j + 1;
end;
end;
Это двойной обход всего массива с нахождением максимума. Зачем так? Это же неправильно!
Код: Выделить всё
for i:=1 to n do
begin
if a[i,i]>a[maxi,maxj] then
begin maxi:=i; maxj:=i; end;
if a[i,n-i+1]>a[maxi,maxj] then
begin maxi:=i; maxj:=n-i+1; end;
end;
Re: Помогите отчисляют!(Pascal)
Добавлено: 05 апр 2007, 11:27
And1
Спасибо! А можешь написать комментарии к этой программе?(ну там что какая сторчка выполнят)

Re: Помогите отчисляют!(Pascal)
Добавлено: 05 апр 2007, 16:06
Хыиуду
Напиши свой вариант, а мы откорректируем. Ужасно неохота делать за других то, с чем они вполне могут справиться и сами, поискав две минуты в Яндексе.
const {объявление констант} ...
Re: Помогите отчисляют!(Pascal)
Добавлено: 05 апр 2007, 17:42
And1
В том то и дело что у меня нет своих вариантов!

Я вообще в паскале полный ноль! У меня преподаватель спросил как она работает, но я ему ни чего не ответил по ней!
Re: Помогите отчисляют!(Pascal)
Добавлено: 05 апр 2007, 21:55
And1
Вот мои комменты! посмотрите и подскажите что где неправильно!
const
nmax = 101; \\ Макс. размер
var
a: array[1..nmax, 1..nmax] of longint; \\ Матрица
n, i, j, maxi, maxj, v : longint; \\ Необходимые переменные
begin
repeat \\ Повторять следующее:
write('Введите нечётное n < ', nmax, ': ');
readln(n); \\ Ввод n
if not odd(n) then \\ Если n четное, то
writeln('n должно быть нечётно'); \\ Вывод сообщения
if n > nmax then \\ Если n больше макс. значения, то
writeln('n должно быть меньше ', nmax); \\ Вывод сообщения
until (odd(n) and (n < nmax)); Пока не n - нечетное и меньше макс значения
writeln('Ввод матрицы');
for i:=1 to n do \\ Цикл строк
for j:=1 to n do begin \\ Цикл столбцов
write('a[', i, ',', j, '] = ');
readln(a[i, j]); \\ Ввод соответствующего элемента
end;
maxi := 1;
maxj := 1;
for i:=1 to n do \\ Цикл диагонали
begin
if a[i,i]>a[maxi,maxj] then \\ Если элемент главной диагонали меньше минимального
begin
maxi:=i; \\ Он считается минимальным
maxj:=i; \\ Он считается минимальным
end;
if a[i,n-i+1]>a[maxi,maxj] then \\ Если элемент побочной диагонали меньше минимального
begin
maxi:=i; \\ Он считается минимальным
maxj:=n-i+1; \\ Он считается минимальным
end;
end;
v := a[maxi, maxj]; \\ Сохраняем минимальное значение
a[maxi, maxj] := a[(n + 1) div 2, (n + 1) div 2]; \\ Вместо него пишем значение центра
a[(n + 1) div 2, (n + 1) div 2] := v; \\ В центр пишем мин. значение
writeln('После обработки матрица приняла следующий вид:');
for i:=1 to n do begin \\ Цикл строк
for j:=1 to n do \\ Цикл столбцов
write(a[i, j], ' '); \\ Вывод соответствующего элемента
writeln;
end;
end.
Re: Помогите отчисляют!(Pascal)
Добавлено: 06 апр 2007, 09:53
Хыиуду
Ну, все правильно. Только не "меньше минимального", а "больше максимального"

Мы же все-таки максимальные элементы ищем.
Re: Помогите отчисляют!(Pascal)
Добавлено: 06 апр 2007, 10:13
And1
Лады! Спасибо!
