Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2009, 00:17   #1
Анжелика
Пользователь
 
Аватар для Анжелика
 
Регистрация: 25.10.2008
Сообщений: 36
Вопрос Найти ошибку в задаче на ПАскаль

Вот опять вопрос что с ней не так, какието числа выдаёт, жуть.
Дана квадратная матрица. Получить новую умножая старые элементы на 2, если наибольший элемент стоит на главной диагонали и поделив да 2 в противоном случае.
Код:
Program zad48;
uses crt;
const n=4;
type t=array[1..n,1..n] of real;
var a:t; i,k,p,j:integer; max:real;
b:array[1..n] of integer;
begin
clrscr;
randomize;
writeln('ishodnaya matrica');
writeln;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(100)-50;
write(a[i,j]:5);
end;
writeln;
end;
max:=a[1,1];
p:=1;
k:=1;
for i:=1 to n do
for j:=1 to n do
begin
if a[i,j]>max then begin
max:=a[i,j];
p:=i; k:=j;
end;
if k=p then begin
a[i,j]:=(a[i,j]*2);
end
else begin
a[i,j]:=a[i,j]/2;
end;
end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:5:2);
writeln;
end;
readln;
end.
Сегодня утром уже экзамен, а я уснуть не могу

Последний раз редактировалось Анжелика; 16.01.2009 в 00:23.
Анжелика вне форума Ответить с цитированием
Старый 16.01.2009, 00:41   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Надо бы сначала выяснить где находится максимум, а потом уже модифицировать матрицу. А у вас все делается в одном цикле. То есть, он может половину матрицы поделить на 2, а другую половину умножить )
Исправлено:
Код:
Program zad48;
uses crt;
const n=4;
type t=array[1..n,1..n] of real;
var a:t; i,k,p,j:integer; max:real;
b:array[1..n] of integer;
begin
clrscr;
randomize;
writeln('ishodnaya matrica');
writeln;
for i:=1 to n do
  begin
  for j:=1 to n do
      begin
      a[i,j]:=random(100)-50;
      write(a[i,j]:7:2);
      end;
  writeln;
  end;

p:=1;
k:=1;
max:=a[1,1];
for i:=1 to n do
  for j:=1 to n do
   begin
     if a[i,j]>max then
     begin
      max:=a[i,j];
      p:=i; k:=j;
      end;
   end;

for i:=1 to n do
  for j:=1 to n do
   begin
    if k=p then
      begin
      a[i,j]:=(a[i,j]*2);
      end
    else
     a[i,j]:=a[i,j]/2;
   end;
writeln;
writeln('max= ',max:7:2);
writeln;

for i:=1 to n do
   begin
     for j:=1 to n do
      write(a[i,j]:7:2);
      writeln;
   end;
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 16.01.2009, 00:47   #3
Анжелика
Пользователь
 
Аватар для Анжелика
 
Регистрация: 25.10.2008
Сообщений: 36
По умолчанию

ВСё равно белеберда какая-то....(
Анжелика вне форума Ответить с цитированием
Старый 16.01.2009, 00:55   #4
Анжелика
Пользователь
 
Аватар для Анжелика
 
Регистрация: 25.10.2008
Сообщений: 36
По умолчанию

Ой, нет всё правильно, я там просто поменяла кол-во позиций. с 7 на 10. Спасибо теперь со спокойной душой пойду на экзамен.Только отрицательных элементов нет...

Последний раз редактировалось Анжелика; 16.01.2009 в 01:00.
Анжелика вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите пожалуйста найти ошибку в задаче! Fatality Помощь студентам 2 15.01.2009 16:22
помогите найти ошибку в задаче. Wia Помощь студентам 1 16.12.2008 19:15
помогите найти ошибку в задаче. Wia Помощь студентам 1 14.12.2008 17:19
Помогите найти ошибку в задаче Filosofijka Паскаль, Turbo Pascal, PascalABC.NET 34 04.12.2008 13:36
Паскаль, не могу найти ошибку в программе Julinja Помощь студентам 2 17.11.2008 20:42