Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 22.04.2019
Сообщений: 15
1

Разработать и отладить программу, содержащую процедуру

22.04.2019, 21:56. Показов 2485. Ответов 6

Разработать и отладить программу, содержащую процедуру, которая, находит среднеарифметическое отрицательных ком¬понент, расположенных после максимального элемента в массиве и функцию, определяющую среднеарифметическое положительных компонент, стоящих до максимального элемента в массиве.
Код программы: Но там все сыро и ошибки, не знаю как написать функцию среднего арифм.. Помогите пожалуйста очень надо ребят.
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
Program Sr_Arifm;
Type
Masiv = array[1..100] of integer;
Var
sr: Real;
n:integer
Procedure Maximal(var m:Masiv; max,max_nomer:integer);
Var
i,n:integer;
Begin
  max:=m[1];
  max_nomer:=1;
  for i:= 2 to n do
     begin
         if m[i]> max then
            begin
               max:= m[i];
               max_nomer:= i;
            end;
     end;
end;
  Begin
sr := 0;
  for i := 0 to n do 
  sr := sr + m[i];
  writeln ('Среднее значение', (sr/(n+1)));
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2019, 21:56
Ответы с готовыми решениями:

Разработать и отладить программу которая содержит процедуру
Разработать и отладить программу которая содержит процедуру нахождения суммы положительных...

Разработать и отладить процедуру
Помогите с заданием, пожалуйста!! Разработать и отладить процедуру, выполняющую следующие...

Разработать алгоритм и тесты, написать и отладить программу Выполнить программу, проанализировать результат
Из матрицы У(k, k) получить вектор Т, элементами которого являются элементы главной диагонали...

Разработать на ассемблере и отладить программу, которая выполняет
Разработать на ассемблере и отладить программу, которая выполняет: 1) ввод с клавиатуры двух...

6
2363 / 766 / 560
Регистрация: 15.01.2019
Сообщений: 2,383
23.04.2019, 04:03 2
Лучший ответ Сообщение было отмечено Nomberman как решение

Решение

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
109
110
111
112
113
Program Sr_Arifm;
uses windows;
Type
  TMasiv = array[1..100] of integer;
 
Procedure SrArethPosleN(m: TMasiv; nom,n:integer; var sr_areth: real; var cod: boolean);
Var
i,k: integer; // Промежуточные переменные для организации циклов.
sum: integer; // Промежуточная переменная для вычисления значения среднего арифметического.
Begin
if nom + 1 <= n then
  begin
   sum:= 0;
   k:= 0;
   for i:= nom + 1 to n do  // Цикл для поиска элементов после найденного элемента с максимальным значением.
     if m[i] < 0 then   // Условия отбора элементов.
       begin
         sum:= sum + m[i];  // Подсчитывается сумма значений найденных элементов
         inc(k);      // Подсчитывается количество найденных элементов.
       end;
   if k = 0 then
     cod:= false
   else
    begin
     sr_areth:= sum/k;   // Вычисляется среднее арифметическое найденных элементов.
     cod:= true;
    end;
  end
else
cod:= false;
end;
 
Function SrArethDoN(m: TMasiv; nom,n:integer; var cod: boolean): real;
Var
i,k: integer; // Промежуточные переменные для организации циклов.
sum: integer; // Промежуточная переменная для вычисления значения среднего арифметического.
Begin
  sum:= 0;
  k:= 0;
  if nom - 1 >= 1 then
   begin
     for i:= 1 to nom - 1 do  // Цикл для поиска элементов до найденного элемента с максимальным значением.
       if m[i] > 0 then  // Условия отбора элементов.
         begin
          sum:= sum + m[i]; // Подсчитывается сумма значений найденных элементов
          inc(k);     // Подсчитывается количество найденных элементов.
         end;
     if k = 0 then
        cod:= false
     else
       begin
         SrArethDoN:= sum/k; // Вычисляется среднее арифметическое найденных элементов.
         cod:= true;
       end;
    end
else
cod:= false;
end;
 
 
 
Var
a: TMasiv; // Переменная для хранения массива.
i: integer; // Промежуточная переменная для организации циклов.
max: integer; // Промежуточная переменная для нахождения элемента с максимальным значением.
nomer: integer; // Переменная для хранения номера элемента с максимальным значением.
n1: integer; // Переменная для хранения значения количества элементов массива.
cod1,cod2: boolean; // Переменные для организации правильного ответа.
areth1: real; // Переменная для хранения значения вычисленного среднего арифметического
              // элементов, стоящих после элемента с максимальным значением.
areth2: real; // Переменная для хранения значения вычисленного среднего арифметического
              // элементов, стоящих до элемента с максимальным значением.
Begin
// Производится ручной ввод данных в массив.
Writeln('Введите количество элементов массива:');
Readln(n1);
for i:= 1 to n1 do
   begin
     Writeln('Введите значение ',i,' элемента массива:');
     Readln(a[i]);
   end;
// На экран выводится весь введенный массив.
Writeln('Исходный массив:');
for i:= 1 to n1 do
  Write(a[i],'  ');
// Ищется элемент массива с максимальным значением и его индекс.
max:= a[1];
nomer:= 1;
for i:= 2 to n1 do
  begin
   if a[i]> max then  // Условие отбора максимального элемента.
     begin
       max:= a[i];
       nomer:= i;
     end;
  end;
writeln;
Writeln('Индекс элемента массива с максимальным значением: ', nomer);
Writeln('Значение элемента массива с максимальным значением: ', max);
SrArethPosleN(a, nomer, n1, areth1, cod1);
areth2:= SrArethDoN(a, nomer, n1, cod2);
// В зависимости от вычисленных результатов организуется вывод ответа на экран.
if cod1 then
  writeln('Среднее арифметическое отрицательных элементов, стоящих после элемента с максимальным значением:', areth1:0:2)
else
  writeln('Элементов с отрицательным значением, стоящих после элемента с максимальным значением не найдено.');
if cod2 then
  writeln('Среднее арифметическое положительных элементов, стоящих до элемента с максимальным значением:', areth2:0:2)
else
  writeln('Элементов с положительным значением, стоящих до элемента с максимальным значением не найдено.');
 
Readln;
end.
1
0 / 0 / 0
Регистрация: 22.04.2019
Сообщений: 15
23.04.2019, 18:10  [ТС] 3
огромное вам спасибо! Еще никто мне так подробно не объяснил как вы, а не могли бы вы посоветовать для практики хорошие книги или сайты по обучению паскаля, у нас скоро практика. и еще раз вам спасибо!.
0
2363 / 766 / 560
Регистрация: 15.01.2019
Сообщений: 2,383
23.04.2019, 20:52 4
Лучший ответ Сообщение было отмечено Nomberman как решение

Решение

Книг по Turbo Pascal достаточно много. Мне трудно что-то особо вам порекомендовать. Я специально посмотрел на те книги, что сейчас популярны и выбрал наиболее практичные.
Ушаков Д.М., Юркова Т.А. Паскаль для школьников.
Долинский М.С. Алгоритмизация и программирование на Turbo Pascal: от простых до олимпиадных задач.
Так же ОБЯЗАТЕЛЬНО вам нужен справочник по языку. (нужен для того, чтобы в полной мере владеть всеми функциями и процедурами, которые предлагаются в дополнительных модулях языка)
Я за справками лезу в Интернет от случая к случаю, хотя это не правильно - нужна самая обычная бумажная книга.
В качестве справочника можно использовать
Фаронов В.В. Turbo Pascal в подлиннике. Наиболее полное руководство.
К сожалению, но читая эти и другие книги вы ничему не научитесь. Программирование постигается только на практике. Поэтому нужно собрать волю, усесться за компьютер и поставить перед собой ежедневно какую-либо практическую задачу (не ставьте себе сложных задач), а затем добиваться ее решения. При этом заглядывать в учебники, справочники и в чужие работающие (работающие!!!) коды - обязательно и необходимо.
Все школьные задания сводятся к десятку простейших кодовых конструкций, по вводу - выводу информации и приемов ее обработке. Эти кодовые конструкции нужно запомнить (записать в тетрадке или файле), а затем применять по обстоятельствам, модифицируя коды. Однако бездумно и просто кое как сложить кодовые конструкции как кирпичики лего у вас не получится. Нужно тщательно продумывать алгоритм и понимать что вы хотите добиться от машины.
1
0 / 0 / 0
Регистрация: 22.04.2019
Сообщений: 15
05.05.2019, 00:24  [ТС] 5
я забыл еще спросить, а к это программе как будет выглядеть блок-схема?
0
0 / 0 / 0
Регистрация: 19.03.2020
Сообщений: 9
03.06.2020, 21:20 6
ValentinNemo, а можно ещё блок-схему к коду?
0
2363 / 766 / 560
Регистрация: 15.01.2019
Сообщений: 2,383
03.06.2020, 21:48 7
galelleu, нет. Блок схему делайте сами. Есть специальные программы, которые делают это автоматически. Google и Yandex вам в помощь.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2020, 21:48

Помогите отладить программу: Разработать класс, содержащий вектор длинных целых чисел
Всем привет. Нужна ваша помощь. Ниже задания что бы вы были в курсе что я делаю. Примерно половину...

Разработать алгоритм и тесты, написать и отладить модульную программу с использованием подпрограммы для организации!
Вычислить суммы элементов векторов У(k) и X(L), находящиеся в интервале от а до b.

Разработать процедуру-функцию, вычисляющую значение функции в заданных точках. Для решения задачи разработать процедуру
Приветствую, очень нужна ваша помощь в решении 2-ух заданий. Началось программирование в VBA, а я...

Разработать программу содержащую 3 вида циклических управляющих структутр
Используя технологию структурного программирования разработать программу решения индивидуальной...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.