1 / 1 / 1
Регистрация: 22.12.2009
Сообщений: 35
1

Суммировать те элементы массива, которые расположены между минимальным и максимальным элементом

24.05.2010, 20:29. Показов 1420. Ответов 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
uses crt;
var n,i,min,max,t,t1,t2:integer; mas:array [1..100] of integer;
 
begin
clrscr;
 
writeln('Введите сколько всего элементов: '); readln(n);
writeln('Всего ',n,' элементов, вот они:');
 
for i:=1 to n do begin
mas[i]:=random(10); {здесь не знаю как реализовать проверку на повтор элементов}
write(mas[i],' ');
end;
writeln;
writeln;
 
min:=mas[1];
max:=0;
for i:=1 to n do begin
if mas[i]>max then begin max:=mas[i]; t1:=i; end else if mas[i]<min then begin min:=mas[i]; t2:=i end ;
end;
writeln('Максимальный элемент: ',max); writeln('Минимальный элемент: ',min);
if t2>t1 then begin writeln('Максимальный элемент предшествует минимальному :('); exit; end;
 
t2:=t2+1; t1:=t1-1; t:=0;
for t2:=t2 to t1 do t:=t+mas[t2];
 
writeln('Сумма элементов между',min,' и ',max, ' = ',t);
 
writeln;
writeln('Press Enter to exit...');
readln
end.
Добавлено через 3 часа 39 минут
НУ подкиньте хоть идею пожалуйста, как списки долбаные делаюца... Скока перечитал, ничего не понял...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2010, 20:29
Ответы с готовыми решениями:

Суммировать те элементы списка, которые расположены между минимальным и максимальным элементом
Составить программу, заполняющую список последовательностью случайных различных чисел и суммирующую...

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

Переписать только те элементы массива, которые расположены между его максимальным и минимальным элементами
Задать массив А1 помощью генератора случайных чисел только числами, кратными 3. Переписать массив...

Расположите в обратном порядке элементы массива, которые расположены перед максимальным элементом массива.
Дан одномерный числовой массив размера K, значения элементов в котором различны. Расположите в...

2
636 / 219 / 64
Регистрация: 03.11.2009
Сообщений: 488
24.05.2010, 22:52 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
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
type
PNode=^Node;{Указатель на узел}
Node=record     {Структура узла}
 chis,nom:integer; {число и порядковый номер числа в списке}
 next:PNode; {Указатель на след}
end;
var
Head,p:PNode;
i,k,n:integer;
{Функция проверки есть ли такое число в списке}
function Search(Head1:PNode;k:integer):PNode;
var
tmp:PNode;
begin
 tmp:=Head1; {Запоминаем адрес головы}
  while ( tmp <> nil ) and (tmp^.chis <> k ) do  {пока не дошли ло конца списка или не нашли такой элемент в списке}
      tmp:=tmp^.next;
  Search:=tmp; {Пзапомнили адрес элементаЖесли такое чсило есть уже в списке то будет возвращ его адрес если его нет то Search будет равно nil}
end;
{Проц доб в список, посмотрите в теме Динамические структ там всё подробно написанно}
procedure AddToList(var Head1:PNode;k,i:integer);
var
tmp:PNode;
begin
  if Head1=nil then
    begin
     New(Head1);
     tmp:=Head1;
    end
  else
    begin
      tmp:=Head1;
        while tmp^.next <> nil do
          tmp:=tmp^.next;
         New(tmp^.next);
         tmp:=tmp^.next;
    end;
      tmp^.next:=nil;
      tmp^.chis:=k;
      tmp^.nom:=i;
end;
{Проц посика мин и мас и суммы эл между ними}
procedure SearchMaxandMin(Head1:PNode);
var
tmp,pmin,pmax:PNode; {Вспомогательные переменные}
s:integer;
begin
pmin:=Head1; {Считаем что числа хран в голове списка мак и мин одновременно}
pmax:=Head1;
  while Head1 <> nil do {Пока голова не равна пустотте делать}
    begin
      if Head1^.chis < pmin^.chis then  {Сравнение}
         pmin:=Head1;
      if Head1^.chis > pmax^.chis then
         pmax:=Head1;
      Head1:=Head1^.next;  {Пререход на след элемент}
    end;
  if pmin^.nom > pmax^.nom then  {Смотрим мин элем предшествует макс}
    writeln('Максимальный элемент предшествует минимальному!!!')
  else        {если нет то}
    begin
      tmp:=pmin;  {нач установки}
      s:=tmp^.chis;
        while tmp <> pmax do {Пока не дошли да мак элемента делать}
         begin
           tmp:=tmp^.next;
           s:=s+tmp^.chis; {Считаем сумму}
         end;
     writeln(pmin^.chis,'  ',pmax^.chis);
     writeln('Сумма ',s);
    end;
end;
{Проц вывода списка на экран}
procedure Print(Head1:PNode);
begin
  while Head1 <> nil do  {Пока голова не станет равной пустоте делать}
    begin
      write(Head1^.chis:5);
      Head1:=Head1^.next; {Преход на след элемент}
    end;
end;
{процедура удаления списка}
Procedure FreeSpisok(var Head1:PNode);
var
  tmp:PNode;
begin
   while Head1<>nil do
      begin
       tmp:=Head1;
       Head1:=Head1^.next; {Преставляем голову на след элемент за ней и }
       FreeMem(tmp);  {удаляем элем}
      end;
end;
 
begin
  Head:=nil;
  writeln('Введите колво элементов');
  readln(n);
  Randomize;
  k:=random(379)-126;
   AddToList(Head,k,1);
   for i:=2 to n do
    repeat
      k:=random(379)-126;
      p:=Search(Head,k);
       if p=nil then
         AddToList(Head,k,i);
    until p=nil;
    Print(Head);
    writeln;
    SearchMaxandMin(Head);
    FreeSpisok(Head);
 end.
Добавлено через 1 минуту
Вот вам в помощь https://www.cyberforum.ru/pascal/thread77419.html
2
1 / 1 / 1
Регистрация: 22.12.2009
Сообщений: 35
24.05.2010, 23:37  [ТС] 3
Спасибо, что-то уже становится понятно 2ую задачку сам смогу теперь сделать
0
24.05.2010, 23:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2010, 23:37
Помогаю со студенческими работами здесь

Найти сумму элементов которые расположены между максимальным и минимальным элементами массива.Массив задан Рандомом
Найти сумму элементов которые расположены между максимальным и минимальным элементами...

Составить программу,которая вычисляет сумму элементов массива, которые расположены между максимальным и минимальным элементами.
Составить программу,которая вычисляет сумму элементов неупорядоченного целочисленного массива М,...

Элементы массива, находящиеся между минимальным и максимальным элементом.
Написать программу, которая формирует новый массив, элементами которого являются элементы исходного...

Обнулить элементы массива между минимальным и максимальным его элементом
Дан массив размера N, обнулить элементы массива между минимальным и максимальным его элементом (не...


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

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

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