Вопрос № 31069: Уважаемые эксперты, помогите написать программу. Как вывести на экран «;» так чтобы они заполнялись тока на половину экран??? См. ниже...Вопрос № 31077: Здравствуйте уважаемые эксперты!
Как транспонирвать матрицу???
Есть марица: a: array [1..n, 1..m] of integer; (n, m - константы).
Нужно в марицу a записать транпонированную матрицу a. Если выводить её на экран (транпонированную), то ...Вопрос № 31089: Здравствуйте! Подскажите как в pascal передать функцию по пораметру???...
Вопрос № 31.069
Уважаемые эксперты, помогите написать программу. Как вывести на экран «;» так чтобы они заполнялись тока на половину экран??? См. ниже
Приложение:
Отправлен: 08.12.2005, 13:56
Вопрос задал: Angeral (статус: 1-ый класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Whisper
Здравствуйте, Angeral!
Колличесво позицйи на экране в текстовом режиме - 60 (если ничего не путаю) в ширину и 25 в высоту...=))))))) вот и считай сам сколько надо в строчку выводить, и сколько раз это проделывать=)
For i:= 1 to 25 begin
for j:= 1 to 30
write('');
Writeln;
end;
--------- все тленно
Ответ отправила: Whisper (статус: 3-ий класс)
Отправлен: 08.12.2005, 14:04
Отвечает: sir henry
Здравствуйте, Angeral!
Используйте связку макросов - Write()\WriteLn(), больше никак, если только Вы не гуру в программировании и знаете системные функции вдоль и поперек.
Что тут непонятного? Мне кажется, Вы неверно сформулировали Ваш вопрос. Не могу поверить, что Вы не знаете о Write\WriteLn...
Ответ отправил: sir henry (статус: Академик)
Отправлен: 08.12.2005, 14:34
Отвечает: Schmak
Здравствуйте, Angeral!
Если я не ошибаюсь то в текстовом режиме экран имеет размер 80х25 символов, следовательно вам надо выводить 25 строк по 40 символов.
var i,j:integer;
begin
for i:= 1 to 25 do
begin
for j:= 1 to 30 do
write(';');
writeln;
end;
readln;
end.
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 08.12.2005, 15:07
Вопрос № 31.077
Здравствуйте уважаемые эксперты!
Как транспонирвать матрицу???
Есть марица: a: array [1..n, 1..m] of integer; (n, m - константы).
Нужно в марицу a записать транпонированную матрицу a. Если выводить её на экран (транпонированную), то я это делаю так:
for i:=1 to m do
for j:=1 to n do
write (a[j, i]) {i-строка, j-столбец}
А как её только только транпонировать, без вывода на экран???
Язык подойдёт любой (с/с++, pascal, ...)
Всем спасибо за ответы!!!
Приложение:
Отправлен: 08.12.2005, 14:54
Вопрос задал: And1 (статус: 3-ий класс)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: sir henry
Здравствуйте, And1!
С использованием второго, аналогичного массива. Транспортируете матрицу с переносом данных во второй массив, а потом из него возвращая в первый, только уже с прямым переносом, по индексам.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 08.12.2005, 15:09 Оценка за ответ: 4 Комментарий оценки: Необходимо использовать только одну матрицу...
Отвечает: REFERI
Здравствуйте, And1!
Проще всего прописать еще один массив-матрицу b: array [1..n, 1..m] of integer; (n, m - константы) и ее элементам присваивать транспонированные згачения матрицы a. Т.е. write (a[j, i]) {i-строка, j-столбец} заменить на b[i,j]= a[j, i]. И все...
Удачи!
--------- Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: Студент)
Отправлен: 08.12.2005, 16:27 Оценка за ответ: 4 Комментарий оценки: Необходимо использовать только одну матрицу...
Отвечает: Татьяна
Здравствуйте, And1!
Можно поменять, приблизительно так как в приложении
Смысл таков рассматриваем элементы строки только выше главной диагонали, и меняем их на соответсвующие элементы столбца
Но ваше замечание (в тот же массив) вообще говоря подходит для квадратных матриц.
Для матриц прямоугольных (mxn) это вообще говоря сделать возможно, но боюсь будет путанница с индексами, не думаю, что это необходимо. Хотя если уж очень понадобится.... Желаю удачи
Приложение:
--------- Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 9-ый класс)
Отправлен: 08.12.2005, 18:52 Оценка за ответ: 5 Комментарий оценки: Спасибо огромное!!! То что нужно!
Отвечает: Stamm
Здравствуйте, And1!
почти также как и у вас, только надо ещё одну матрицу
b:array[1..m,1..n] of integer;
for i:=1 to m do
for j:=1 to n do
b[j,i]:=a[i,j];
Ответ отправил: Stamm (статус: 5-ый класс)
Отправлен: 08.12.2005, 20:27
Отвечает: Schmak
Здравствуйте, And1!
Вы укащываете массив размерности m*n. но провести с матрицей данную операцию можно только если она квадратная (т.е. имеет размер m*m). Можно так:
for i:=1 to n do
for j:=i+1 to n do
if a[i,j]<>a[j,i] then
begin
a[i,j]:=a[i,j] xor a[j,i];
a[j,i]:=a[i,j] xor a[j,i];
a[i,j]:=a[i,j] xor a[j,i];
end;
Приложение:
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 09.12.2005, 17:04
Вопрос № 31.089
Здравствуйте! Подскажите как в pascal передать функцию по пораметру???
Отвечает: sir henry
Здравствуйте, Сергей Николаевич!
"функцию по пораметру" - это что-то новое в программировании. Поясните пожалуйста, что это такое?
Ответ отправил: sir henry (статус: Академик)
Отправлен: 08.12.2005, 17:29
Отвечает: Татьяна
Здравствуйте, Сергей Николаевич!
Вы имеете в виду функцию в качестве параметра?
Для этого необходимо использовать типизацию, а именно описать тип вашей функцию примерно так
type
fun = function (a:integer): integer;
а затем использовать в другой уже синоним, например
procedure test(f : fun);
теперь, в качестве параметра процедуре test можно будет передавать необходимую функцию (функция должна подходить под описание fun)
--------- Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 9-ый класс)
Отправлен: 08.12.2005, 19:11
Отвечает: Stamm
Здравствуйте, Сергей Николаевич!
Например, как это часто бывает, нужно передать массив
Регистрируем в типах
Type Mas=array[1..4,1..5] of integer;
Var m:mas;
Function funk(a:mas):integer;
Begin
..........
End;
Begin
funk(M);
end.
Ответ отправил: Stamm (статус: 5-ый класс)
Отправлен: 08.12.2005, 20:32