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


Ответ
 
Опции темы Опции просмотра
Старый 24.12.2012, 04:00   #1 (permalink)
NAt
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите решить задачу в паскале

Дана матрица (nхm).Создать массив, каждый элемент которого равен среднему арифметическому отрицательных элементов в каждой строке матрицы. Упорядочить строки матрицы по убыванию средних арифметических элементов.
program a1345;
const n=10;
var a:array[1..n,1..n] of real;
i,j,n_max,k,kol:integer;
max,temp:real;
s:array[1..n]of real;
begin
randomize;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:= random(20)-10;
write(' ',a[i,j]);
end;
writeln;
end;
for i:=1 to n do
begin
kol:=0; s[i]:=0;
for j:=1 to n do
begin
if a[i,j]<0 then
begin
kol:=kol+1;
s[i]:=a[i,j]+s[i];
end;
end;
end;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=s[i]/kol;
end;
end;
а дальше я запуталась, подскажите пожалуйста)
NAt вне форума   Ответить с цитированием

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

Ранее созданные топики могут содержать нужные ответы

Помогите решить задачу в Паскале
Помогите пожалуйста решить задачу на Паскале.
Помогите решить задачу в Паскале
Помогите решить задачу в Паскале

Старый 24.12.2012, 10:31   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,126
Сказал(а) спасибо: 279
Поблагодарили 504 раз(а) в 162 сообщениях
Репутация: 91497
По умолчанию

Цитата:
Сообщение от NAt Посмотреть сообщение
а дальше я запуталась, подскажите пожалуйста)
Подсказываю.
Прежде всего, не следует самочинно упрощать задачу: если в условии стоит размерность матрицы nxm, т.е. число строк не обязано равняться числу столбцов, то и незачем делать матрицу квадратной. С другой стороны, раз Вы присваиваете элементам матрицы целые значения, то бессмысленно определять ее, как вещественную. То есть можно, конечно, но просто выводить сложнее, да и задавать элементы нужно так:
a[i,j]:= random*20-10;
Поэтому для простоты будем считать матрицу целочисленной.
Еще одно пояснение. В моем варианте программы используется не обычное определение массива
a:array[1..n,1..m] of integer;
а такая форма:
a:array[1..n] of array[1..m] of integer;
и, соответственно, элементы не a[i,j], а a[i][j]. Сделано это исключительно для наглядности, поскольку в конце приходится иметь дело с вектор-строками a[i]. Но можно всё это задавать и в обычной форме - тоже должно работать (по идее).
И еще. Желательно предусмотреть ситуацию, когда отрицательных чисел в строке не окажется вовсе. Сделано.
Код:
const
 n=10;
 m=12;
var
 a:array[1..n] of array[1..m] of integer;
 i,j,k:integer;
 s:array[1..n] of real;
 temp:real;
 kol:array[1..n] of integer;
 V:array[1..m] of integer;

Begin
 randomize;
 for i:=1 to n do
  begin
   for j:=1 to m do
    begin
     a[i][j]:= random(20)-10;
     write(a[i][j]:4);
    end;
   writeln;
  end;
 writeln;
 writeln;
 for i:=1 to n do
  begin
   kol[i]:=0;
   s[i]:=0;
   for j:=1 to m do
    if a[i][j]<0 then
     begin
      kol[i]:=kol[i]+1;
      s[i]:=s[i]+a[i][j];
     end;
  end;
 for i:=1 to n do
  begin
   if kol[i]>0 then
    s[i]:=s[i]/kol[i];
   write(s[i]:6:1);
  end;
 writeln;
 writeln;
 for k:=1 to n-1 do
  for i:=1 to n-k do
   if s[i]<s[i+1] then
    begin
     temp:=s[i];
     s[i]:=s[i+1];
     s[i+1]:=temp;
     V:=a[i];
     a[i]:=a[i+1];
     a[i+1]:=V;
    end;
 for i:=1 to n do
  begin
   for j:=1 to m do
    write(a[i][j]:4);
   writeln;
  end;
 Readln;
End.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Старый 24.12.2012, 14:27   #3 (permalink)
NAt
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо огромное)
NAt вне форума   Ответить с цитированием
Ads

Яндекс

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

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

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

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




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

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