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

Запись стека в файл - C++

Восстановить пароль Регистрация
 
Wydges
Сообщений: n/a
20.03.2013, 03:21     Запись стека в файл #1
Вот собственно код, помогаю другу с лабой, есть структура STACK, которая является одним элементом стека, при добавлении в стек элементов из файла проблем нету, с помощью cout проверил все, когда же пытаюсь реализовать удаление из стека и передачу из стека в файл данных выводится непонятно что

и еще, когда входящий поток записываю в стринговый массив, первый элемент файла не записывается

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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
 
struct STACK {
 
     char info;
     STACK *next;
 
 };
 
// Проверка на пустоту
 int Empty(STACK *pstack)
 {
 
     if (pstack==NULL)
     return 0;
     else
     return 1;
 
 }
 
//Добавление эл-та
 void Add(STACK **pstack, char c)
 {
     cout<<c<<endl;
     STACK *tmp=new STACK;
     (*tmp).info=c;
     cout<<(*tmp).info<<endl;
     tmp->next=*pstack;
     *pstack=tmp;
     cout<<(**pstack).info<<endl;
     delete tmp;
 }
 
//Удаление элемента из стека и вываод в масив
 void Pop(STACK **pstack, ofstream& to)
 {         
     STACK *tmp=*pstack;
     
     cout<<(**pstack).info<<endl;
     to<<(**pstack).info;
     *pstack=(*pstack)->next;
     delete tmp;
 
 }
 
 
 int main()
 {
     // Создадим потоки ввода и вывода из файла и в файл
    string iname,oname;
    cout<<"Type a name of an input file"<<endl;
    cin>>iname;
    ifstream from(iname.c_str()); 
    if (!from) 
    {
       cerr<<"Can't open input file"<<iname<<endl;
       system("pause");
       return 0;
    }
    cout<<"Type a name of an output file"<<endl;
    cin>>oname;
    ofstream to(oname.c_str());
    if (!to) 
    {
       cerr<<"Can't open output file"<<oname<<endl;
       system("pause");
       return 0;
    }
    
     char c;
     string str;
     while(from.get(c))
     from>>str;
     cout<<str<<endl;
    
     setlocale(LC_ALL,"Russian");
     STACK *stack=NULL;
     int num;
     char otv;
     do
     {
 
         cout << "1. Добавление элементов в вершину стека" << endl
         << "2. Удаление элемента с вершины стека" << endl
         << "0. Выход" << endl;
         cout << " = ";
         cin >> otv;
         switch(otv)
         {
 
         case '1':
 
                 cout << endl << "Сколько элементов нужно добавить = " << endl;
                 cin >> num;
                 for (int i=0;i<num;i++)
                 {
                     Add(&stack, str[0]);
                     str.erase(0,1);                
                 }
                 cout << endl << "Элементы добавлены" << endl;
                 cout<<str<<endl;
                 break;
 
             
 
         case '2':
 
          
          /*STACK *tmp=stack;
          cout<<stack.info<<endl;
          *stack=(*stack)->next;
          delete tmp;*/
          if (Empty(stack)==0)
          cout << endl << "Стек пуст" << endl;
          else
                 {
               
                 Pop(&stack, to);
                 cout << endl << "Элемент переведен в файл" << endl;
                 }
          break;
 
         case '0':
             break;
 
         default:
 
             cout << endl << "Ошибка" << endl;
             break;
 
         }
 
     }while(otv!='0');
     cin.get();
 
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 03:21     Запись стека в файл
Посмотрите здесь:

Запись в файл C++
C++ Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Ввести эталонный символ.
C++ Запись в файл
запись в файл. не создается файл C++
запись в файл с++ C++
Запись элементов стека через рекурсию C++
C++ Запись в файл
Удалить элемент из стека по условию и добавить элемент в начало стека C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SDev
43 / 41 / 10
Регистрация: 15.03.2013
Сообщений: 88
20.03.2013, 05:19     Запись стека в файл #2
1. убрать из функции Add строку
C++
1
delete tmp;
получается создаешь элемент и сразу уничтожаешь

2. фрагмент с чтением из файла может так сделать
C++
1
2
3
     char c;
     string str;
     while(from.get(c))str+=c;
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.03.2013, 16:04     Запись стека в файл #3
Цитата Сообщение от Wydges Посмотреть сообщение
есть структура STACK, которая является одним элементом стека,
именно является? Или описывает?
Yandex
Объявления
20.03.2013, 16:04     Запись стека в файл
Ответ Создать тему
Опции темы

Текущее время: 21:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru