С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
neats10
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 1
#1

Стек/Разработать программу, реализующую алгоритм стека - C++

23.05.2013, 05:16. Просмотров 1069. Ответов 0
Метки нет (Все метки)

Добрый.
Помогите пжл написать программу по заданию:


Разработать программу, реализующую алгоритм стека (20 элементов). Задача решается в двух вариантах: статическом (на основе массива структур) и динамическом. В качестве элемента стека выбрать структуру, соответствующую индивидуальному варианту.
Предусмотреть заполнение стека из файла (подготовить файл на 20 элементов).
Предусмотреть многоуровневое меню:
1) Заполнение стека
a) с консоли (циклически)
b) из файла (выбор файла, тек. папка, любая папка)
2) Удаление элемента из стека (циклически)
a) безвозвратно
b) с сохранением в файл
3) Очистка стека (с выводом удаляемых элементов)
a) безвозвратно
b) с сохранением в файл
4) Вывод элементов, содержащихся в стеке
a) на экран
b) в файл
5) Вывод количества элементов в стеке
6) Выход

Реализовать алгоритм обработки исключений.
Продемонстрировать работу всех пунктов меню. Продемонстрировать обработку ошибочных ситуаций (ввод данных другого типа, ввод пустых данных, переполнение стека, пустой стек). Графический интерфейс и использование классов необязательны, но приветствуются.



Вот набросики
файл .cpp
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
#include <stdio.h>
#include <stdlib.h>
 
#include "header.h"
 
 
int main(){
 
    FACULTY mas[100];
 
    int size = 0;
 
 
 
    char c;
    do {
        system("cls");
        
        printf("\n1  - Create from Console ");
        printf("\n2  - REad from file ");
        printf("\n3  - Write to file ");
        printf("\n4  - Delete ");
        printf("\nq  - Exit ");
        
        scanf("%c",&c);
        
        getchar();
        
        switch(c){
        case '1' : break;
        case '2' : break;
        case '3' : break;
        case '4' : break;
        }
 
    } while(c != 'q');
 
    MyCharStack *stack1 = NULL;
    MyCharStack *stack2 = NULL;
    MyCharStack *stack3 = NULL;
 
    FACULTY faculty;
    char c = 'N';
    
    size
    do{
        printf("\nCode of Faculty: ");
        scanf("%s",faculty.code);               // <-- Console
        printf("\n Name of Faculty: ");
        scanf("%s",faculty.name);               // <-- Console
        printf("Faculty: ");
        scanf("%s",faculty.nameD);              // <-- Console
        printf("Faculty: ");
        scanf("%d",&faculty.countDepartment);   // <-- Console
        printf("Faculty: ");
        scanf("%d",&faculty.countTeacher);
        printf("continue??? (Y/N)");
        addElementInStack(&stack,faculty);
 
        getchar();
        scanf("%c",&c);
        
        
    } while(c == 'Y');
 
    try {
        printf("\n");
        showAllStackElements(stack);
    }
    catch(int e){
        if (e == -1) {
            printf("Stack is empty...");
        }
    }
    printf("\nSize: %d",getStackSize(stack));
    
 
    deleteElementFromStack(&stack);
 
    clearStack(&stack);
 
    printf("\n");
    showAllStackElements(stack);
 
    return 0;
}




header.h
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
124
125
126
struct  FACULTY {
    char code[10];
    char name[50];
    char nameD[150];
    int countDepartment;
    int countTeacher;
};
 
 
 
struct MyCharStack {
    FACULTY data;
 
    MyCharStack *prev;
};
 
 
void addElementInStack(MyCharStack **stack,FACULTY data){
    MyCharStack *newElement = new MyCharStack;
    newElement->data = data;
    newElement->prev = NULL;
 
    if (*stack == NULL){
        *stack = newElement;
    }else {
        newElement->prev = *stack;
        *stack = newElement;
    }
}
 
void showAllStackElements(MyCharStack *stack){
    if (stack == NULL){
        printf("Stack is empty...");
    }
 
    MyCharStack *newElement = stack;
 
    do {    
        printf("%s ",newElement ->data.code);               // <-- Console
        printf("%s ",newElement ->data.name);               // <-- Console
        printf("%s ",newElement ->data.nameD);              // <-- Console
        printf("%d ",newElement ->data.countDepartment);    // <-- Console
        printf("%d ",newElement ->data.countTeacher);       // <-- Console
        
        newElement = newElement->prev; 
    } while(newElement);
}
 
void clearStack(MyCharStack **stack){
    if (stack == NULL){
        printf("Stack is empty...");
    }
        
    do {    
        MyCharStack *newElement = *stack;
        *stack = (*stack)->prev;
        
        delete newElement;
 
    } while(*stack);
 
    *stack = NULL;
}
 
 
int getStackSize(MyCharStack *stack){
    if (stack == NULL){
        
        throw -1;
    }
 
    int count = 0;
 
    MyCharStack *newElement = stack;
 
    do {    
        count++;
        newElement = newElement->prev; 
    } while(newElement);
 
    return count;
}
 
void writeToFileAllStackElements(MyCharStack *stack,char* name){
    if (stack == NULL){
        printf("Stack is empty...");
    }
 
    MyCharStack *newElement = stack;
 
    do {    
        // <-- in file
        newElement = newElement->prev; 
    } while(newElement);
}
 
void deleteElementFromStack(MyCharStack **stack){
    if (*stack == NULL){
        return;
    }
 
    MyCharStack *element = *stack;
    
    *stack = (*stack)->prev;
 
    delete element;
}
 
void deleteInFileElementFromStack(MyCharStack **stack, char *fileName){
    if (*stack == NULL){
        return;
    }
 
    MyCharStack *element = *stack;
    
    *stack = (*stack)->prev;
 
    FILE *file = fopen(fileName,"a+"); ///
    
    fwrite(&element->data,sizeof(FACULTY),1,file);
 
    fclose(file);
 
 
    delete element;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 05:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стек/Разработать программу, реализующую алгоритм стека (C++):

Разработать программу, реализующую алгоритм стека (20 элементов). Задача решается в двух вариантах: статическом и динамическом - C++
Разработать программу, реализующую алгоритм стека (20 элементов). Задача решается в двух вариантах: статическом (на основе массива...

Разработать программу, реализующую алгоритм очереди (20 элементов) - C++
Здравствуйте! Есть такое задание: Разработать программу, реализующую алгоритм очереди (20 элементов). Задача решается в двух вариантах:...

Структура стек (: добавить элемент в стек, удалить элемент из стека, получить значение с вершины стека, размер стека...) - C++
Всем привет,ребят помогите пожалуйста с лабой,вообще без понятия про стеки:( Может кто то делал,или встречался с таким заданием: ...

Разработать программу реализующую чтение и запись в типизированный файл - C++
Здраствуйте . Начал писать и в самом начале возникла проблема. Написана только одна функция . Нужно записать структуру в типизированный...

Разработать программу с использованием наследования классов, реализующую классы - C++
Ребят помоги пожалуйста начинающему программисту. Использовать максимально возможное количество возможных функций (не менее 3), а...

Разработать программу, реализующую многопочность средствами среды Win32 - C++
помогите пожалуйста разобраться с задачей. &quot;Задание Разработать программу, реализующую многопочность средствами среды Win32. Программа...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2013, 05:16
Привет! Вот еще темы с ответами:

Разработать программу, реализующую абстрактный тип данных, через механизм классов - C++
Определить класс треугольник, а также продемонстрировать использование класса. Члены класса: переменные, необходимые для того, чтобы иметь...

Разработать программу с использованием наследования классов, реализующую классы: точка; линия; круг - C++
помогите написать программу: Разработать программу с использованием наследования классов, реализующую классы: точка; линия; круг....

Написать программу, реализующую алгоритм шифрования и дешифрования сообщения RSA - C++
Помогите написать программу, реализующую алгоритм шифрования и дешифрования сообщения RSA. Входные данные: открытый и секретный ключи...

Разработать программу, реализующую численное интегрирование по методу Рунге-Кутта 4-го порядка точности дифференциального уравнения - C++
Всем привет! Я полное дно в этом вопросе, да и как то отвык от данных задач, но если не сложно то нужна помощь. Нужно сделать курсовую...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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