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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
escape
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 7
#1

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

03.04.2009, 21:56. Просмотров 2298. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2009, 21:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структура "Очередь" (задача) (C++):

Структура данных "Очередь" на базе массива - C++
Всем привет, помогите пожалуйста реализовать структуру данных ОЧЕРЕДЬ на базе массива для хранения символьных данных, заранее благодарен

класс Lqueue, структура типа "очередь" - C++
Создать класс Lqueue - структура типа &quot;очередь&quot;, что базируется на структуре связного списка. Тип значения, хранящиеся в очереди, выбрать...

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" - C++
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата часа Вторая 150 Первая 200 ...

Динамическая структура "Очередь", С++ - C++
Здравствуйте, форумчане. Прошу вашей помощи. Задание: Дан файл из символов. Используя очередь, за один просмотр файла напечатать...

структура данных "Очередь" - C++
Я понимаю, что везде материала полным-полно, но может ли мне кто-нибудь объяснить что такое ОЧЕРЕДЬ???? и функции добавления ...

Даны три слова - "мама", "мыла", "раму". Задача - напечатать всевозможные варианты построения слов - C++
Я записал код, однако эту часть надо автоматизировать, поможете? КОД: } #include &lt;iostream&gt; using namespace std; int main()...

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

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  [ТС] #3
спасибо
и думаю, в 16 строке вместо char нужно int
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
04.04.2009, 01:52 #4
Первое, что заметил, это
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  [ТС] #5
qwert, спасибо) тут вы правы на 100%, отсутствие хвоста очередь - это возмутительно)
подскажите, пожалуйста, а что нужно сделать, чтобы получить в результате работоспособный стек?
Дело в том, что мне нужно разобраться и со стеком и с очередью.
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
05.04.2009, 01:10 #6
Со стеком проще чем с очередями. В самом простом случае выглядит так (стек на массивах):
C++
1
2
3
4
5
struct Stack
{
   int* arr = new int [nmax];
   int Top;
}
Top - индекс вершины. Нужно сделать как минимум 2 метода Push (добавить) и Pop (удалить). Дополнительно можно сделать просмотр вершины без удаления, часто очень помогает.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2009, 01:10
Привет! Вот еще темы с ответами:

Необработанное исключение в "0x76f015de" в "контрольная 1 задача 2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x334e2c64" - C++
доброго времени суток. Необработанное исключение в &quot;0x76f015de&quot; в &quot;контрольная 1 задача 2.exe&quot;: 0xC0000005: Нарушение прав доступа при...

Иерархия классов "список"-"очередь", вызов метода через класс интерфейс - C++
Есть небольшая иерархия классов, контейнер (список) для хранения объектов каждого класса, контейнер (очередь) с указателями на объект...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Структура: error C2079: "A::myElem" использует неопределенный struct "A::B" - C++
class A { public: struct B; private: B myElem; }; struct A::B {


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
05.04.2009, 01:10
Ответ Создать тему
Опции темы

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