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

Динамические структуры. Стек (помогите найти ошибку) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Двоичный (бинарный) поиск http://www.cyberforum.ru/cpp-beginners/thread813290.html
Вот такой вот вопрос: Есть например такой линейный массив 1 1 1 1 2 3 4 5 6 Вводят какое-то число и нужно проверить сколько выступлений этого числа есть в массиве. Я просто нахожу какое-то...
C++ Считывание бмп файла хочу считать бмп файл размер 225x225 в массив чисел , изображение черно белое и когда делаю вывод массива на экран вылазиют слишком большие числа например (345973632) это одно из чисел вот код ... http://www.cyberforum.ru/cpp-beginners/thread813289.html
написать программу, которая вводит число из 4 цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга. например если введенное ч C++
написать программу, которая вводит число из 4 цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга. например если введенное число 4239, то должно быть напечатано 4 2 3 9
C++ Структуры, копирование файла
Подскажите, как написать программку с меню с пунктами: – посимвольное копирование файла; – построчное копирование файла; – поблочное копирование файла. + Для задания имен файлов...
C++ Хранение прототипов методов класса и их непосредственной реализации в различных файлах http://www.cyberforum.ru/cpp-beginners/thread813281.html
вот собственно решил перейти на тот этап, когда прототипы в *.h а определения в *.cpp но почти сразу столкнулся со странной ошибкой в элементарном примере: //point.hpp class Point{ private: ...
C++ Дружественные функции С дружественными классами разобрался, спасибо. А теперь ф-ции. Киньте пожалуста простой пример: класс(несколько полей), обьект описаный в мейне, и функция, которая использует некое поле созданого... подробнее

Показать сообщение отдельно
anmartex
...
1705 / 1198 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
20.03.2013, 09:19
Демку сделал без менюшки. Я думаю, что если понадобиться, то вы и сами сделаете:
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
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
#include <cstdlib>
 
using namespace std;
 
struct TNode
{
   string value;
   TNode* next;
};
 
//----------------------------------------------//
TNode* Push(TNode*& stack, const string& value)
{
   TNode* node = new TNode;
   node->value = value;
   node->next = stack;
 
   stack = node;
 
   return stack;
}
//----------------------------------------------//
string Pop(TNode*& stack)
{
   string value;
 
   if (stack == NULL)
   {
      return value;
   }
   value = stack->value;
 
   TNode* node = stack;
   stack = stack->next;
   delete node;
 
   return value;
}
//----------------------------------------------//
ostream& operator << (ostream& os, const TNode* stack)
{
   for (; stack; stack = stack->next)
   {
      os << stack->value << " ";
   }
 
   return os;
}
//----------------------------------------------//
bool GetWord(const char* text, const char*& begin, const char*& end)
{
   for (; *text && !isalpha(*text); ++text) { ; }
 
   begin = text;
 
   for (; *text && isalpha(*text); ++text) { ; }
 
   end = text;
 
   return (begin != end);
}
//----------------------------------------------//
bool LoadWords(const string& fname, TNode*& stack)
{
   ifstream f(fname.c_str());
 
   if (f.is_open() == false)
   {
      return false;
   }
 
   f.seekg(0, f.end);
   int length = f.tellg();
   f.seekg (0, f.beg);
 
   char* buff = new char [length+1];
   f.read(buff, length);
   buff[length] = 0;
 
   const char* text = buff;
   const char* begin, * end;
 
   for (; GetWord(text, begin, end); text = end+1)
   {
      Push(stack, string(begin, end-begin));
   }
 
   delete[] buff;
 
   return true;
}
//----------------------------------------------//
void CopyWordWithLength(const TNode* source, TNode*& target, size_t length)
{
   for (; source; source = source->next)
   {
      if (source->value.size() == length)
      {
         Push(target, source->value);
      }
   }
}
//----------------------------------------------//
 
int main()
{
   TNode* stack = NULL;
 
   if (LoadWords("program.cpp", stack) == false)
   {
      cerr << "file not open" << endl;
      system("pause");
      return 1;
   }
 
   cout << stack << endl;
 
   TNode* target = NULL;
 
   CopyWordWithLength(stack, target, 4);
 
   cout << endl << target << endl;
 
   system("pause");
 
   return 0;
}
Динамические структуры. Стек (помогите найти ошибку)

Бинарник + исходник: program.7z
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru