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

Количество элементов, которые стоят между отрицательными числами

04.11.2018, 17:42. Показов 464. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть кусок кода:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var
  L : tList;
  i : byte;
begin
  clrscr;
  CreateLst(L);
  writeln('List L:');
  PrintLst(L);
  OutBack(L,i);
  if i = 0 then writeln('Number not found.');
  readln;
end.
Строка OutBack(L,i); выводит элементы, которые стоят между отрицательными числами. Как изменить код, чтобы выводились не сами элементы, а их количество?
Вот весь код программы:
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
uses
  crt;
type
  TInf = integer;
  pNode = ^Node;
  Node = record
  Inf : TInf;
  Prev, Next : pNode;
  end;
  tList = record
  First, Last : pNode;
  end;
procedure InitLst(var aL : tList);
begin
  aL.First := nil; aL.Last := nil;
end;
procedure AddLst(var aL : tList; const aInf : TInf);
begin
  If aL.First = nil then begin
     New(aL.First);
     aL.First^.Next := nil; aL.First^.Prev := nil;
     aL.First^.Inf := aInf;
     aL.Last := aL.First;
  end else begin
     New(aL.Last^.Next);
     aL.Last^.Next^.Prev := aL.Last;
     aL.Last := aL.Last^.Next;
     aL.Last^.Prev^.Next := aL.Last;
     aL.Last^.Inf := aInf;
  end;
end;
procedure CreateLst(var aL : tList);
var c : char; a : TInf;
begin
  InitLst(aL);
  writeln('Esc - end of input, Any key - continue input.');
  repeat
   write('Value of element:'); readln(a);
   AddLst(aL,a);
   write('Esc/Any key?'); c := readkey; write(#13); 
  until c=#27;
  writeln('Input finished.');
end;
procedure PrintLst(aL : tList);
begin
  If aL.First = nil then begin
     writeln('Empty List.');
     exit;
  end;
  while aL.First <> nil do begin
     write(aL.First^.Inf:5);
     aL.First := aL.First^.Next;
  end;
  writeln;
end;
procedure OutBack(aL : tList; var i : byte);
var p : pNode;
begin
  If aL.First = nil then exit
  else If aL.First^.Next = nil then exit
  else If aL.First^.Next^.Next = nil then begin
    aL.First := aL.First^.Next;
    OutBack(aL,i);
  end else If (aL.First^.Inf < 0) and (aL.First^.Next^.Inf>0) and (aL.First^.Next^.Next^.Inf<0) then begin
    p := aL.First^.Next;
    aL.First := aL.First^.Next^.Next;
    OutBack(aL,i);
    write(p^.Inf:5);
    i := 1;
  end else begin
    aL.First := aL.First^.Next;
    OutBack(aL,i);
  end;
end;
var
  L : tList;
  i : byte;
begin
  clrscr;
  CreateLst(L);
  writeln('List L:');
  PrintLst(L);
  OutBack(L,i);
  if i = 0 then writeln('Number not found.');
  readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2018, 17:42
Ответы с готовыми решениями:

Найти количество пар элементов, которые стоят рядом и равны между собой
Такая тема надо решить задачу помогит пожалуйста. &quot;Найти количество пар елементов, которые стоят...

Массивы: найти сумму чётных элементов между первым и последним отрицательными числами
Всем привет. Есть задачка, но в коде что-то не то получается. Помогите составить программу,...

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

Дописать код по нахождению элементов матрицы которые стоят в интервале между ср. геометрическим и ср. арифметическим
Пожалуйста помогите составить программу, находящую в матрице D(m, n), все элементы, модуль которых...

3
0 / 0 / 0
Регистрация: 12.05.2018
Сообщений: 77
06.11.2018, 00:07 2
Добавь переменную k,приравняй нулю, добавь строчку k:=k+1 в цикл поиска элементов между отрицательными числами
0
0 / 2 / 0
Регистрация: 28.10.2018
Сообщений: 77
06.11.2018, 11:59  [ТС] 3
Проблема в том, что не знаю как обратиться к каждому отрицательному числу, чтобы создать такой счетчик.
0
0 / 2 / 0
Регистрация: 28.10.2018
Сообщений: 77
07.11.2018, 16:59  [ТС] 4
Изменить код так, чтобы выводило количество чисел, стоящих между отрицательными, а не сами числа.

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
uses
  crt;
type
  TInf = integer;
  pNode = ^Node;
  Node = record
  Inf : TInf;
  Prev, Next : pNode;
  end;
  tList = record
  First, Last : pNode;
  end;
procedure InitLst(var aL : tList);
begin
  aL.First := nil; aL.Last := nil;
end;
procedure AddLst(var aL : tList; const aInf : TInf);
begin
  If aL.First = nil then begin
     New(aL.First);
     aL.First^.Next := nil; aL.First^.Prev := nil;
     aL.First^.Inf := aInf;
     aL.Last := aL.First;
  end else begin
     New(aL.Last^.Next);
     aL.Last^.Next^.Prev := aL.Last;
     aL.Last := aL.Last^.Next;
     aL.Last^.Prev^.Next := aL.Last;
     aL.Last^.Inf := aInf;
  end;
end;
procedure CreateLst(var aL : tList);
var c : char; a : TInf;
begin
  InitLst(aL);
  writeln('Esc - end of input, Any key - continue input.');
  repeat
   write('Value of element:'); readln(a);
   AddLst(aL,a);
   write('Esc/Any key?'); c := readkey; write(#13); 
  until c=#27;
  writeln('Input finished.');
end;
procedure PrintLst(aL : tList);
begin
  If aL.First = nil then begin
     writeln('Empty List.');
     exit;
  end;
  while aL.First <> nil do begin
     write(aL.First^.Inf:5);
     aL.First := aL.First^.Next;
  end;
  writeln;
end;
procedure OutBack(aL : tList; var i : byte);
var p : pNode;
begin
  If aL.First = nil then exit
  else If aL.First^.Next = nil then exit
  else If aL.First^.Next^.Next = nil then begin
    aL.First := aL.First^.Next;
    OutBack(aL,i);
  end else If (aL.First^.Inf < 0) and (aL.First^.Next^.Inf>0) and (aL.First^.Next^.Next^.Inf<0) then begin
    p := aL.First^.Next;
    aL.First := aL.First^.Next^.Next;
    OutBack(aL,i);
    write(p^.Inf:5);
    i := 1;
  end else begin
    aL.First := aL.First^.Next;
    OutBack(aL,i);
  end;
end;
var
  L : tList;
  i : byte;
begin
  clrscr;
  CreateLst(L);
  writeln('List L:');
  PrintLst(L);
  OutBack(L,i);
  if i = 0 then writeln('Number not found.');
  readln;
end.
0
07.11.2018, 16:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2018, 16:59
Помогаю со студенческими работами здесь

Найдите количество положительных элементов, которые стоят на нечетных местах
Program P9; Uses Crt; Type Mas = array of integer; Var V : Mas; { переменная V типа массив }...

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

Подсчитать количество отрицательных элементов массива, которые стоят на четных местах
Помогите решить задачу, заранее благодарен) Дан одномерный массив C, элементы которого...

Подсчитать количество отрицательных элементов массива, которые стоят на четных местах в массиве
Помогите решить задачу, заранее благодарен) Дан одномерный массив C, элементы которого...

Вычислить сумму и количество элементов массива, стоящих между двумя отрицательными элементами
Дан массив из 10 элементов. Вычислить сумму и количество элементов, стоящих между двумя...

Массивы. Сформировать, определить максимальный элемент и подсчитать количество элементов, которые стоят после максимального
Введите с клавиатуры одномерный массив T(B), элементами которого являются положительные и...


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

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