Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 16.11.2016, 17:57   #1 (permalink)
АсяЯ
Member
 
Регистрация: 05.11.2016
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите пожалуйста с задачами

1.Даны квадратные матрицы А(5,5) и В(5,5). С использованием процедуры вычисления произведения двух матриц найти матрицы С = АхВ и D = ВхА. Вычислить суммы элементов главных диагоналей матриц С и D, напечатать
Переменная цикла for должна описываться в том же блоке, что и цикл for-пишет ошибку

type matr=array[1..5,1..5] of integer;
var A,B,C,D:matr;
i,j,sumC,sumD:integer;
procedure Umn(p:integer;T,R:matr;var H:matr);
var k:byte;
begin
for k:=1 to p do
for j:=1 to p do
begin
H[k,j]:=0;
for i:=1 to p do
begin
H[k,j]:=H[k,j]+T[k,i]*R[i,j];
end;
end;
end;
begin
writeln('Матрица A:');
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
A[i,j]:=random(10)+1;
write(A[i,j]:3);
end;
writeln;
end;
readln;
writeln('Матрица B:');
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
B[i,j]:=random(10)+1;
write(B[i,j]:3);
end;
writeln;
end;
readln;
writeln('Матрица C:');
Umn(5,A,B,C);
for i:=1 to 5 do
begin
for j:=1 to 5 do
write(C[i,j]:6);
writeln;
end;
readln;
writeln('Матрица D:');
Umn(5,B,A,D);
for i:=1 to 5 do
begin
for j:=1 to 5 do
write(D[i,j]:6);
writeln;
end;
readln;
sumC:=0;
for i:=1 to 5 do
for j:=1 to 5 do
if i=j then sumC:=sumC+C[i,j];
writeln('Сумма элементов главной диагонали C=',sumC);
sumD:=0;
for i:=1 to 5 do
for j:=1 to 5 do
if i=j then sumD:=sumD+D[i,j];
writeln('Сумма элементов главной диагонали D=',sumD);
readln;
end.
2.Дано натуральное число N. Напечатать строку символов, являющуюся представлением этого числа в 5 системе счисления с использованием процедуры "перевода".
Как в строку сделать?

var
i,c:integer;
value1,value:string;
begin
writeln('Введите число');
Readln(c);
i:=1;
repeat
Str((c mod 5),value1);
insert(value1,value,1);
c:=c div 5;
i:=i*10;
until c div 5=0;
Str(c,value1);
insert(value1,value,1);
Writeln(value);
end.
АсяЯ вне форума   Ответить с цитированием

Старый 16.11.2016, 17:57
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Отправлю вам топики, которые аналогичны вашей теме

Помогите ПОЖАЛУЙСТА с задачами на С
Помогите, пожалуйста, с задачами на Паскале

Старый 16.11.2016, 19:37   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от АсяЯ Посмотреть сообщение
Переменная цикла for должна описываться в том же блоке, что и цикл for-пишет ошибку
Ну так и задайте их внутри процедуры! Т.е. вместо
var k:byte;
напишите
var i,j,k:byte;
То, что они повторяют имена внешних переменных - ничего страшного. Хотя лично я стараюсь, просто из соображений наглядности, этого избегать. Но допускается, ошибки нет.
Vladimir_S вне форума   Ответить с цитированием
Старый 17.11.2016, 10:16   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от АсяЯ Посмотреть сообщение
2.Дано натуральное число N. Напечатать строку символов, являющуюся представлением этого числа в 5 системе счисления с использованием процедуры "перевода". Как в строку сделать?
Например, так:
Код:
Var
 N:integer;
 S:String;

Function Dec2Quin(M:integer):String;
var
 p,D:integer;
 C,SS:String;
begin
 SS:='';
 p:=1;
 repeat
  p:=p*5;
 until (M div p)=0;
 if p>5 then
  repeat
   p:=p div 5;
   D:=M div p;
   Str(D,C);
   SS:=SS+C;
   M:=M mod p;
  until p=5;
 D:=M mod 5;
 Str(D,C);
 SS:=SS+C;
 Dec2Quin:=SS;
end;

Begin
 Repeat
  Write('Enter N (0 to quit) ');
  Readln(N);
  if N>0 then
   begin
    S:=Dec2Quin(N);
    Writeln(S);
   end;
 Until N=0;
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:36.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.