Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855

Не выполняется функция удаления

15.11.2012, 16:15. Показов 2193. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Функция удаления не выполняется.
Вот код:

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 <iostream>
#define MAX 15
 
using namespace std;
 
char *stack[MAX]; // Ìàññèâ äëÿ ñòåêà
int tos=0; // Äëÿ âåðøèíû ñòåêà
 
void push(char *i) // Ôóíêöèÿ äîáàâëåíèÿ ýëåìåòà â ñòýê
{
    if(tos >= MAX) // Ïðîâåðêà íà çàïîëíåííîñòü ñòåêà
    {
        printf("Steck polon\n");
        return;
    }
    strcpy(stack[tos],i); // Çàïèñûâàåì ñòðîêó â ñòýê
    tos = tos + 1; // Óâåëè÷èâàåì âåðøèíó ñòýêà
}
 
int size() // Äëÿ îïðåäåëåíèÿ ðàçìåðà ñòåêà
{
    if (tos >= 0) return tos;// Åñëè áîëüøå íóëÿ, òî âîçâðàùàåì òåêóùåå çíà÷åíèå âåðøèíû ñòýêà
    else return 0; // èíà÷å âîçâðàùàåì íîëü
}
 
char *pop(void) // Ôóíêöèÿ âûòàñêèâàíèÿ ýëåìåíòà èç ãîëîâû
{
    char *str = new char[30]; // Áóôôåð
    tos = tos - 1; // Ñäâèãàåìñÿ îò ãîëîâû âíèç
    if(tos < 0) // Åñëè âåðøèíà ìåíüøå íóëÿ, òî ñòýê ïóñòîé
    {
        printf("Steck pust\n");
        return 0;
    }
    str = stack[tos]; //èíà÷å â áóôôåð ïîìåøàåì òåêóùåå çíà÷åíèå âåðøèíû
    return str; // âåçâðàùàåì ýòî çíà÷åíèå
}
 
void delet(char *element) // Ôóíêöèÿ óäàëåíèÿ
{
    int razmer = size(); // Ïîëó÷àåì ðàçìåðíîñòü ñòåêà
    char *buf[MAX]; // Äëÿ áóôôåðà, èñ÷ïîëüçóåòñÿ ïðè óäàëåíèè
    for(int i = 0;i<MAX;i++) // ÂÛäåëåíèå ïàìÿòè
    {
        buf[i] = new char[30];
    }
    int c = 0; // Ñ÷åò÷èêè
    int ravn = 0;
    for(int i = 0;i<=size();i++) // Öèêë äëÿ óäàëåíèÿ
    {
        /*Ïðîâåðÿåì,åñëè íå ðàâíû ýëåìåíò èç
        ñòåêà è ýëåìåíò ââåäåäíûé ñ êëàâèàòóðû,
        òî êîïèðóåì â áóôôåð
        óâåëè÷èâàåì ñ÷åò÷èê
        è óäàëÿåì ïîëíîñòüþ äàííóþ ÿ÷åêó èç ñòåêà*/
        if (strcmp(element,stack[i])!=0)
        {
            strcpy(buf[c],stack[i]);
            c = c + 1;
            delete stack[i];
        }
        else //èíà÷å ïðîñòî óäàëÿåì ïîëíóñòüþ ÿ÷åéêó èç ñòåêà
        {
            delete stack[i];
            ravn = ravn + 1;
        }
    }
    tos=0;
    /*Âûäåëÿåì ïàìÿòü äëÿ ñòåêà, òàê êàê îíà áûëà
    óäàëåíà
    è êëàäåì â ñòåê çíà÷åíèÿ*/
    for (int i=0;i<=(razmer-ravn);i++)
    {
        stack[i] = new char[30];
        push(buf[i]);
    }
}
 
int main() // Îcíîâíîå òåëî ïðîãðàììû
{
    system("chcp 1251");
    setlocale(0, "rus");
    
    for (int i = 0;i<MAX;i++) // Âûäåëåíèå ïïàìÿòè äëÿ ýëåìåíòîâ ñòýê
    {
        stack[i] = new char[30];
    }
    int NumberOfElements = 0; // ×èñëî ýëåìåíòîâ ñòåêà
    char *Element = new char[30]; // Äëÿ ââîäà ýëåìåíòà äëÿ óäàëåíèÿ
    cout << "Ñêîëüêî ýëåìåíòîâ äîáàâèòü: "; // Ââîä êîëè÷åñòâà ýëåìåíòîâ ñòåêà
    cin >> NumberOfElements;
    cout << "Ââåäèòå ýëåìåíòû" << endl;
    
    for (int i = 0;i < NumberOfElements; i++) // Ââîä ýëåìåíòîâ
    {
        cout << "Ýëåìåíò " << i << ": ";
        cin >> Element;
        push(Element);
    }
    cout << "Âåðõíèé ýëåìåíò: " << pop() << endl; // Ââîä ýëåìåíòà äëÿ óäàëåíèÿ
    cout << "Êàêîé ýëåìåíò óäàëèòü: ";
    char *ItemToDelete = new char[30];
    cin >> ItemToDelete;
    delet(ItemToDelete); // Óäàëåíèå ýëåìåíòà
    cout <<"Âåðõíèé ýëåìåíò: " << pop() << endl << endl; // Ïå÷àòü òåêóùåé âåðøèíû ñòåêà
    system("PAUSE");
}
Добавлено через 5 часов 13 минут
Помогите хоть кто нибудь...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.11.2012, 16:15
Ответы с готовыми решениями:

Функция удаления текста в скобках [2], непосредственно функция + 12кб вложений
Доброго времени суток, случилось так, что пришлось работать с с-строками (лаба, угу), в которой нужно удалить весь текст в скобках,...

Не выполняется функция
Здравствуйте. C++ в Atmel Studio. Проблема в том, что компилятор не обращает никакого внимания на самодельную функцию и никак в неё не...

Функция удаления на С
Помогите исправить ошыбки в удалении вот полный код: #include &lt;stdio.h&gt; #include&lt;iostream.h&gt; #include &lt;conio.h&gt; void...

20
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,544
Записей в блоге: 1
17.11.2012, 20:56
Студворк — интернет-сервис помощи студентам
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
#include <iostream>
#include <string>
#include <limits>
#define MAX 15
 
using namespace std;
struct sport
{
    string fio;
    string vid;
    string fak;
    string spc;
    string lvl;
} *stack[MAX]; // Массив для стека
int tos=0; // Для вершины стека
void print(sport *elem) {
    
    cout<<"fio: "<<elem->fio<<endl;
    cout<<"vid: "<<elem->vid<<endl;
    cout<<"fak: "<<elem->fak<<endl;
    cout<<"spc: "<<elem->spc<<endl;
    cout<<"lvl: "<<elem->lvl<<endl;
 
}
void push(sport *elem) // Функция добавления элемета в стэк
{
    if(tos >= MAX) // Проверка на заполненность стека
    {
        cout << "Стек полон!" << endl;
        return;
    }
    stack[tos]=elem;
    tos = tos + 1; // Увеличиваем вершину стэка
}
 
int size() // Для определения размера стека
{
    if (tos >= 0) return tos;// Если больше нуля, то возвращаем текущее значение вершины стэка
    else return 0; // иначе возвращаем ноль
}
 
sport *pop(void) // Функция вытаскивания элемента из головы
{
    tos = tos - 1; // Сдвигаемся от головы вниз
    if(tos < 0) // Если вершина меньше нуля, то стэк пустой
    {
        cout << "Стек пуст!" << endl;
        return 0;
    }
    return stack[tos]; // везвращаем это значение
}
 
sport *delet(int id) // Функция удаления
{
    if ((id>tos)||(id<=0)) return NULL;
    sport* elem=stack[id-1];
    for (int i=id; i<tos; i++)
        stack[i-1]=stack[i];
    tos--;
    return elem;
 
}
void clear(){
    for (int i=0; i<tos; i++)
        delete stack[i];
}
 
 /* 
*/
void inputElement(sport * obj)
{
     
        cout << "Введите данные Ф.И.О.: ";
        
        getline(cin, (obj->fio));
 
        cout << "Введите данные о спорте: ";
        getline(cin, (obj->vid));
        cout << "Введите данные о факультете: ";
        getline(cin, (obj->fak));
        cout << "Введите данные о специальности: ";
        getline(cin, (obj->spc));
        cout << "Введите данные о возрасте: ";
        getline(cin, (obj->lvl));
        cout << endl;
} 
int main() // Оcновное тело программы
{
    //system("chcp 1251");
    setlocale(LC_ALL, "russian");
    
    int n;
    cout<<"Введи ты n:";
    (cin)>>n;
 
 
    
    sport* Element; // Для ввода элемента
    for (int i = 0;i<n;i++){
        Element=new sport;
        inputElement(Element);
        push(Element);
        //delete Element;
    }
    
    Element=pop();
    cout << "Вершина стека: "<< endl;
    print(Element);
    cout << "Какой элемент удалить? (впишите номер): "; // Ввод элемента для удаления
    cin>>n;
    delete delet(n);
    Element=pop();
    cout << "Вершина стека: "<< endl;
    print(Element);
    clear();
    
    system("PAUSE");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.11.2012, 20:56

Функция, подключенная в VS не выполняется
Добрый день. Помогите пожалуйста разобраться. VS 2010 Win8 Решил сделать программу, начал с меню и захотел вывести все функции и...

Почему выполняется функция?
Не могу понять, почему таки выполняется функция? Значения по умолчанию нет, параметры не принимает, а ошибок не выдает Visual Studio 2015 ...

Не выполняется функция getline()
Добрый вечер, уважаемые программисты! Написал программу, содержащую класс, который имеет два поля: номер и имя, и два метода: ввод и...

Функция getche() не выполняется
В MVS 2015 не выполняется ф-ция getche() (в коде строка 52) по этому цикл выполняется всего один раз. Как это исправить? Проверял код в...

Не выполняется восстановление системы после удаления avast
Здравствуйте, прошу мне помочь! Все случилось с момента,когда удалила антивирус Аваст, в ходе удаления появлялись сообщения (создание...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru