Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 55
1

Очередь (массив)

15.09.2010, 15:07. Показов 4522. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужна помощь в решении задачи.

За один просмотр файла f типа real и без использования дополнительных файлов напечатать элементы файла f в следующем порядке : сначала - все числа, меньше a, затем - все числа из отрезка [a, b], и наконец - все остальные числа, сохраняя исходный взаимный порядок в каждой из этих групп чисел (a, b – заданы, a < b)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.09.2010, 15:07
Ответы с готовыми решениями:

Как переделать очередь основанную на массиве в циклическую очередь
Как переделать очередь основанную на массиве в циклическую очередь? Тут кое-какие попытки. Беда с...

Основные операции: вставить, удалить эл. из очереди, просмотреть первый эл., удалить очередь и напечатать очередь.
Динамические структуры данных, обчная очередь. Основные операции: вставить, удалить эл. из очереди,...

Массив: Создать очередь, содержащую данные числа, и вывести указатели на начало и конец очереди
Помогите пожалуйста решить такую задачу... Нашёл решенную на TP, но хоть на TP, хоть на ABC у меня...

Сформировать односвязную очередь из элементов, которые входят в очередь Q1, но не входят в очередь Q2
Составить программу обработки динамической структуры данных: сформировать односвязную очередь Q из...

39
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,182
15.09.2010, 15:09 2
Очередь (массив)
Еще короче нельзя?
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 5
15.09.2010, 15:26 3
Бери 3 массива и соответствующие условия записывай в соответствующий массив
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 55
15.09.2010, 15:32  [ТС] 4
А как реализовать это: все числа из отрезка [a, b]
0
Студент
119 / 114 / 16
Регистрация: 14.08.2010
Сообщений: 673
15.09.2010, 15:35 5
Цитата Сообщение от papalamer Посмотреть сообщение
А как реализовать это: все числа из отрезка [a, b]
сделать проверку принадлежности....находятся они типо в одном интервале, через if можно!
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,182
15.09.2010, 15:35 6
Pascal
1
2
3
4
5
6
read(f,x);
if (x>=a)and(x<=b) then
 begin
  k:=k+1;
  b[k]:=x;
 end;
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 55
16.09.2010, 09:36  [ТС] 7
Спасибо.

Добавлено через 17 часов 58 минут
Что-то не выходит у меня. Что не так?
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
Program Lr4;
Uses
   crt;
Const
   n = 20; a = 8; b =12;
Type
   FR = file of integer;
   mass = array [1..n] of integer;
Var
   f : FR;
   less_a, ab, ost : mass;
   y,i,first_a, last_a : integer;
Begin
   ClrScr;
   assign (f, 'd:digit.dat');
   reset(f);
      for i:=0 to n do
      while not Eof(f) do read(f, y);
         if y < a then
             begin
               i:=i+1;
               less_a[i] := y;
            end
            { else
               if (y>=a) and (y<=b) then
                  begin
                     i:=i+1;
                     ab[i]:=y;
                  end
                  else
                     if (y>a) and (not((y>=a) and (y<=b))) then
                        begin
                           i:=i+1;
                           ost[i]:=y;
                        end};
    Writeln('less_a: ');
        for i:=1 to n do
        Write(less_a[i],'  ');
        Readln;
    
   close(f);
   end.
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,182
16.09.2010, 09:50 8
papalamer, Тебе же написали, сделай три массива, в первый пиши меньше а, во второй от а до b в третий больше b, потом выведи их по порядку.
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 55
16.09.2010, 09:56  [ТС] 9
Сделал 3 массива {два закоментировал } и вывел 1. В файле числа от 1 до 20. Из массива только нули читает.
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,182
16.09.2010, 10:13 10
У вас вообще-то есть файл, заполненный числами?
И потом что это за конструкция?
Pascal
1
2
3
reset(f);
      for i:=0 to n do
      while not Eof(f) do read(f, y);
Нужно либо от 1 до n, если знаете сколько чисел в файле и использовать seek(f,i-1);
или while not Eof(f), если не знаете.
У вас лучше так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
n1:=0;n2:=0;n3:=0
while not Eof(f) do
 begin
  read(f,y);
  if y<a then
   begin
    n1:=n1+1;
    m1[n1]:=y;
   end
  else if(y>b) then
   begin
    n3:=n3+1;
    m3[n3]:=y;
   end
  else
   begin
    n2:=n2+1;
    m2[n2]:=y;
   end;
 end;
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 55
16.09.2010, 10:52  [ТС] 11
Переделал, всё равно нули выводит.
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
Program Lr4;
Uses
   crt;
Const
   n = 20; a = 8; b =12;
Type
   FR = file of integer;
   mass = array [1..n] of integer;
Var
   f : FR;
   less_a, ab, ost : mass;
   y,i,k,l,m,first_a, last_a : integer;
Begin
   ClrScr;
   assign (f, 'd:\digit.dat');
   reset(f);
   k:=0;l:=0;m:=0;
      while not Eof(f) do read(f, y);
         if y < a then
             begin
               k:=k+1;
               less_a[k] := y;
            end
            { else
               if (y>=a) and (y<=b) then
                  begin
                     i:=i+1;
                     ab[i]:=y;
                  end
                  else
                     if (y>a) and (not((y>=a) and (y<=b))) then
                        begin
                           i:=i+1;
                           ost[i]:=y;
                        end};
    Writeln('less_a: ');
        for k:=1 to n do
        Write(less_a[к],'  ');
        Readln;
    
   close(f);
   end.
В файле числа от 1 до 20, считывается другой програмкой.
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,182
16.09.2010, 10:56 12
Так ты написал
Pascal
1
2
for k:=1 to n do
Write(less_a[к],' *');
Ты сам не видишь что ахинею пишешь? У тебя к-размер массива а, а ты его счетчиком сделал...
наверное нужно
Pascal
1
2
for i:=1 to k do
write(a[i],' ');
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 55
16.09.2010, 11:04  [ТС] 13
Поправил. Теперь выходит только less_a: и всё.
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,182
16.09.2010, 11:17 14
papalamer, Или включай мозг или завязывай с этим делом. Здесь не детский сад.
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 55
16.09.2010, 11:19  [ТС] 15
Я только учусь. Может подскажете куда обратиться?
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,182
16.09.2010, 11:45 16
Вот я пишу
Pascal
1
2
3
4
5
6
7
while not Eof(f) do
 begin
  read(f,y);
  if y<a then
   begin
.......................
  end;
А что вы пишете?
Pascal
1
2
3
 while not Eof(f) do read(f, y);
         if y < a then
             begin
куда девалась пара скобок begin...end;?

Добавлено через 3 минуты
потом
Pascal
1
2
3
4
5
l:=0;m:=0;//это вроде символы эль и эм, а дальше
if (y>=a) and (y<=b) then
                  begin
                     i:=i+1;//это вроде уже и не l и не m
                     ab[i]:=y;
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,182
16.09.2010, 11:52 17
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
Program Lr4;
Uses  crt;
Const  n = 20; a = 8; b =12;
Type  FR = file of integer;
      mass = array [1..n] of integer;
Var f : FR;
    less_a, ab, ost : mass;
   y,i,k,l,m,first_a, last_a : integer;
Begin
ClrScr;
assign (f, 'd:\digit.dat');
{следующие 4 строки вам не нужно, это я файл создавал для тестирования}
rewrite(f);
for i:=1 to n do
write(f,i);
close(f);
reset(f);
k:=0;l:=0;m:=0;
while not Eof(f) do
 begin
  read(f, y);
  if y < a then
   begin
    k:=k+1;
    less_a[k] := y;
   end
  else if (y>=a) and (y<=b) then
   begin
    l:=l+1;
    ab[l]:=y;
   end
  else
   begin
    m:=m+1;
    ost[m]:=y;
   end;
 end;
close(f);
Writeln('less_a: ');
for i:=1 to k do
Write(less_a[i],'  ');
writeln;
Writeln('ab: ');
for i:=1 to l do
Write(ab[i],'  ');
writeln;
Writeln('ost: ');
for i:=1 to m do
Write(ost[i],'  ');
Readln
end.
Вот результат.
А с отключенным мозгом учиться бесполезно, хоть где, даже на дворника...
Миниатюры
Очередь (массив)  
1
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 55
16.09.2010, 12:55  [ТС] 18
Спасибо большое. Но, похоже, вы тоже невнимательны, там перед else '{' стоит. И не надо злиться, я не думаю, что вы родились со знанием паскаля. А если я не туда попал, то подскажите на каком форуме можно детские вопросы задавать.
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,182
16.09.2010, 12:58 19
Детские вопросы можно и у нас задавать, только нужно вникать в ответы и не задавать те же вопросы еще раз. А еще хамить не нужно и огрызаться, это вы с протянутой рукой, а не я.
Кстати аватар смени, а то твоя внешность как то невольно с ним ассоциируется.
0
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 55
16.09.2010, 13:08  [ТС] 20
Я просмотрел нашу переписку и увидел, что хамите только вы. А на аватаре это я и есть. Спокойнее надо быть и про протянутую руку зря вы так. Ещё раз спасибо за помощь. Удачи.
0
16.09.2010, 13:08
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.09.2010, 13:08
Помогаю со студенческими работами здесь

Массив и очередь с приоритетом
Здравствуйте! Помогите, пожалуйста, найти информацию(или объясните принцип работы) о реализации...

Очередь через массив.
Здравствуйте. Помогите написать класс очереди при помощи массива. Очередь должна поддерживать...

Очередь как кольцевой массив
Очередь как кольцевой массив. Скопировать содержимое стека в очередь. Я в программирование не...

Очередь как кольцевой массив
Очередь как кольцевой массив. Скопировать содержимое стека в очередь. Помогите пожалуйста, я в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как запретить подсветку выделенного текста с помощью CSS
InfoMaster 20.01.2025
Подсветка текста при выделении является стандартным поведением браузера, которое не всегда соответствует дизайнерским решениям или функциональным требованиям веб-приложения. Выделение текста может. . .
Как выполнить другую программу или системную команду из Python
InfoMaster 20.01.2025
Python предоставляет мощные инструменты для выполнения системных команд и управления внешними процессами, что делает его идеальным выбором для автоматизации различных задач системного. . .
Как узнать директорию bash-скрипта из самого bash-скрипта
InfoMaster 20.01.2025
При разработке bash-скриптов одной из важных задач является определение директории, в которой находится исполняемый скрипт. Это критически важно для корректной работы с файлами, загрузки конфигураций. . .
В чем разница между let и var в JavaScript
InfoMaster 20.01.2025
JavaScript прошел длинный путь эволюции с момента своего создания в 1995 году. Одним из важнейших аспектов развития языка стало совершенствование механизмов объявления и управления переменными. . . .
Эффективная работа со строками в Go
InfoMaster 20.01.2025
Язык программирования Go предлагает уникальный подход к работе со строками, который существенно отличается от многих других языков программирования. В Go строки представляют собой неизменяемые. . .
Как проверить, что отображение (map) содержит ключ в Go
InfoMaster 20.01.2025
Отображения (maps) в языке программирования Go представляют собой мощные структуры данных, которые позволяют хранить пары ключ-значение и обеспечивают быстрый доступ к данным по уникальным. . .
Как организовать домашнее хранилище фильмов с общим доступом для всей семьи
InfoMaster 20.01.2025
Преимущества домашнего медиасервера В современном мире, где цифровой контент стал неотъемлемой частью нашей жизни, организация домашнего медиасервера становится все более актуальной задачей. . . .
Перспективы развития жестких дисков: есть ли у них будущее?
InfoMaster 20.01.2025
История и эволюция жестких дисков История развития жестких дисков начинается в 1956 году, когда компания IBM представила первое устройство для хранения данных на магнитных пластинах - IBM 350. . .
Распознавание изображений (компьютерное зрение) на C++
InfoMaster 20.01.2025
Введение в компьютерное зрение и основы работы с изображениями Компьютерное зрение представляет собой одну из наиболее динамично развивающихся областей информационных технологий, позволяющую. . .
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru