0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
1

Двумерные массивы. Вычисление среднего арифметического значения положительных чисел

24.11.2014, 10:23. Показов 1078. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Задача, связана с двумерными массивами. А именно: пользователь вводит число строк и число столбцов, после чего выводится сама матрица. Затем должно быть выведено среднее арифметическое значение положительных чисел. Я написала таким образом:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
...
var g: longint;
sum:real;
...
if a[k,n]>0 then
      begin
        inc(g);
        sum:=sum+a[k,n];
      end;
  writeln;
  writeln('Среднее арифметическое положительных чисел: ',(sum/g):6:2);
readln;
Но он просто выводит последнее значение в выведенной матрице...

Весь код программы:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var a:array[0..15,0..15] of real;
f:array [0..30] of longint;
const i=15;
var x,n,k,g:longint;
sum:real;
begin
f[0]:=0;
f[1]:=1;
for x:=2 to 30 do
f[x]:=f[x-1]+f[x-2];
repeat
writeln ('Vvedite k: ');
readln (k);
writeln ('Vvedite n: ');
readln (n);
until (k<=5) and (n<=5);
for k:=1 to k do
for n:=1 to n do
a[k,n]:=n*f[i+11]*k+sin(k)*f[i+12];
for k:=1 to k do begin
for n:=1 to n do
write (a[k,n]:15:2);
writeln
end;
if a[k,n]>0 then
      begin
        inc(g);
        sum:=sum+a[k,n];
      end;
  writeln;
  writeln('Среднее арифметическое положительных чисел: ',(sum/g):6:2);
readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2014, 10:23
Ответы с готовыми решениями:

Вычисление среднего арифметического чисел и запись всех чисел меньших среднего арифметического в файл
Написать программу, в которой происходит чтение целых чисел из файла А.txt (произвести проверку на...

Вычисление в одномерном массиве целой части среднего значения всех положительных четных по величине чисел
Вычисление в одномерном массиве целой части среднего значения всех положительных четных по величине...

Вычисление суммы и среднего арифметического положительных элементов массива
В заданном массиве из 8 действительных чисел вычислите сумму и среднее арифметическое значение...

Вычисление среднего арифметического значения и суммы вводимой с клавиатуры последовательности
Ребят, вот в общем задание: Вычисление среднего арифметического значения и суммы вводимой с...

12
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
24.11.2014, 12:09 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var
  a:array[0..15,0..15] of real;
  f:array [0..30] of longint;
const
  q=15;
var
  i,j,x,n,k,g:longint;
  sum:real;
 
begin
  f[0]:=0;
  f[1]:=1;
  for x:=2 to 30 do
    f[x]:=f[x-1]+f[x-2];
  repeat
    writeln ('Vvedite k: ');
    readln (k);
    writeln ('Vvedite n: ');
    readln (n);
  until (k<=5) and (n<=5);
  for i:=1 to k do
    for j:=1 to n do
      a[i,j]:=i*f[q+11]*j+sin(j)*f[q+12];
  for i:=1 to k do
    begin
      for j:=1 to n do
        write (a[i,j]:15:2);
      writeln;
      if a[i,j]>0 then
        begin
          inc(g);
          sum:=sum+a[i,j];
        end;
    end;
  writeln;
  writeln('Среднее арифметическое положительных чисел: ',(sum/g):6:2);
  readln;
end.
1
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
24.11.2014, 12:26  [ТС] 3
ZX Spectrum-128, Извините, не могли бы Вы объяснить, что именно Вы сделали? Вы поменяли буквенное значение константы в разделе констант и далее в остальном коде тоже заменили буквы.
0
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
24.11.2014, 12:33 4
Это красивости просто. Хватило бы и
Pascal
1
2
3
4
5
6
7
end; //этот end;
if a[k,n]>0 then
      begin
        inc(g);
        sum:=sum+a[k,n];
      end;
// <---- вот сюда
Проверьте

Добавлено через 1 минуту
Ну и немножко напугало
Pascal
1
2
for k:=1 to k do
for n:=1 to n do
Хотя компилятор съел.
0
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
24.11.2014, 12:42  [ТС] 5
Спасибо за объяснение!

То есть это написание не правильно? Да, компилирует...

Pascal
1
2
for k:=1 to k do
for n:=1 to n do
0
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
24.11.2014, 12:48 6
Pascal
1
for k:=1 to k do
Изначально, до цикла, k, допустим, равно 5 (столько раз должен покрутиться цикл).
Заходим в цикл и k уже 1 и по смыслу оператора for, цикл уже не от 1 до 5, а от 1 до 1.
У меня например, в мозгах сразу изжога. Почему съел компилятор, не знаю. Должно быть, я невнимательно читал про него и его особенности.
1
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
24.11.2014, 12:50  [ТС] 7
Да, по сути Вы правы. Тогда не знаю, почему он всё-таки прокомпилировал программу...
0
Модератор
9855 / 5225 / 3304
Регистрация: 17.08.2012
Сообщений: 15,983
04.01.2015, 02:58 8
Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
Изначально, до цикла, k, допустим, равно 5 (столько раз должен покрутиться цикл).
Заходим в цикл и k уже 1 и по смыслу оператора for, цикл уже не от 1 до 5, а от 1 до 1.
Цитата Сообщение от Ella17 Посмотреть сообщение
Да, по сути Вы правы.
Учите матчасть. Начальное и конечное значение для переменной-счётчика предопределённого цикла вычисляются один раз, при вхождении в цикл, в его заголовке, и помещаются, скажем так, в служебные переменные*. Далее (в цикле) переменной-счётчику при каждой итерации последовательно присваиваются значения от начального до конечного с шагом 1. Так что, например,
Pascal
1
2
3
4
for k := k - 5 to k * k
  begin
    {тело цикла}
  end;
совершенно нормальная конструкция: начальное и конечное значения уже вычислены в заголовке цикла и внутри цикла не меняются, а то, что в качестве счётчика используется переменная, участвующая в вычислении начального и конечного значений, этим самым значениям уже глубоко до фонаря.

Другое дело, что, после выхода из цикла значение переменной-счётчика считается неопределённым. Но только считается. На самом деле, в зависимости от реализации компилятора, оно равно либо конечному значению, либо конечному значению + 1. Во всяких экзотических и коллекционно-раритетных компиляторах мне ещё встречались значения: конечное минус начальное, ноль, начальное.

*Примечание: для прочих типов циклов условие выхода из цикла вычисляется при каждой итерации.
0
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
11.01.2015, 20:17  [ТС] 9
Cyborg Drone, Дело в том, что при запуске программы у меня возникает ошибка...
Программа не считает среднее арифметическое положительных чисел, а просто выдает последнее выведенное число...

Vvedite k:
2
Vvedite n:
3
8323391.94 11847969.94 15372547.94
12234776.47 19283932.47 26333088.47

Среднее арифметическое положительных чисел: 26333088.47
0
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
11.01.2015, 20:56 10
Нет. Неправда.
Программа из сообщения № 2 отрабатывает так:
Миниатюры
Двумерные массивы. Вычисление среднего арифметического значения положительных чисел  
0
Модератор
9855 / 5225 / 3304
Регистрация: 17.08.2012
Сообщений: 15,983
11.01.2015, 21:27 11
Тоже сделал прогон. ZX Spectrum-128 прав. Ella17, если Вы выложили результаты прогона программы из поста #2, то, скорее всего, у Вас глючит компилятор. Возможно, у Вас установлен паскаль из серии "school pack", эти сборки частенько глючат. Посмотрите здесь: Скачать Паскаль, выберите, что понравится. Я рекомендую FPC или сразу Lazarus, чего мелочиться, в его оболочке работать удобно. Практически полная совместимость с Turbo Pascal достигается прописыванием в программе ключа компилятора {$MODE TP}. Единственное отличие - создаваемый файл 32-разрядный, а не 16-разрядный, как в TP.
1
0 / 0 / 2
Регистрация: 20.05.2012
Сообщений: 183
11.01.2015, 23:09  [ТС] 12
Cyborg Drone, Извините, а может ли на результат повлияет то, что я эту программу набрала на Паскаль авс?
0
Модератор
9855 / 5225 / 3304
Регистрация: 17.08.2012
Сообщений: 15,983
11.01.2015, 23:52 13
Может. Pascal ABC (не путать с Pascal ABC.net, это совершенно другой диалект паскаля) предназначен только для учебных целей, скажем так, он изначально "school pack", ещё и с урезанным функционалом. Он даже исполняемого файла не создаёт. И, да, тоже частенько бывает весьма глючным. Я не рекомендую использовать этот диалект паскаля даже в учебных целях.

Ещё раз. Прогуляйтесь по приведённой мной ссылке (это, кстати, одна из закреплённых тем раздела Pascal, вообще, в закреплённые темы почаще заглядывайте, в них много полезного), почитайте, что да как, и не первые сообщения, а все, выберите и скачайте себе неглючную версию паскаля, которая Вам покажется наиболее для Вас подходящей. Мои рекомендации я уже привёл.
2
11.01.2015, 23:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2015, 23:52
Помогаю со студенческими работами здесь

Вычисление среднего арифметического поизитивных и негативных чисел
:wall: Програма для вычисления среднего арифметического поизитивных и негативных чисел program...

Вычисление среднего арифметического чисел от 1 до даного числа
Нужно составить модуль в Паскале. Заранее спасибо! Задание: Составить программу, где вводится...

Вычисления суммы и среднего арифметического последовательности n положительных чисел
Написать программу для вычисления суммы и среднего арифметического последовательности n...

Вычисление среднего арифметического чисел натурального ряда, начиная с 10 до 50
Составьте программу вычисления среднего арифметического чисел натурального ряда, начиная с 10 до 50.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru