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

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

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

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

20.03.2013, 03:21. Просмотров 1255. Ответов 2
Метки нет (Все метки)

Вот собственно код, помогаю другу с лабой, есть структура 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();
 
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 03:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Запись стека в файл (C++):

Запись элементов стека через рекурсию - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; /*НАША СТРУКТУРА*/ struct List { int x; //информационный...

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

Удалить элемент из стека по условию и добавить элемент в начало стека - C++
Здравствуйте, помогите пожалуйста исправить(дописать) программы. 1). Нужно удалить элемент, находящийся в середине стека , если число...

запись в файл. не создается файл - C++
#include &lt;graphics.h&gt; // vkljy4it' opisanie grafi4eskix fynkcij Ñ/Ñ++ Borland'ah #include&lt;stdio.h&gt; #include &lt;conio.h&gt; // opisanie...

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

Запись в файл - C++
Добрый день! Раньше используя такую запись, я открывал txt в студии и там все выводилось корректно, а сейчас выводятся иероглифы. ...

2
SDev
43 / 41 / 10
Регистрация: 15.03.2013
Сообщений: 90
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;
0
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,565
20.03.2013, 16:04 #3
Цитата Сообщение от Wydges Посмотреть сообщение
есть структура STACK, которая является одним элементом стека,
именно является? Или описывает?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2013, 16:04
Привет! Вот еще темы с ответами:

Запись в файл. - C++
Кто подскажет как в файл записать 10 символ так... чтобы при этом не писался 13???? Добавлено через 3 минуты cout putc printf ...

Запись в файл - C++
Необходимо чтобы информация, набираемая на клавиатуре, записывалась в файл с именем a.txt. //записывает с переносом буквы, без...

Запись в файл - C++
У меня есть вот такая запись Fasola 1.8 21 Cebula 1.65 10 И мне нужно считать и записать её в файл. scanf(&quot;%s&quot;,&quot;%i&quot;,&quot;1f&quot;,name,...

Запись в файл - C++
Приветствую. Такая проблема. Если находит в структуре совпадение с введенным номером, то удаляет из массива эту структуру. Но почему то...


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

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

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