Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 17.11.2010
Сообщений: 32
1

Список ( всё готово, одна загвоздка есть! )

27.02.2011, 15:06. Показов 487. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Есть задание и готовая ( почти ) программа. Она работает, нехватает только поправки в процедуре сортировки.
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
Program  spisok;
uses crt;
Type
zapdin=^zap;
zap=record
ukaz: zapdin;
info:integer;
end;
 
Var
zapr: zapdin;
zapg: zapdin;
n: integer;
zapis: zapdin;
 
 
procedure sortbubble(var zap1: zapdin);
 
Var
zapt: zapdin;
zapt1: zapdin;
n: integer;
 
Begin
zapt:= zap1;
  while zapt^.ukaz <> nil do
   begin
    zapt1:= zapt^.ukaz;
            while zapt1 <> nil do
             begin
                   If zapt^.info < zapt1^.info then
                       begin
                        n:= zapt^.info;
                        zapt^.info:= zapt1^.info;
                        zapt1^.info:= n;
                        end;
                   zapt1:= zapt1^.ukaz;
             end;
            zapt:= zapt^.ukaz;
   end;
end;  
 
 
Procedure Ochered ( var zap1:zapdin);
var
n:integer;
zapP,zapT:zapDin;
c:char;
Begin
     writeln ('Будем ли создавать очередь? y/n ');
     read(c);
     if c='y' then
     begin
     if c='n' then
        zap1:=nil
                 else
                     begin
                     new(zapT);
                     zap1:=ZapT;
                                repeat
                                writeln ('Введите числа: ');
                                read(n);
                                ZapP:=ZapT;
                                new(ZapT);
                                zapP^.ukaz:=ZapT;
                                ZapP^.info:=n;
                                writeln('Продолжить? y/n');
                                read(c);
                                until c='n';
                     zapP^.ukaz:=nil;
                 Dispose(ZapT);
                      end;
end;         
 
end;
 
 
Procedure print(zap1:zapdin);
var zapt:zapdin;
begin
     if zap1=nil then
     writeln('Список пуст')
     else
         begin
              zapt:=zap1;
              while zapt <>nil do
                    begin
                    write(zapt^.info:7); 
                    zapt:=zapt^.ukaz;
                    end;
                    writeln;
         end;
end; 
 
procedure srarifm(var zap1:zapdin);
 
Var
zapt: zapdin;
zapt1: zapdin;
n,i: integer;
sum:real;
kol:integer;
sr:real;
curr,pred:zapdin;
 
Begin
sum:=0;
n:=1;
zapt:= zap1;
zapt1:= zapt^.ukaz;
sum:=zapt^.info;
  while zapt^.ukaz <> nil do
   begin
    zapt1:= zapt^.ukaz;
            while zapt1 <> nil do
             begin
 
 
                   zapt1:= zapt1^.ukaz;
             end;
 
            zapt:= zapt^.ukaz;
      begin
                        sum:=sum+zapt^.info;
                        n:=n+1;
                        end;
   end;
   sum:=sum/n;
   write('Среднее арифметическое чисел: ',sum);
   
 
             begin
                   curr:=zap1;
                   pred:=zap1;
                   while curr <> nil do
                         If curr^.info > sum then
                            if curr=zap1 then
                                    begin
                                      curr:=curr^.ukaz;
                                      dispose(zap1);
                                      zap1:=curr;
                                      pred:=curr;
                                    end
                                        else
                                        begin
                                        pred^.ukaz:=curr^.ukaz;
                                        dispose(curr);
                                        curr:=pred^.ukaz;
                                        end
                                         else
                              begin
                                   pred:=curr;
                                   curr:=curr^.ukaz;
                              end;
 
               end;
            end;
 
 
 
 
 
 
 
Begin
 
 
 ochered (zapis);
 print (zapis);
 srarifm (zapis);
 print (zapis);
 sortbubble  (zapis);
 print (zapis);
 writeln;
 writeln;
 
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2011, 15:06
Ответы с готовыми решениями:

Дана строка. В ней есть одна открывающая и одна закрывающая скобка. Вывести на экран все символы, расположенные между ними
Дана строка.В ней есть одна открывающаяся скобка и одна закрывающаяся скобка.Вывести на экран все...

Сформировать список всех студентов, у которых есть хотя бы одна двойка
дан список студентов , размер стипендии и оценки по трем предметам(произвольные все) надо...

Все хорошо, но есть одна проблема, мучуюсь уже месяц.
Короче, в опшионсах стоят все галки на подтверждение (General/Confirmation), а он все равно...

Удалить все строки, в которых есть хотя бы одна цифра
С массива строк нужно удалить все строки, в которых есть хотя бы одна цифра. Помогите пожалуйста

0
27.02.2011, 15:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2011, 15:06
Помогаю со студенческими работами здесь

Найти и вывести все слова текста, в которых есть хотя бы одна цифра
Дана последовательность символов. Найти и вывести все слова текста, в которых есть хотя бы одна...

Заменить в тексте все слова, в которых есть хоть одна цифра, на звездочки
Помогите! Задание такое: заменить в тексте все слова в которых есть хоть одна цифра на звездочки)

Условия столкновения с платформой. Всё работает идеально, если есть только платформа - одна
Имеется список объектов (я добавил две платформы): List&lt;Platform&gt; platforms = new...

Перенести все строки, в которых есть хоть одна пустая ячейка на другой лист
Есть список студентов в Excel их 4097, если хоть одна ячейка в строке пустая нужно перенести всю...


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

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