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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2010, 13:47   #1
katushkazolotce
 
Аватар для katushkazolotce
 
Регистрация: 27.09.2010
Сообщений: 3
По умолчанию Паскаль (fp) программирование

Здравствуйте, помогите решить задачу!( я в программировании не очень) Найти среднее арифметическое всех четных элементов матрицы расположенных ниже главой диагонали.(функция обязательно должна использоваться)
вот что у меня получилось только работает немного не так ... матрица не так задается..
Код:
program zadanie2;
uses crt;
const n=3;
type mas=array[1..n,1..n] of integer;
var a:mas;
    s,kol,i,j: integer;

function srednie(a:mas):real;
var
   i,j,s,kol:integer;
   sr:real;
       begin
   s:=0;
   kol:=0;
   for i:=1 to n do
   begin
      for j:=1 to n do

      if (i+j>n+1) then
      begin
       kol:=kol+1;
       s:=s+a[i,j];
      end;
   end;
   sr:=s/kol;

   srednie:=sr;
          end;
 begin
   clrscr;
   writeln('‚ВВедите элементы матрицы');
   for i:=1 to n do
   begin
    for j:=1 to n do
       begin
       
     write('a[',i,',',j,']=' ,' ');
         readln(a[i,j]);
       end;
   end;

   writeln('среднее арифметическое = ');
   writeln(srednie(a):6:3);

end.

Последний раз редактировалось artemavd; 11.10.2010 в 15:30.
katushkazolotce вне форума Ответить с цитированием
Старый 11.10.2010, 14:50   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Вопрос
Код:
if (i+j>n+1) then
Это вот это что ли проверка на условие
Код:
ниже главой диагонали
Код:
всех четных элементов матрицы
Где у вас эта проверка?
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 11.10.2010, 15:04   #3
katushkazolotce
 
Аватар для katushkazolotce
 
Регистрация: 27.09.2010
Сообщений: 3
По умолчанию

программка работает и все считает,но у меня матрица задается столбцом , а мне надо что бы 3 3 3 и считала правильно после этого(((((
3 3 3
3 3 3
katushkazolotce вне форума Ответить с цитированием
Старый 11.10.2010, 15:35   #4
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
а мне надо что бы 3 3 3....
в смысле? вы хотите чтобы при вводе матрицы элементы вводились на тех местах, на которых они должны стоять в двумерном массиве?
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 12.10.2010, 15:18   #5
katushkazolotce
 
Аватар для katushkazolotce
 
Регистрация: 27.09.2010
Сообщений: 3
По умолчанию

мне просто нужно решить мою задачу правильно что бы все считалось. потому что в том виде как я сделала препод не принимает( прошу помощи!!!!!!!!!!!!!!!!!
katushkazolotce вне форума Ответить с цитированием
Старый 12.10.2010, 15:34   #6
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Так пойдёт?
Код:
uses crt;
   var m: array [1..3,1..3] of integer;
       i,j,k:integer;
       s:real;
BEGIN
   clrscr;
   for i:=1 to 3 do
      for j:=1 to 3 do
      read(m[i,j]);
   writeln('---------------------------------');
    for i:=1 to 3 do
      for j:=1 to 3 do
         begin
            if (i>j) and ( (m[i,j] mod 2)=0 ) then
                                         begin
                                            s:=s+m[i,j];
                                            k:=k+1;
                                         end;
         end;
   s:=s/k;
   writeln('sred arifmet = ',s:0:2);
   readkey;
END.
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 12.10.2010, 15:46   #7
HellchilD
 
Регистрация: 01.11.2009
Сообщений: 8
По умолчанию

не очень хорошо помню паскаль, но попробуем:
1. условие "ниже главной диагонали" можно проверить очень просто:
Код:
if (j<i)
- (i=j - как раз главная диагональ)
2. проверка на четность:
Код:
if (a[i,j] mod 2=0)
и цикл должен выглядеть примерно так:
Код:
for i:=1 to n do
   begin
      for j:=1 to n do

      if ((j<i)&(a[i,j] mod 2=0)) then
      begin
       kol:=kol+1;
       s:=s+a[i,j];
      end;
   end;
Возможно, я немного напутал в синтаксисе в условии, но это уже не большая проблема
HellchilD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, Борланд Паскаль-в чем разница??? Vremya-Dengy Паскаль, Turbo Pascal, PascalABC.NET 13 31.05.2011 18:23
Про программирование клавиатуры.Паскаль 7.0 Almost456 Помощь студентам 3 16.12.2009 18:42
Паскаль.Программирование задач нахождение суммы и произведения Яська Помощь студентам 1 07.12.2009 18:16
Объектно-ориентированное программирование (Паскаль) Ake Помощь студентам 1 22.02.2009 20:14