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


Ответ
 
Опции темы Опции просмотра
Старый 27.06.2011, 12:46   #1 (permalink)
LiL_JoN
Новичок
 
Регистрация: 27.06.2011
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль. Действия над матрицами

Прошу помочь с заданием.
Матрица A[4] [4]. Найти минимальный элемент во 2-ой строке и разделить на него элементы главной диагонали.
LiL_JoN вне форума   Ответить с цитированием

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

Вы на форуме не один кто интересовался подобным

Помогите создать библиотеку функций для работы с матрицами
Непонятные действия компьютера
Турбо Паскаль или Фри Паскаль. Задание по теме Типизированный файл
Игры с массивами и матрицами
Действия с матрицами

Старый 27.06.2011, 14:43   #2 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Делить на каждый элемент главной диагонали и вывести одним числом, или на каждый последовательно? Или может на их сумму/произведение? Задание дано неточно.
И в чем трудности? Задача простейшая на самом деле.
MrSTEP вне форума   Ответить с цитированием
Старый 27.06.2011, 14:53   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от MrSTEP Посмотреть сообщение
На каждый элемент главной диагонали и вывести одним числом, или на каждый последовательно? Или может на их сумму/произведение? Задание дано неточно.
И в чем трудности? Задача простейшая на самом деле.
Да нет, Лёша, ты просто не вчитался - формулировка там нормальная. Сперва ищется минимальный элемент второй строки, а потом все элементы главной диагонали делятся на найденное число. Единственное, а вдруг этим минимумом окажется ноль - что тогда?
Vladimir_S вне форума   Ответить с цитированием
Старый 27.06.2011, 15:28   #4 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

А, да, правда невнимательно.. Разделить НА НЕГО, а не ЕГО НА. Виноват. Но тем и задача проще..
MrSTEP вне форума   Ответить с цитированием
Старый 27.06.2011, 15:37   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от MrSTEP Посмотреть сообщение
Но тем и задача проще..
Я бы сказал - глупее. Посему точно заниматься не буду. Может быть, кто-нибудь из школьников в порядке практики захочет...
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 28.06.2011, 12:48   #6 (permalink)
LiL_JoN
Новичок
 
Регистрация: 27.06.2011
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

program matrica;
uses crt;
const n=4;
type
matr=array[1..n,1..n] of integer;
var
a :matr:
min :integer:
i,j:byte;
begin
clrscr;
writeln('vvedite a[4,4]:');
for i:=1 to n do
for j:=1 to n do
begin
write ('a[',i,',',j,']=');
read (a[i,j]);
end;
writeln(^M^J,'Minimum=',min);
readln;
repeat until keypressed;
end.



УМОЛЯЮ ПОМОГИТЕ ВСТАВИТЬ ОПЕРАЦИЮ ПО УМНОЖЕНИЮ ЭЛЕМЕНТОВ ГЛАВНОЙ ДИАГОНАЛИ НА МИНИМУМ, прога работает нормально, минимум выдает, а вот с умножением трудности, пожалуйста помогите
LiL_JoN вне форума   Ответить с цитированием
Старый 28.06.2011, 16:06   #7 (permalink)
Severina
Вечная ученица
 
Регистрация: 27.06.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Код:
writeln('VVedite matrix ');
  for i:= 1 to 10 do
    for j:= 1 to 3 do
      read(A[i,j]);
  for i:= 1 to 10 do
  begin
    for j:= 1 to 3 do
      write(A[i,j], ' ');
  writeln;
  end;
как получилось у меня
Severina вне форума   Ответить с цитированием
Старый 28.06.2011, 16:09   #8 (permalink)
Severina
Вечная ученица
 
Регистрация: 27.06.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ошиблась, вот он:

program matrica;
uses crt;
const n=4;
type
matr=array[1..n,1..n] of real;
var
a :matr;
min :real;
i,j:byte;
begin
clrscr;
{Vvodim matricu}
writeln('VVedite matricu ');
for i:= 1 to n do
for j:= 1 to n do
read(A[i,j]);

{Poisk minimuma }

min:=A[2,1];
for i:=1 to n do begin
for j:=1 to n do begin
if A[2,j]<=min then min:=A[2,j]
end;
end;
writeln;
writeln('Minimum raven: ', min:5:1, #10#13);

{Glavnyu diagonal delem na min}

for i:= 1 to n do
begin
for j:= 1 to n do
if i = j then
A[i,j]:=A[i,j] / min;
end;

{Vivodim matricu}
for i:=1 to n do
begin
for j:=1 to n do
write(A[i,j]:2:1, ' ' );
writeln;
end;

repeat until keypressed;

end.
Severina вне форума   Ответить с цитированием
Старый 28.06.2011, 16:22   #9 (permalink)
Severina
Вечная ученица
 
Регистрация: 27.06.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Писала для предыдущей темы, где вы вначале просили поделить главную диагональ на минимум. Если все-таки надо умножить, то в 11 строчке снизу вместо / поставить *.
Severina вне форума   Ответить с цитированием
Старый 28.06.2011, 16:36   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от LiL_JoN Посмотреть сообщение
УМОЛЯЮ ПОМОГИТЕ ВСТАВИТЬ ОПЕРАЦИЮ ПО УМНОЖЕНИЮ ЭЛЕМЕНТОВ ГЛАВНОЙ ДИАГОНАЛИ НА МИНИМУМ, прога работает нормально, минимум выдает, а вот с умножением трудности, пожалуйста помогите
Извините - не верю! (как говаривал К.С.Станиславский). Не может "прога" нормально работать, имея столько ошибок. И как она "выдает минимум", если никакого поиска минимума там просто нет?
Цитата:
program matrica;
uses crt;
const n=4;
type
matr=array[1..n,1..n] of integer;
var
До сюда всё более ли менее.
Цитата:
a :matr:
min :integer:
Грубейшие ошибки!!! Вместо разделителя "точка с запятой" в конце строк поставлены двоеточия. Такого ни один транслятор не пропустит!
Цитата:
i,j:byte;
begin
clrscr;
writeln('vvedite a[4,4]:');
for i:=1 to n do
for j:=1 to n do
begin
write ('a[',i,',',j,']=');
Нормально.
Цитата:
readln (a[i,j]);
Не буду вдаваться в подробности, но в таких случаях НАСТОЯТЕЛЬНО рекомендую использовать не read, а именно readln.
Цитата:
end;
writeln(^M^J,'Minimum=',min);
Так. А вот это уже серьезно.
1. На хрена, извините за грубость, вы сюда вкатали запись в непонятно куда, да еще с динамической адресацией? Самое смешное, что ошибок вроде не выдает, и даже на экран выводит - вот только зачем? Сдвиг от края?
2. Где и когда, покажите пальцем, у Вас присваиваются хоть какие-то значения переменной min? Естественно, всегда выводится 0. Вы ЭТО имели в виду?
Цитата:
readln;
repeat until keypressed;
Если бы Вы использовали при вводе readln, а не read, то было бы достаточно одного из остановов - либо readln, либо repeat until keypressed (кстати, можно вместо этих трех слов поставить просто readkey).
Цитата:
end.
С учетом вышесказанного, задачу можно решить, например, так:
Код:
program matrica;
uses crt;
const n=4;
type
 matr=array[1..n,1..n] of integer;
var
 a:matr;
 min :integer;
 i,j:byte;
begin
 clrscr;
 min:=32000;
 writeln('vvedite a[4,4]:');
 for i:=1 to n do
  for j:=1 to n do
   begin
    write ('a[',i,',',j,']= ');
    readln (a[i,j]);
    If (i=2) and (a[i,j]<min) then min:=a[i,j];
   end;
 writeln;
 for i:=1 to n do
  begin
   for j:=1 to n do
    write (a[i,j]:8);
   writeln;
  end;
 writeln;
 writeln('Minimum= ',min);
 writeln;
 For i:=1 to n do a[i,i]:=a[i,i]*min;
 for i:=1 to n do
  begin
   for j:=1 to n do
    write (a[i,j]:8);
   writeln;
  end;
 readln
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, время: 03:31.

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