Консультация № 110329
20.11.2007, 22:09
0.00 руб.
0 1 1
Здравствуйте!

Тут на днях знакомая слезно озадачила просьбой о помощи по информатике, а я Паскаль практически не изучал, но в ситуацию вник и попытался ей помочь, но ... где мои 17 лет... Вы ведь эксперты и если не трудно накидать ответ по 2 вопросам, то помогите накидать програмку:

1. Дана матрица - Имя (С) NN

Нужно вычислить сумму и число положительных элементов, находящихся над главной диагональю, где Ci > 0 , N < 12

2. Дана матрица 10 Х 10. Найти для каждой строки число элементов кратных пяти и наибольший из полученых результатов.

Мужики! Я уверен, что у кого-то на это уйдет меньше времени, чем он все это наберет в ответе!

Заранее спасибо!



Приложение:
Ci - это вроде цикл...

Обсуждение

Неизвестный
20.11.2007, 23:51
общий
это ответ
Здравствуйте, Sergey V. Gornostaev!

<b><i>Задача 1.</i></b>
<code><b>const</b> n=5;
<b>var</b> c:<b>array</b> [<font color=purple>1</font>..n,<font color=purple>1</font>..n] <b>of</b> integer;
    sum,kol,i,j:integer;
<b>begin</b>
  randomize;
  <b>for</b> i:=1 <b>to</b> n <b>do</b> <font color=green>{заполняем матрицу произвольными данными}</font>
  <b>begin</b>
   <b>for</b> j:=1 <b>to</b> n <b>do</b>
    <b>begin</b>
    c[i,j]:=random(<font color=purple>15</font>)-<font color=purple>4</font>; <b>write</b>(c[i,j]:3); <font color=green>{выводим матрицу на экран}</font>
    <b>end</b>;
    writeln;
  <b>end</b>;
  writeln;
  sum:=0; kol:=0;
  <b>for</b> i:=1 <b>to</b> n-<font color=purple>1</font> <b>do</b> <font color=green>{поиск элементов соответствующих условию}</font>
  <b>for</b> j:=i+1 <b>to</b> n <b>do</b>
    <b>if</b> c[i,j] > 0 <b>then</b>
       <b>begin</b> sum:=sum+c[i,j];inc(kol); <b>end</b>; <font color=green>{находим сумму и количество}</font>
  writeln(<font color=blue>‘sum=‘</font>,sum); <font color=green>{выводим результаты на экран}</font>
  writeln(<font color=blue>‘kol=‘</font>,kol);
<b>end</b>.</code>

<b><i>Задача 2.</i></b>
<code><b>const</b> n=10;
<b>var</b> c:<b>array</b> [<font color=purple>1</font>..n,<font color=purple>1</font>..n] <b>of</b> integer;
    mx,kol,i,j:integer;
<b>begin</b>
  randomize;
  <b>for</b> i:=1 <b>to</b> n <b>do</b> <font color=green>{заполняем матрицу произвольными данными}</font>
  <b>begin</b>
   <b>for</b> j:=1 <b>to</b> n <b>do</b>
    <b>begin</b>
    c[i,j]:=random(<font color=purple>26</font>); <b>write</b>(c[i,j]:3); <font color=green>{выводим матрицу на экран}</font>
    <b>end</b>;
    writeln;
  <b>end</b>;
  writeln;
  mx:=0;
  <b>for</b> i:=1 <b>to</b> n <b>do</b> <font color=green>{организовуем поиск в цикле}</font>
  <b>begin</b>
    kol:=0;
  <b>for</b> j:=1 <b>to</b> n <b>do</b>
    <b>if</b> c[i,j] <b>mod</b> <font color=purple>5</font>=0 <b>then</b> inc(kol); <font color=green>{если число кратно 5, то "загибаем пальцы"}</font>
    <b>if</b> mx < kol <b>then</b> mx:=kol;
    writeln(<font color=blue>‘row‘</font>,i,<font color=blue>‘=‘</font>,kol); <font color=green>{выводим кoличество "отборных" элементов в текущей строке}</font>
<b>end</b>;
  writeln(<font color=blue>‘max=‘</font>,mx); <font color=green>{выводим максимальный}</font>
<b>end</b>.</code>

<i>Замечание:</i> в первой задаче, если решать в лоб, то конечно можно вместо
<code> for i:=1 to n-1 do {поиск элементов соответствующих условию}
for j:=i+1 to n do
if c[i,j] > 0 then</code>

написать
<code> for i:=1 to n do {поиск элементов соответствующих условию}
for j:=1 to n do
if (c[i,j] > 0) and (i < j) then
</code>

Но тогда нам бы пришлось пройти все элементы матрицы и сделать кучу лишних проверок, а так мы сразу отсекаем ненужные.

Good Luck!!!
Форма ответа