Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 3 / 8
Регистрация: 14.10.2012
Сообщений: 288

В двумерном динамическом массиве S найти среднее арифметическое каждого столбца

24.10.2014, 05:48. Показов 1572. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В двумерном динамическом массиве S найти среднее арифметическое каждого столбца. Результаты записать в одномерный динамический массив Y, в котором поменять местами максимальный элемент с последним.
Программа работает при всех значениях кроме 1 3 или 3 1. А почему, не могу понять.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
program MatrixDinam;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
var
  S: array of array of Integer;
  Y: array of Real;
  NRow, NColumn: Integer;        // Количество строк и столбцов в матрице
  I, J, K: Integer;              // Счетчики циклов
  SumColumn: Integer;            // Сумма каждого столбца матрицы
  C: Integer;                    // Количество положительных элементов
                                 //   каждого столбца
  AverArifm: Real;               // Среднее арифметическое каждого столбца
  MaxY: Real;                    // Максимальный элемент массива Y
  IMaxY:Integer;                 // Позиция максимального элемента массива Y
begin
  WriteLn('Input quantity of rows and columns, for example: 2 4');
  Read(NRow, NColumn);
 
        // Выделяем память для введенных данных
  SetLength(S,NRow,NColumn);
  SetLength(Y,NColumn);
 
        // Ввод матрицы
  WriteLn('Input a two dimensional array');
  for I := 0 to High(S) do
    begin
    for J := 0 to High(S[I]) do
      Read(S[I,J]);
    end;
 
        // Вывод матрицы
  for I := 0 to High(S) do
    begin
    for J := 0 to High(S[I]) do
      Write(S[I, J]:3,' ');
      WriteLn;
    end;
 
        // Выделяем память в массиве Y, находим среднее арифметичесское каждого
        // столбца и записываем его значение в массив Y, учитывая тот случай
        // когда в столбце нет положительных элементов.
    K := 0;
    for J := 0 to High(S) do
    begin
      SumColumn := 0;
      C := 0;
      for I := 0 to High(S[J]) do
        if S[I, J] > 0 then
        begin
          SumColumn := SumColumn + S[I,J];
          Inc(C);
        end;
      if C <> 0 then
        begin
          AverArifm := SumColumn / C;
          Y[K] := AverArifm;
          Inc(K);
        end;
    end;
    WriteLn;
 
        // Так как массив S больше не будет использоваться, то стираем его
    S:=nil;
 
        // В случае, если массив Y пустой, то все элементы матрицы
        // отрицательные. Иначе выделяем память для массива Y и печатаем
        // данный массив.
    if K = 0 then
      WriteLn('All elements is negativ')
    else
    begin
 
      WriteLn('The sum of each column');
      IMaxY := 0;
      for I := 0 to High(Y) do
      begin
        Write(Y[I]:3:4,' ');
        if Y[I] > MaxY then
          IMaxY := I;
          MaxY := Y[I];
      end;
      WriteLn;
 
        // В массиве Y меняем местами максимальный элемент с последдним,
        // учитывая тот случай, когда максимальный элемент и есть последний.
        // Выводим массив.
      if Y[IMaxY] <> Y[K-1] then
      begin
        Y[IMaxY] := Y[IMaxY] + Y[K-1];
        Y[K-1] := Y[IMaxY] - Y[K-1];
        Y[IMaxY] := Y[IMaxY] - Y[K-1];
        WriteLn('Swapped ',IMaxY+1,' and second element of the matrix');
      end
      else
        WriteLn('Maximal element is at the bottom');
      for I := 0 to High(Y) do
        Write(Y[I]:3:4,' ');
 
        // Так как массив больше не будет использоваться, то стираем его.
     Y:=nil;
    end;
Readln;
ReadLn;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2014, 05:48
Ответы с готовыми решениями:

В вещественном двумерном массиве найти среднее арифм. каждого столбца и среднее арифм. строк с четными номерами
Задана вещественная квадратная матрица n-го порядка. Найти: а) среднее арифметическое каждого столбца; б) среднее арифметическое...

Найти среднее арифметическое из каждого столбца и поставить это значение на место элемента находящегося на главной диагонали в новом массиве
Задача:Дана квадратная матрица.Найти среднее арифметическое из каждого столбца и поставить это значение на место элемента находящегося на...

В двумерном массиве определить среднее арифметическое каждого столбца и максимум и минимум каждой строки
Дан двухмерный массив 5x6 . Определить среднее арифметическое каждого столбца, определить максимум и минимум каждой строки.

5
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
24.10.2014, 08:23
Что-то ты наворотил... А про положительные вообще в задании ничего нет.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
program MatrixDinam;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
var
  S: array of array of Integer;
  Y: array of Real;
  NRow, NColumn: Integer;        // Количество строк и столбцов в матрице
  I, J: Integer;                 // Счетчики циклов
  IMaxY:Integer;                 // Позиция максимального элемента массива Y
  Tmp: Real;                     //Буфер для обмена вещественных чисел
begin
WriteLn('Input quantity of rows and columns, for example: 2 4');
ReadLn(NRow, NColumn);
// Выделяем память для введенных данных
SetLength(S,NRow,NColumn);
SetLength(Y,NColumn);
// Ввод матрицы
WriteLn('Input a two dimensional array');
for I := 0 to High(S) do
 begin
  for J := 0 to High(S[I]) do
  Read(S[I,J]);
 end;
// Вывод матрицы
writeln('Matritca S');
for I := 0 to High(S) do
 begin
  for J := 0 to High(S[I]) do
  Write(S[I, J]:4);
  WriteLn;
 end;
//находим среднее арифметическое каждого
// столбца и записываем его значение в массив Y
writeln('Massiv Y');
for J := 0 to High(S[0]) do //размер строки
 begin
  Y[j]:=0;
  for I := 0 to High(S) do //количество строк
  Y[j] := Y[j] + S[I,J];
  Y[j]:=Y[j]/High(S);
  write(Y[j]:6:2)
 end;
IMaxY := 0;
for I := 0 to High(Y) do
if Y[I] > Y[IMaxY] then  IMaxY := I;
WriteLn;
// В массиве Y меняем местами максимальный элемент с последним,
// учитывая тот случай, когда максимальный элемент и есть последний.
// Выводим массив.
if IMaxY <> High(Y) then
 begin
  Tmp:=Y[IMaxY];
  Y[IMaxY]:=Y[High(Y)];
  Y[High(Y)]:=Tmp;
  WriteLn('Swapped ',IMaxY+1,' and second element of the matrix');
  for I:=0 to High(Y) do
  Write(Y[I]:6:2);
 end
else WriteLn('Maximal element is at the bottom');
ReadLn;
ReadLn;
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
24.10.2014, 08:37
Puporev,
ReadLn(...) в 26 строчке зло -- не даст вводить элементы в строку, точнее, будет пропускать в строке ввода все, кроме первого элемента, то есть заставит после каждого числа жать Ввод. Достаточно заменить на Read(...), и значения можно будет ввести хоть в одну строку, хоть в NRow, хоть как угодно.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
24.10.2014, 08:45
Цитата Сообщение от bormant Посмотреть сообщение
не даст вводить элементы в строку
А нафига если потом все равно идет вывод матрицы?
Но если это уж так важно для эстетов, исправил в коде.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
24.10.2014, 10:46
Цитата Сообщение от Puporev Посмотреть сообщение
А нафига если потом все равно идет вывод матрицы?
... важно для эстетов

Тут чуть больше, чем эстетика, до исправления ReadLn на Read было как: вводит ползатель, например:
Code
1
2
3
4
5
6
Input quantity of rows and columns, for example: 2 4
3 3<Enter>
Input a two dimensional array
1 2 3<Enter>
4 5 6<Enter>
7 8 9<Enter>
А программа от него еще чего-то хочет. А хочет, так как a[1,1]=1, a[1,2]=4, a[1,3]=7, остальной ввод канул в лету, программа ждет ещё 6 значений.
0
3 / 3 / 8
Регистрация: 14.10.2012
Сообщений: 288
24.10.2014, 17:27  [ТС]
проблема осталась, при вводе матрицы размером 1*3 программа не работает

Добавлено через 2 минуты
в задании нужно узнать сумму положительных(извините, что не уточнил) и этот код
Pascal
1
2
3
4
5
6
7
8
9
10
11
for J := 0 to High(S[0]) do //размер строки
 begin
  Y[j]:=0;
  for I := 0 to High(S) do //количество строк
  Y[j] := Y[j] + S[I,J];
  Y[j]:=Y[j]/High(S);
  write(Y[j]:6:2)
 end;
IMaxY := 0;
for I := 0 to High(Y) do
if Y[I] > Y[IMaxY] then  IMaxY := I;
засунуть в один цикл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2014, 17:27
Помогаю со студенческими работами здесь

В двумерном массиве найти среднее арифметическое первого столбца
Помогите пожалуйста с программой. Borland C++ задача 1-го курса 2) В двумерном массиве найти среднее арифметическое первого столбца и...

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

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

Удаление столбца в двумерном динамическом массиве
Необходимо удалить столбец, содержащий хотя бы один ноль, из двумерного динамического массива.(матрица) Кода нет, так как выходит ерунда.

Найти среднее арифметическое каждого столбца
Нужно найти среднее арифметическое каждого столбца вот код: const n = 4; m = 5; var Mat: array of integer; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru