Вопрос № 108318: Здравствуйте, помогите пожайлуста с решением задачки на языке Pascal:
тема "Двумерные массивы"
Задание 1:
Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно главной диагонали.
Задание 2:<b...Вопрос № 108453: Уважаемые эксперты помогите с решением следующих задач по теме "Одномерные массивы".
1) Вычислить сумму элементов, больших заданного числа А в массиве В(N).
2) Разделить каждый элемент массива на первый элемент. Массив вывести ...
Вопрос № 108.318
Здравствуйте, помогите пожайлуста с решением задачки на языке Pascal:
тема "Двумерные массивы"
Задание 1:
Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно главной диагонали.
Задание 2:
Различные числа. Задан числовой массив A[1:m]. Сосчитать и напечатать, сколько различных чисел в этом массиве. Например в массиве 5.7.5 различных чисел два
(5 и 7).
Отправлен: 06.11.2007, 21:22
Вопрос задал: Ильнур (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Форсман Павел Вячеславович
Здравствуйте, Xpoiuy!
Вот решение ваших задач, для первой - два варианта, первое - внутри самой матрицы, второе - транспонирование в другую матрицу.
Program T108318_1; {Инверсия матрицы в ней самой}
const
n=10; {Максимальная размерность матрицы}
type
TMatrix=array [1..n,1..n] of Word; {Тип матицы}
var
nMax:byte; {Текущая размерность}
A:TMatrix; {Матрица}
Procedure FillMatr(var A:TMatrix;nmax:byte); {Заполнение матрицы}
var
i,j:byte; {Индексы строки и столбца}
begin
Randomize; {Инициализация генератора случайных чисел}
for i:=1 to nMax do {Начало заполнение}
for j:=1 to nMax do
A[i,j]:=Random(65535); {65535 - максимальное значение типа Word}
end; {Следовательно, диапазон значений [0;65534]}
Procedure InvMatr(var A:TMatrix;nmax:byte); {Инверсия матрицы}
var
i,j:byte; {Счетчики}
T:Word; {Временная переменная}
begin
for i:=2 to nMax do {Начало цикла, для инверсии не нужно трогать диагональ,}
for j:=1 to i-1 do {и достаточно части матрицы под главной диагональю}
begin
T:=A[i,j]; {Обмен значениями}
A[i,j]:=A[j,i];
A[j,i]:=T;
end;
end;
Procedure OutMatr(var A:TMatrix;nMax:byte); {Вывод матрицы на экран}
var
i,j:byte; {Счетчики}
begin
for i:=1 to nMax do {Начало цикла}
begin
for j:=1 to nMax do
write(A[i,j],#9); {Вывод элемента, #9 - символ табуляции}
writeln; {Строка закончилась - переход на следующую}
end;
end;
begin
write('nMax='); {Ввод реальной максимальной размерности}
readln(nMax);
FillMatr(A,nMax); {Заполнение матрицы}
writeln('A:');
OutMatr(A,nMax); {Вывод исходной матрицы}
InvMatr(A,nMax); {Инверсия матрицы}
writeln('A'':');
OutMatr(A,nMax); {Вывод результата}
readln; {Ожидание нажатия ENTER}
end.
Program T108318_1_; {Инверсия матрицы в другую матрицу}
const
n=10; {Максимальная размерность матрицы}
type
TMatrix=array [1..n,1..n] of Word; {Тип матицы}
var
nMax:byte; {Текущая размерность}
A,B:TMatrix; {Матрица}
Procedure FillMatr(var A:TMatrix;nmax:byte); {Заполнение матрицы}
var
i,j:byte; {Индексы строки и столбца}
begin
Randomize; {Инициализация генератора случайных чисел}
for i:=1 to nMax do {Начало заполнение}
for j:=1 to nMax do
A[i,j]:=Random(65535); {65535 - максимальное значение типа Word}
end; {Следовательно, диапазон значений [0;65534]}
Procedure InvMatr(var A:TMatrix;nmax:byte); {Инверсия матрицы}
var
i,j:byte; {Счетчики}
T:Word; {Временная переменная}
begin
for i:=2 to nMax do {Начало цикла, для инверсии не нужно трогать диагональ,}
for j:=1 to i-1 do {и достаточно части матрицы под главной диагональю}
begin
T:=A[i,j]; {Обмен значениями}
A[i,j]:=A[j,i];
A[j,i]:=T;
end;
end;
Procedure OutMatr(var A:TMatrix;nMax:byte); {Вывод матрицы на экран}
var
i,j:byte; {Счетчики}
begin
for i:=1 to nMax do {Начало цикла}
begin
for j:=1 to nMax do
write(A[i,j],#9); {Вывод элемента, #9 - символ табуляции}
writeln; {Строка закончилась - переход на следующую}
end;
end;
begin
write('nMax='); {Ввод реальной максимальной размерности}
readln(nMax);
FillMatr(A,nMax); {Заполнение матрицы}
writeln('A:');
OutMatr(A,nMax); {Вывод исходной матрицы}
B:=A;
InvMatr(B,nMax); {Инверсия матрицы}
writeln('B=A'':');
OutMatr(B,nMax); {Вывод результата}
readln; {Ожидание нажатия ENTER}
end.
Program T108318_2; {Подсчет уникальных значений}
const
m=20; {Максимальное количество элементов в массиве}
type
TArray=array [1..m] of byte; {Описание массива}
TMask=array [1..m] of boolean; {Маска для определения совпадений}
var
A:TArray; {Массив}
i,mMax,CountUniq:byte; {Сччетчик для ввода, реальная размерность, результат}
Function CalcUniq(var A:TArray;mMax:byte):byte;{Подсчет уникальных}
var
Mask:TMask; {Маска}
i,j:byte; {Счетчики}
Count:byte; {Возвращаемый результат}
begin
for i:=1 to mMax do {Инициализация маски - все уникальные}
Mask[i]:=True;
Count:=0; {Инициализация счетчика}
for i:=1 to mMax do {Начало перебора}
if Mask[i] then {Число еще не встречалось???}
begin
Mask[i]:=False; {Снимаем флаг "уникальности"}
inc(Count); {Увеличиваем счетчик}
for j:=i+1 to mMax do {Смотрим подобные}
if A[i]=A[j] then {У подобных тоже сбрасываем флаги}
Mask[j]:=False;
end;
CalcUniq:=Count; {Возврат значения}
end;
begin
write('mMax='); {Запрос и ввод реального размера вектора}
readln(mMax);
for i:=1 to mMax do {Ввод значения вектора}
begin
write('A[',i,']=');
readln(A[i]);
end;
CountUniq:=CalcUniq(A,mMax); {Подсчет уникальных значений}
writeln('Uniq=',CountUniq); {Вывод результата}
readln; {Ожидание реакции пользователя}
end.
Павел Форсман.
--------- Научить нельзя, но можно попробовать научиться!!!
Ответ отправил: Форсман Павел Вячеславович (статус: 2-ой класс)
Ответ отправлен: 07.11.2007, 03:10 Оценка за ответ: 5
Вопрос № 108.453
Уважаемые эксперты помогите с решением следующих задач по теме "Одномерные массивы".
1) Вычислить сумму элементов, больших заданного числа А в массиве В(N).
2) Разделить каждый элемент массива на первый элемент. Массив вывести на экран.
3)Найти и напечатать среднее арифметическое значение положительных элементов заданного массива.
4) Вычислить произведение
а)последних пяти элементов одномерного массива
б)первых пяти элементов массива.
5) Для заданного массива найти и напечатать элемент, значение которого максимально.
6)Для заданного масива определить и напечатать сумму элеметов с четными номерами.
7)Сформировать и напечатать массив А, каждый элемент которого представляет собой целую часть соответствующего элемента массива Х. Результат вывести на экран.
8)найти номера нулевых элементов массива.
Заранее всем большое спасибо!!!
Отправлен: 07.11.2007, 18:22
Вопрос задала: Lifestyle (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Артём1983
Здравствуйте, Lifestyle!
Смотрите коды программ в приложении.
Приложение:
--------- Программирование - дело Путное!
Ответ отправил: Артём1983 (статус: 6-ой класс)
Ответ отправлен: 07.11.2007, 22:03 Оценка за ответ: 5 Комментарий оценки: Я Вам очень благодарна!!! Вы мне очень помогли!!! Задачи решены все правильны))) И еще раз Вам большое спасибо, я не знаю, чтоб я без вас делала!!!