Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/30: Рейтинг темы: голосов - 30, средняя оценка - 4.57
 Аватар для escape
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 7

Структура "Очередь" (задача)

03.04.2009, 21:56. Показов 5852. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, разобраться со структурой "Очередью".
Выбивает ошибки в двух строчках - 11 и 15.
Подозреваю, что сам код неточно построен, возможно, есть исправления вначале программы?

Задание:
Написать программу на Си, которая состоит из следующих действий:
1. Описание структуры данных, используя поименованный целочисленный тип.
2. Описание переменной целочисленного типа. (Использую простого переменную, т.к. представление - векторное).
3. Описание переменной индексированного типа из 10 элементов указанного типа и ее инициализация.
4. Инициализация N элементов описанной структуры данных, используя переменную индексированного типа, описанную в п.3, где N – целое значение из диапазона от 0 до
5. Удаление M элементов из описанной структуры данных, где M – целое значение из диапазона от 0 до 15.
Примечание: при инициализации структуры данных необходимо анализировать ее переполнение. При удалении элементов – ее отсутствие.

Код:

C++
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
void main()
//struct Queue
{
  const int size=10;
  int info [size];
  int handle;
};
int rez, i, j;
int N=8;
int M=14;
Queue MyQueue; // Declaration syntax error 
MyQueue.handle=0;
char mas [10] = {'11','2','7','3','9','4','8','14','22','10'};
 
for (i=0,i<N,i++) // Declaration terminated incorrectiy 
 if (MyQueue.handle < size) {
  MyQueue->info [MyQueue.handle] = mas [i];
  MyQueue->handle ++;
for(i=0; i<M; i++)
   if(MyQueue.handle !=0){
    rez = MyQueue.info [0];
    for(j=0, j<MyQueue.handle; j++)
        MyQueue.info [j] = MyQueue.info [j+1];
    MyQueue.handle --;
    MyQueue.info [MyQueue.handle] = '\0';
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2009, 21:56
Ответы с готовыми решениями:

Задача на очередь (вывод сообщения, что очередь пуста)
Доброго дня! Есть задачка на очередь, которая работает нормально, только надо добавить код, чтобы выводил сообщение, что очередь пуста.....

Структура: Очередь
Составьте программу, которая создает очередь из произвольного количества элементов. Информационная часть динамического элемента должна...

Структура данных ОЧЕРЕДЬ
Смоделировать очередь, в которой реализован такой механизм изъятия элемента из очереди: начало очереди всегда находится в первом элементе...

5
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.04.2009, 22:12
естевственно.... потому что так надо!
там полно ошибок!

C++
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
void main()
{
const int size=10;
struct Queue
{
  int info[size];
  int handle;
};
 
int rez, i, j;
int N=8;
int M=14;
 
Queue MyQueue;
MyQueue.handle=0;
char info[size] = {'11','2','7','3','9','4','8','14','22','10'};
 
for (i=0; i<N; i++)
 if (MyQueue.handle < size) 
 {
  MyQueue.info[MyQueue.handle] = info [i];
  MyQueue.handle++;
 
  for(i=0; i<M; i++)
   if(MyQueue.handle !=0)
   {
        rez = MyQueue.info [0];
        for(j=0; j<MyQueue.handle; j++)
                MyQueue.info [j] = MyQueue.info [j+1];
        MyQueue.handle --;
        MyQueue.info [MyQueue.handle] = '\0';
   }
}
}
1
 Аватар для escape
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 7
04.04.2009, 00:58  [ТС]
спасибо
и думаю, в 16 строке вместо char нужно int
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
04.04.2009, 01:52
Первое, что заметил, это
C++
1
2
3
4
5
struct Queue
{
  int info[size];
  int head;
};
Если это действительно очередь, то у неё должны быть голова и хвост, а у вас сильно похоже на стек.
Потом, необходимо сделать функцию очистки, то есть, кто-то вышел, и нужно сделать сдвиг элементов. Можно делать каждый раз как кто-то вышел, но лучше делать тогда, когда элементу, который зашёл, не хватило места, а индекс начала не равен 0.
Функция main() должна возвращать int, а то на некоторых компиляторах может не запуститься.
Вот, немного подправил код (функцию очистки не делал):
C++
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
#include <iostream>
using namespace std;
const int size=10;
struct Queue
{
  int info [size];
  int head;
  int rear;
};
int main ()
{
    int rez, i, j;
    int N=8;
    int M=14;
 
    Queue MyQueue;
    MyQueue.head=0;
    int mas [10] = {11,2,7,3,9,4,8,14,22,10};
     
    for (i=0;i<N;i++)
        if (MyQueue.head < size) 
        {
            MyQueue.info [MyQueue.head] = mas [i];
            MyQueue.head++;
            for(i=0; i<M; i++)
                if(MyQueue.head !=0)
                {
                    rez = MyQueue.info [0];
                    for(j=0; j<MyQueue.head; j++)
                        MyQueue.info [j] = MyQueue.info [j+1];
                    MyQueue.head --;
                }
        }
    return 0;
}
Это минумим, чтобы программа работала.
1
 Аватар для escape
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 7
04.04.2009, 13:19  [ТС]
qwert, спасибо) тут вы правы на 100%, отсутствие хвоста очередь - это возмутительно)
подскажите, пожалуйста, а что нужно сделать, чтобы получить в результате работоспособный стек?
Дело в том, что мне нужно разобраться и со стеком и с очередью.
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
05.04.2009, 01:10
Со стеком проще чем с очередями. В самом простом случае выглядит так (стек на массивах):
C++
1
2
3
4
5
struct Stack
{
   int* arr = new int [nmax];
   int Top;
}
Top - индекс вершины. Нужно сделать как минимум 2 метода Push (добавить) и Pop (удалить). Дополнительно можно сделать просмотр вершины без удаления, часто очень помогает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2009, 01:10
Помогаю со студенческими работами здесь

С++ структура даных очередь
привет всем, помогите плиз з кодом С++ , необходимо написать программу на основе абстрактного типа даных очереди. В магазине стоит...

Динамическая структура очередь
Ребят,можете помочь. Создать очередь на базе связного списка. Написать функцию, выводящую на экран n (вводится с клавиатуры) элементов с...

Динамическая структура данных Очередь
Определить новую динамическая структуру данных(очередь на основе линейно - связного списка).Описать стандартные оператисе по работе со...

Динамическая структура — циклическая очередь
Динамическая структура — циклическая очередь. Хранимая информация — каталог монет: порядковый номер (число), название монеты (строка),...

Очередь целых чисел (структура FIFO)
Требуется : Разработать класс «очередь целых чисел» (структура FIFO). Реализовать методы добавления и удаления элементов. Есть : ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru