С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
3 / 3 / 1
Регистрация: 09.04.2017
Сообщений: 290

Выводит только первый элемент после сортировки и добавления в список

30.05.2017, 20:35. Показов 689. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
program pr3;
 type och=^s;
      s=record
      inf:integer;
      link:och;
 end;
 const n=8;
 var a:array[1..n] of integer;
     begl,endl,p:och;
     i,b,max,imax,j:integer;
 begin
 
  begl:=nil; endl:=nil;
  new(p);
  writeln('Vvedite chislo');
  readln(p^.inf);
  a[1]:=p^.inf;
  p^.link:=nil;
  begl:=p; endl:=p;
  
  for i:=2 to n do
   begin
    new(p);
    writeln('Vvedite chislo');
    readln(p^.inf);
    a[i]:=p^.inf;
    p^.link:=nil;
    endl^.link:=p;
    endl:=p;
   end;
   
  for i:=1 to n do
   if i mod 2 = 0 then
    begin
     max:=a[i];
     imax:=i;
     for j:=i+1 to n-1 do
      if a[j]>max then
       begin
        max:=a[j];
        imax:=j;
       end;
 
     a[imax]:=a[i];
     a[i]:=max;
    end;
    
  for i:=1 to n do
   begin
    new(p);
    p^.inf:=a[i];
    p^.link:=nil;
    endl^.link:=p;
    endl:=p;
   end;
 
  while p<>nil do
   begin
    write(p^.inf:3);
    p:=p^.link;
   end;
 
 end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.05.2017, 20:35
Ответы с готовыми решениями:

Как исправить ошибку, выводит только первый элемент после сортировки?
using System; using System.Collections.Generic; using System.Linq; namespace Class { class Pet { public...

Выводит только первый элемент массива символов
Потом вместо каждого символа выводит что-то вроде |for (int i = 0; i &lt; 100; i++) { printf(&quot;%c\n&quot;, fault); }

Проверить, что список L получается после добавления X на N-е место в список V
Здравствуйте, помогите пожалуйста написать программу на SWI Prolog. Вот само задание: Напишите предикат p(+X, +N, +V, ?L) - истинный...

8
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
02.06.2017, 19:38
У вас p на последний элемент указывает, его один и выводит.
0
3 / 3 / 1
Регистрация: 09.04.2017
Сообщений: 290
03.06.2017, 21:55  [ТС]
а как сделать так, что бы нормально выводило?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
04.06.2017, 00:55
Если закрыть глаза на прочий бред, то
Pascal
56
  p:=begl;
И не надо спрашивать, как правильно -- как в задании, так и правильно. Только вот хрустальный шар запотел изнутри, текст расплывается.
0
3 / 3 / 1
Регистрация: 09.04.2017
Сообщений: 290
04.06.2017, 16:00  [ТС]
bormant, в задании сказано отсортировать все элементы с парными индексами односвязного списка по убыванию.

не могли бы вы мне с этом заданием помочь?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
05.06.2017, 14:32
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
type
  pnode = ^node;
  node = record
    inf: integer;
    next: pnode;
  end;
 
const
  n = 5;
 
var
  list: pnode;
  tail: pnode;
  p, q, max: pnode;
  i: integer;
 
begin
  { Заполняем список }
  list := nil;
  for i := 1 to n do
  begin
    new(p);
    writeln('введите число:');
    readln(p^.inf);
    
    p^.next := nil;
    if list = nil then list := p
    else tail^.next := p;
    tail := p;
  end;
  
  { Выводим его }
  p := list;
  writeln('исходный список');
  while p <> nil do
  begin
    write(p^.inf:5);
    p := p^.next;
  end;
  writeln;
  
  { Упорядочиваем элементы списка с четными номерами (начиная с 1-цы) по убыванию }
  { методом последовательного поиска минимума (в нашем случае - максимума) }
  if (list = nil) or (list^.next = nil) then writeln('нечего сортировать') else
  begin
    q := list^.next; { это указатель на элемент, куда будет записан максимум на данной итерации }
    while (q <> nil) and (q^.next <> nil) do
    begin
      p := q; max := q; { и внутренний цикл, от элемента, на который указывает q, до конца списка }
      while (p <> nil) and (p^.next <> nil) do
      begin
        p := p^.next^.next; { перепрыгиваем через 1 элемент, потому что нужны только четные номера }
        if (p <> nil) and (p^.inf > max^.inf) then max := p;
      end;
      i := max^.inf; max^.inf := q^.inf; q^.inf := i; { меняем значения элементов q и max}
      q := q^.next^.next; { и уходим на следующую итерацию: продвигаем q на следующий четный номер }
    end;
  end;
  
  { Вот и все, печатаем результат }
  p := list;
  writeln('отсортированный список');
  while p <> nil do
  begin
    write(p^.inf:5);
    p := p^.next;
  end;
  writeln;
 
  { Все, что осталось - это удалить выделенную память. Это самостоятельно доделай }
end.
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
05.06.2017, 21:29
volvo,
заполнять список можно чуть проще:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var t: ^PNode;
 
  { Заполняем список }
  t:=@list;
  for i := 1 to n do
  begin
    New(t^);
    Write('число: ');
    Read(t^^.inf);
    t:=@t^^.next;
  end;
  t^^.next:=nil;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
05.06.2017, 22:36
Цитата Сообщение от bormant Посмотреть сообщение
t^.next:=nil;
нужно 2 разыменования. Вот видишь, насколько просто тут ошибиться Я уж по старинке заполняю, зато сразу понятно, что куда назначается.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
06.06.2017, 15:40
volvo,
угу, два. Можно и по старинке:
Pascal
1
2
3
4
5
6
7
  New(list); p:=list;
  Write('число: '); Read(p^.inf);
  for i:=2 to n do begin
    New(p^.next); p:=p^.next;
    Write('число: '); Read(p^.inf);
  end;
  p^.next:=nil;
Добавлено через 16 часов 26 минут
PS. Выше исправил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.06.2017, 15:40
Помогаю со студенческими работами здесь

Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки
Есть вектор(STL) элементов. У меня есть указатель на определенный элемент. Я хочу сделать так, чтобы после сортировки этого вектора...

Вставить первый столбец после столбца, в котором находится первый встреченный элемент А
Подскажите как Вставить первый столбец после столбца, в котором находится первый встреченный элемент. Встреченный элемент а. Столбцы не...

Не выводит первый элемент массива
делаю запрос один и тот же в базе и из php, в базе есть клиент, а если через php его нет, по сортировке он первый стоит в базе, как его...

Не выводит русский после сортировки
Не выводит русский маршрутов после сортировки #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; // Структура...

Почему выводит не первый повторяющияся элемент?
Написать функцию для поиска первого повторяющиегося элемента #include &lt;iostream&gt; #include &lt;string&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru