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

5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить z = ab + cb, используя рекурсивную функцию http://www.cyberforum.ru/cpp-beginners/thread883952.html
Ввести с клавиатуры любое целое число "b" и действительные числа "a" и "с". вычислить z = ab + cb, используя рекурсивную функцию: x^n = 1, если n = 0; x^n = 1 / (x(-n)), если n <0; x^n = x ⋅ (x^(n-1)), если n> 0. n - это степень
C++ 5.1. Реализовать представление стека. Работу со структурами организовать в виде текстового меню #include <stdio.h> #include <stdlib.h> typedef struct Item* pItem; struct Item { int data; pItem next; }; http://www.cyberforum.ru/cpp-beginners/thread883948.html
C++ 11(4) напишите программу определения кода вводимого символа
Пример 4. С помощью директивы #define и оператора препроцессора # напишите программу определения кода вводимого символа. Программный код решения примера: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <locale.h> #define CHAR_COD(c) ""#c"" int main (void) {
11(3) напишите программу ввода слов с клавиатуры с проверкой возможности к C++
Пример 3. С помощью директив условной компиляции и символической константы _DEBUG напишите программу ввода слов с клавиатуры с проверкой возможности компиляции программного кода. Программный код решения примера: #include <stdio.h> #include <conio.h> int main (void) { char str; // Начало проверки компилируемого кода #ifdef _DEBUG
C++ Выяснить, сколько из двух матриц являются симметричными http://www.cyberforum.ru/cpp-beginners/thread883927.html
Заданы две матрицы А(3,3) и В(4,4). Выяснить и напечатать, сколько из них являются симметричными (0.1 и 2). Матрица называется симметричной, если транспонированная матрица равна исходной. Транспонирование матриц оформить в виде функции
C++ Вывести фамилии студентов, которые не получают стипендию и их перечень дисциплин (переделать под объединение и перечисление) Дан список студентов. Общие поля: Ф.И.О., дата рождения, группа, средний балл. Если средний балл 4 и выше, то указать размер стипендии. Если средний балл ниже, то указать перечень дисциплин с оценками. Вывести фамилии студентов, которые не получают стипендию и их перечень дисциплин. #include <stdio.h> #include <string.h> #include <clocale> int main() { setlocale(0,"Rus"); static... подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
03.06.2013, 21:25     5.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
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
#include <conio.h>
#include <iostream>
#include <locale.h>
 
struct QUEUE //структура очередь
{
    int info;
    QUEUE *next;
};//Точка с запятой после структур и классов
 
int EmptyQ(QUEUE *first) //проверка пустоты очереди
{
    if ((first)==NULL)
    return 1;
    else
    return 0;
}
 
void AddQ(QUEUE ** last) //добавление элемента (ПЕРЕДЕЛАЛ ПОД ДВОЙНОЙ УКАЗАТЕЛЬ)
{
    QUEUE *tmp = new QUEUE;
    tmp->info=rand()%100;
    tmp->next=NULL;
    (*last)->next=tmp;
    *last=tmp;
}
 
void DelQ(QUEUE *first, QUEUE ** last) //удаление из очереди (ПЕРЕДЕЛАЛ ПОД ДВОЙНОЙ УКАЗАТЕЛЬ)
{
    QUEUE *tmp=first->next;
    if(first->next==NULL)
    *last=first;
    delete tmp;
}
 
void ShowQ(QUEUE *first) //просмотр очереди
{
    QUEUE *tmp=first->next;
    while(tmp!=NULL)
    {
        printf("%d ", tmp->info);
        tmp=tmp->next;
    }
}
 
void ClearQ(QUEUE *first, QUEUE ** last) //очистка очереди (ПЕРЕДЕЛАЛ ПОД ДВОЙНОЙ УКАЗАТЕЛЬ)
{
    QUEUE *tmp;
    while(first->next!=NULL)
    {
        tmp=first->next;
        first->next = tmp;//first->tmp;//В структуре QUEUE только два члена данных: info и next. Никакого tmp нет. Возможно вы имели ввиду локальную переменную tmp
        delete tmp;
    }
   * last=first;
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    QUEUE *first, *last;
    int n;
    char d;
    do
    {
        printf("1. Добавление элементов в конец очереди \n");
        printf("2. Удаление элемента из начала очереди \n");
        printf("3. Вывод элементов \n");
        printf("0. Выход \n");
        printf("Выбранное действие: ");
        scanf("%s", &d);
        switch(d)
        {
            case '1':
            AddQ(&last);
            printf("\nЭлемент добавлен в конец очереди \n");
            break;
 
            case '2':
            if (EmptyQ(first)==1)
            printf("\nОчередь пустая \n");
            else
            {
                DelQ(first,&last);
                printf("\nЭлемент удален из очереди \n");
            }
            break;
 
            case '3':
            if (EmptyQ(first)==1)
            printf("\nОчередь пустая \n");
            else
            {
                printf("\nЭлементы очереди: ");
                ShowQ(first);
                printf("\n");
            }
            break;
 
            case '0':
            ClearQ(first,&last);
            break;
            default: printf("\nОшибка!\n"); break;
          }//switch СКОБКУ ЗАБЫЛИ
       }while(d!='0');
    _getch();
}
Ошибки компиляции поправил, НО у Вас last нигде не инициализируется, поэтому падение программы
 
Текущее время: 00:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru