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

Очередь с приоритетом - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти ошибку http://www.cyberforum.ru/cpp-beginners/thread922934.html
Задание: написать прогу, где запрашивается рост в футах и дюймах и вес в фунтах. (Используй 3 переменные) Должен высчитываться индекс массы тела (BMI - body mass index). Чтобы его расчитать, нужно преобразовать рост в дюймах в рост в метрах, умножив на 0.024. Далее преобразуем вес в фунтах в массу в кг, разделив на 2.2. После должен расчитываться BMI, разделив массу в кг на квадрат роста в...
C++ узнать значение последнего элемента без доступа к нему Приветствую! Помогите пожалуйста с простой задачкой, которую нужно реализовать с минимальным объемом кода.) Есть неупорядоченная последовательность (массив) целых чисел (от 1 до N). Нужно узнать значение последнего элемента без доступа к нему. http://www.cyberforum.ru/cpp-beginners/thread922924.html
Вызов функции с определенной частотой C++
Всем привет, бьюсь над задачей: необходимо вызывать функцию с определенной частотой например 30КГц. Кто сталкивался с подобной задачей?
Перегруженная функция сравнения двух дат C++
Как сократить функцию которая сравнивает две даты? Получилось кое-как, да и еще предупреждение показывает, что значение возвращается не при всех путях выполнения class CDate { public: explicit CDate(int day=1, int month=1, int year=2000); explicit CDate(const CDate &copy); bool operator<(const CDate &right);
C++ Задача на сообразительность http://www.cyberforum.ru/cpp-beginners/thread922898.html
На собеседовании был задан следующий вопрос. Дан псевдокод бесконечного цикла. int x; x=.... while(true) { x=.... printf("%d,"x); } какое значение или выражение нужно присвоить х, чтобы цикл все время выдавал 6,7,6,7....?
C++ «сохранение» консольной программы Подскажите пожалуйста, каким образом можно сохранить консольную программу, так чтобы ее можно было передать к примеру моим друзьям у которых нет IDE и компиляторов? Желательно как это сделать в Эклипсе, на крайний случай - Qt или Visual studio. Спасибо. подробнее

Показать сообщение отдельно
Mokona
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 9
17.07.2013, 02:17  [ТС]
Здравствуйте еще раз=)
Я сделала дерево стеков и добавление элемента по приоритету. Если можно подскажите как сделать удаление по приоритету. И еще, пожалуйста, помогите исправит кося к функции вывода стека. Когда я пытаюсь вывести на экран стек, то стек выводится, но потом выскакивает ошибка.
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <conio.h>
#include <stdio.h>
#include <locale>
#include <iostream>
using namespace std;
 
/*НАША СТРУКТУРА*/
struct List
{
    int x; //информационный элемент
    List *Next,*Head; //Голова стека и указатель на следующий элемент
};
 
//Наша структура
struct node
{
    int info; //Информационное поле
    List *el;
    node *l, *r;//Левая и Правая часть дерева
};
 
node * tree=NULL; //Объявляем переменную, тип которой структура Дерево
List * steck=NULL;
 
/*ФУНКЦИЯ ДОБАВЛЕНИЯ ЭЛЕМЕНТА В СТЕК  (в список LIFO)*/
void Add(int x, List **MyList) //Принимаем элемент стека и указатель на стек, при этом говорим, что принимаемый указатель будет сам по себе указателем
{
    List *temp=new List; //Выделяем память для нового элемента
    temp->x=x; //Записываем в поле x принимаемый в функцию элемент x
    temp->Next=(*MyList)->Head; //Указываем, что следующий элемент это предыдущий
    (*MyList)->Head=temp; //Сдвигаем голову на позицию вперед
}
 
/*ФУНКЦИЯ ОТОБРАЖЕНИЯ СТЕКА*/
void Show(List *MyList) //Нужен только сам стек
{
    List *temp=new List; //Выделяем память под временный элемент
    temp=MyList->Head; //Указываем ему, что его позиция в голове стека
               //с помощью цикла проходим по всему стеку
    while (temp!=NULL)  //выходим при встрече с пустым полем
    {
        cout<<temp->x<<" "; //Выводим на экран элемент стека
        temp=temp->Next; //Переходим к следующему элементу
    }
}
 
/*ФУНКЦИЯ ЗАПИСИ ЭЛЕМЕНТА В БИНАРНОЕ ДЕРЕВО*/
void push(int a,node **t, List *u)
{
    int n, y;
    if (*t==NULL) //Если дерева не существует
    {
        (*t)=new node; //Выделяем память
        (*t)->info=a; //Кладем в выделенное место аргумент a
        u=new List; 
        printf ("Введите кол-во элементов в стеке: ");
        scanf ("%d", &n);
        for (int i=0;i<n;i++){
            scanf ("%d", &y); Add(y, &u); //Заполняем стек
            (*t)->el=u;}//Указываем на стек
        (*t)->l=(*t)->r=NULL; //Очищаем память для следующего роста
        return; //Заложили семечко, выходим
    }
       //Дерево есть
        if (a>=(*t)->info) push(a,&(*t)->r, u); //Если аргумент а больше чем текущий элемент, кладем его вправо
        else push(a,&(*t)->l, u); //Иначе кладем его влево
}
 
void in(int a, node **t) //Фун-я добавления элемента по приоритету
{
    int y, z;
    if (t==NULL)  //Если дерево пустое, то отображать нечего, выходим
    return;
    else 
    {
        if ((*t)->info==a)
        {
            scanf("%d", &y);
            Add(y, &(*t)->el);
        }
        else {
            if (a>=(*t)->info) in(a,&(*t)->r);
            else in(a,&(*t)->l);
        }
    }
    //Show ((*t)->el);
}
 
/*ФУНКЦИЯ ОТОБРАЖЕНИЯ ДЕРЕВА НА ЭКРАНЕ*/
void print (node *t,int u) 
{
    if (t==NULL)  //Если дерево пустое, то отображать нечего, выходим
    return;
    else //Иначе
    {
    print(t->l,++u);//С помощью рекурсивного посещаем левое поддерево
    for (int i=0;i<u;++i) printf ("  ");
    printf ("%d\n",t->info); //И показываем элемент
    u--;
    }
    print(t->r,++u); //С помощью рекурсии посещаем правое поддерево
}
 
void main ()
{   
    setlocale (LC_ALL, "Russian");
    int n; //Количество элементов
    int s; //Число, передаваемое в дерево
    printf ("Введите количество элементов:  ");
    scanf ("%d", &n); //Вводим количество элементов
    for (int i=0;i<n;++i)
    {
    printf ("Введите число  ");
    scanf ("%d", &s); //Считываем элемент за элементом
    push(s,&tree, steck); //И каждый кладем в дерево
    }
    printf ("Ваше дерево\n");
    print(tree,0);
    scanf ("%d", &s);
    in(s, &tree);
    delete[] tree;
    getch();
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru