Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
xq
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 321
#1

Дан файл из целых чисел. Используя очередь напечатать сначала все отрицательные числа, затем все положительные - Delphi

31.05.2015, 23:49. Просмотров 524. Ответов 9
Метки нет (Все метки)

Дан файл из целых чисел. Используя очередь, за один просмотр файла напечатать сначала все отрицательные числа, затем все положительные числа, сохраняя исходный порядок в каждой группе.
Спасибо
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2015, 23:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дан файл из целых чисел. Используя очередь напечатать сначала все отрицательные числа, затем все положительные (Delphi):

Используя очередь, напечатать сначала все отрицательные числа,затем все положительные числа - Delphi
Дан файл из целых чисел. Используя очередь,за один просмотр файла напечатать сначала все отрицательные числа, затем все положительные...

Вывести сначала все положительные числа массива, затем – все отрицательные - Delphi
Помогите пожалуйста с 2-мя задачками. и если можно объяснить примерно как сделали 1)Дан массив из 20 чисел. Вывести на экран...

Вывести на экран сначала все отрицательные числа, а затем все положительные - Delphi
Дан одномерный массив a1, a2,..,an состоящий из вещественных чисел. Вывести на экран сначала все отрицательные числа, а затем все...

Записать в массив сначала все отрицательные числа и нули, затем все положительные - Delphi
Всем привет! Есть тут кто в Delphi программирует?

Преобразование массива по правилу: сначала - все положительные, затем все отрицательные числа - Delphi
Добрый день. Моя программа преобразует введенную пользователем последовательность в последовательность по правилу: сначала - все...

Записать в массив сначала все отрицательные числа и нули, затем все положительные - Delphi
помогите пожалуйста с решением задачи :Дан массив вещественных чисел, содержащий 15 элементов, записать в этот же массив сначала все...

9
Aksinia
2 / 2 / 1
Регистрация: 14.12.2013
Сообщений: 39
01.06.2015, 00:44 #2
1.Считываем все числа в очередь.
2.Идем с головы очереди: если число отрицательное, то выводим на экран и удаляем элемент из очереди(не забываем переставить ссылки), если нет- пропускаем и идем по очереди дальше.
3. Второй обход очереди - опять начинаем с головы. Выписываем все оставшиеся в очереди элементы(как раз остались только положительные числа).
0
xq
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 321
01.06.2015, 01:42  [ТС] #3
мне бы все это в виде кода. я же поэтому и создал тему
0
Verevkin
163 / 212 / 48
Регистрация: 12.03.2015
Сообщений: 1,799
01.06.2015, 02:03 #4
покажи исходный файл.
0
Aksinia
2 / 2 / 1
Регистрация: 14.12.2013
Сообщений: 39
01.06.2015, 02:06 #5
Ну Вы хотя бы что-нибудь напишите, ошибетесь - поправим
0
xq
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 321
01.06.2015, 03:14  [ТС] #6
Цитата Сообщение от Aksinia Посмотреть сообщение
Ну Вы хотя бы что-нибудь напишите, ошибетесь - поправим
ну у меня есть со стеком. если сможете под очередь переделать

Delphi
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
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
type
  TData = Integer;
  TPElem = ^TElem;
  TElem = record
    Data : TData;
    PNext : TPElem;
  end;
  TQueue = record
    PFirst, PLast : TPElem;
  end;
procedure Init(var aQ : TQueue);
begin
  aQ.PFirst := nil;
  aQ.PLast := nil;
end;
 
 
procedure Push(var aQ : TQueue; const aData : TData);
var
  P : TPElem;
begin
  New(P);
  P^.Data := aData;
  P^.PNext := nil;
  if aQ.PFirst = nil then
    aQ.PFirst := P
  else
    aQ.PLast^.PNext := P;
  aQ.PLast := P;
end;
 
 
function Pop(var aQ : TQueue; var aData : TData) : Boolean;
var
  P : TPElem;
begin
  Result := False;
  P := aQ.PFirst;
  if P <> nil then
  begin
    aData := P^.Data;
    aQ.PFirst := P^.PNext;
    if aQ.PFirst = nil then
      Init(aQ);
    Dispose(P);
    Result := True;
  end;
end;
 
procedure QFree(var aQ : TQueue);
var
  Data : TData;
begin
  while Pop(aQ, Data) do;
end;
 
const
  FName = 'file.txt';
var
  F : TextFile;
  Q : TQueue;
  Data : TData;
  i : Integer;
  S : String;
begin
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  Init(Q);
  AssignFile(F, ExtractFilePath(ParamStr(0)) + FName);
 
  repeat
    Writeln('--------------------------------------------------');
    Writeln('v file zapisani chisla');
    Rewrite(F);
    Randomize;
        for i := 1 to 15 do
    begin
      Data := Random(19) - 9;
      Writeln(F, Data);
      Write(Data, ' ');
    end;
    Writeln;
 
    Writeln('snachalo ontric, potom poloj:');
    Reset(F);
    while not Eof(F) do
    begin
      Read(F, Data);
      if Data < 0 then
        Write(Data, ' ')
      else if Data > 0 then
        Push(Q, Data);
    end;
    CloseFile(F);
 
 
    while Pop(Q, Data) do
      Write(Data, ' ');
    Writeln;
    QFree(Q);
    Writeln('-----');
    Writeln('pam9t osvobojdena.');
 
    Write('povtorit - Enter, exit - luboi simbol + Enter. ');
    Readln(S);
  until S <> '';
end.
0
Mawrat
12789 / 5696 / 672
Регистрация: 19.09.2009
Сообщений: 8,838
01.06.2015, 11:38 #7
xq, это и есть решение с очередью, а не со стеком. По этой теме же уже приняли решение: Используя очередь, напечатать сначала все отрицательные числа,затем все положительные числа. Там чётко говорится, что решение с использованием очереди.
0
xq
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 321
01.06.2015, 12:44  [ТС] #8
Цитата Сообщение от Mawrat Посмотреть сообщение
это и есть решение с очередью, а не со стеком.
однако преподаватель сказал что это вовсе не очередь.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24020 / 16001 / 4843
Регистрация: 22.10.2011
Сообщений: 28,322
Записей в блоге: 5
01.06.2015, 13:03 #9
То, что процедуры называются Push и Pop еще не делает структуру стеком. Это именно очередь. И если твой преподаватель этого не признает, либо ему вообще бесполезно что-то объяснять, т.к. он просто ничего не знает, либо он тебя просто хочет завалить. Причин может быть много.
1
Mawrat
12789 / 5696 / 672
Регистрация: 19.09.2009
Сообщений: 8,838
01.06.2015, 13:08 #10
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от xq Посмотреть сообщение
однако преподаватель сказал что это вовсе не очередь.
Значит он ошибся. Код лень ему было смотреть, а комменты к процедурам стёрты. Надо тогда ему самостоятельно сказать то, что написано в комментах к процедурам:
Delphi
1
2
3
4
5
6
7
8
//Добавление элемента в конец очереди.
procedure Push(var aQ : TQueue; const aData : TData);
 
{Изъятие элемента из начала очереди. Если очередь не пустая, то
из начала очереди извлекается элемент и его значение возвращается
через параметр aData. В этом случае функция возвращает True.
Если очередь пустая, то операция отменяется и функция возвращает False.}
function Pop(var aQ : TQueue; var aData : TData) : Boolean;
1
01.06.2015, 13:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2015, 13:08
Привет! Вот еще темы с ответами:

Получить новый файл, записав в него сначала все положительные, а затем все отрицательные компоненты исходного - Delphi
Уважаемые форумчане,выручайте!!! Прошу вас помочь в таком не легком для меня задании: Дан файл вещественных чисел. Получить новый файл,...

*. В файле из вещественных чисел переставить элементы таким образом, чтобы сначала были записаны все положительные, затем все отрицательные, а потом - Delphi
Помогите с задачей! Видел подобное решение в нижестоящей теме но оно слишком сложное желательно решить БЕЗ использование процедур и...

Записать массив, сначала все отрицательные числа и нули затем положительные - Delphi
Дан одномерный массив целых чисел. Записать этот же массив, сначала все отрицательные числа и нули затем положительные, сохраняя порядок их...

Массив: переставить элементы таким образом, чтобы сначала были записаны все положительные, затем все отрицательные, а потом все нули. - Delphi
Здравствуйте! помогите пожалуйста с задачей по информатике. Буду очень благодарна) В массиве из вещественных чисел переставить...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru