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

Почему неправильно работает сортировка?

27.06.2015, 19:54. Показов 460. Ответов 2
Метки нет (Все метки)

сортировка:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for i := 1 to n-1 do begin
    if gruppa1[i].grupa>gruppa1[i+1].grupa then 
    begin
       k:=gruppa1[i].grupa;
       a:=gruppa1[i].fio;
       b:=gruppa1[i].ballinf;
       c:=gruppa1[i].ballinoz;
       d:=gruppa1[i].ballekoteor;
       gruppa1[i].grupa:=gruppa1[i+1].grupa;
       gruppa1[i].fio:=gruppa1[i+1].fio;
       gruppa1[i].ballinf:=gruppa1[i+1].ballinf;
       gruppa1[i].ballinoz:=gruppa1[i+1].ballinoz;
       gruppa1[i].ballekoteor:=gruppa1[i+1].ballekoteor;
       gruppa1[i+1].grupa:=k;
       gruppa1[i+1].fio:=a;
       gruppa1[i+1].ballinf:=b;
       gruppa1[i+1].ballinoz:=c;
       gruppa1[i+1].ballekoteor:=d;
       end;  
    end;
проходит только раз по первым двум значениям, дальше не идет.

программа полностью
Кликните здесь для просмотра всего текста
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
uses crt;
const n=5;
type
 gruppa=record
        fio: string;
        ballinf,ballinoz,ballekoteor: real;
        grupa: string[5];
        end;
var
 gruppa1: array[1..n] of gruppa;
 i:integer;
 k1:integer;
 a:string;
 b,c,d:real;
 k:string;
 sum:real;
 
begin
for i:=1 to n do
 begin
  with gruppa1[i] do
   begin
    writeln('Введіть ПІБ: ');
    readln(fio);
    writeln('Введіть групу');
    readln(grupa);
    writeln('Введіть бал з інформатики');
    readln(ballinf);
    writeln('Введіть бал з іноземної мови');
    readln(ballinoz);
    writeln('Ведіть бал з економічної теорії');
    readln(ballekoteor);
    
   end;
 end;
 for i := 1 to n-1 do begin
    if gruppa1[i].grupa>gruppa1[i+1].grupa then 
    begin
       k:=gruppa1[i].grupa;
       a:=gruppa1[i].fio;
       b:=gruppa1[i].ballinf;
       c:=gruppa1[i].ballinoz;
       d:=gruppa1[i].ballekoteor;
       gruppa1[i].grupa:=gruppa1[i+1].grupa;
       gruppa1[i].fio:=gruppa1[i+1].fio;
       gruppa1[i].ballinf:=gruppa1[i+1].ballinf;
       gruppa1[i].ballinoz:=gruppa1[i+1].ballinoz;
       gruppa1[i].ballekoteor:=gruppa1[i+1].ballekoteor;
       gruppa1[i+1].grupa:=k;
       gruppa1[i+1].fio:=a;
       gruppa1[i+1].ballinf:=b;
       gruppa1[i+1].ballinoz:=c;
       gruppa1[i+1].ballekoteor:=d;
       end;  
    end;
Writeln('Таблиця');
Writeln('--------------------------------------------------------------------');
Writeln('||', 'ПІБ':50,'|', 'Інформатика':12,'|','Іноземна мова':14,'|', 'Економічна теорія':18 ,'|','Група':5,'||');
Writeln('--------------------------------------------------------------------');
for i:=1 to n do
Writeln('||',gruppa1[i].fio:50,'|',gruppa1[i].ballinf:12,'|',gruppa1[i].ballinoz:14,'|',gruppa1[i].ballekoteor:18,'|',gruppa1[i].grupa:5,'||');
writeln('--------------------------------------------------------------------');
readln;
begin
 for i:=1 to n do
                    if gruppa1[i].grupa='104' then
                        begin
                            sum:=gruppa1[i].ballinf+gruppa1[i].ballinoz+gruppa1[i].ballekoteor;
                            inc(k1)
                        end;
                if k1<>0 then sum:=sum/k1;
                writeln ('Cредний балл в групі 104=',sum)
            end;
end.


Добавлено через 33 минуты
Ответ
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2015, 19:54
Ответы с готовыми решениями:

Сортировка неправильно работает
сортировке первых 5-ти чисел по возрастанию меняет первый и последний элементы : program...

Не могу понять, почему программа работает неправильно( Знаю, что где-то ошибки, но не могу найти
{Ввести последовательность натуральных чисел Aj j=1...n (n&lt;=1000). Упорядочить последовательность...

Почему неправильно работает удаление символов из строки?
const g=; var s : string; i : integer; d : integer; begin readln (s); d := length (s);...

Почему смена текста работает только один раз? Что неправильно в коде и почему?
Нужно чтобы при щелчке мыши на поверхности кнопки текст метки Label изменялся на текст окна...

2
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
27.06.2015, 19:57 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var
    temp: Gruppa;
 
    for i := n - 1 downto 1 do
        for j := 1 to i do
            if (gruppa1[j].grupa > gruppa1[j + 1].grupa)
            then
            begin
                temp := gruppa1[j];
                gruppa1[j] := gruppa1[j + 1];
                gruppa1[j + 1] := temp;
            end;
0
Почетный модератор
64271 / 47570 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
27.06.2015, 19:59 3
Что, одной темы мало?
Сортировка по группе
Смотри, добалуешься...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2015, 19:59
Помогаю со студенческими работами здесь

Неправильно работает сортировка
Задание на сортировку четных элементов по убыванию, отрицательных по возрастанию Где ошибка в...

Сортировка работает неправильно
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; int main() {...

Неправильно работает сортировка
сортирует только первый столбец. в чём беда? заранее спасибо #include &quot;stdafx.h&quot; #include...

Строка: Почему else неправильно работает?
Почему else неправильно работает? Выдаёт закарючку X=strlen(x)-1; Y=strlen(y)-1; k...


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

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

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