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

Копирование данных из файла в отображение. STL - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ найти ошибку http://www.cyberforum.ru/cpp-beginners/thread843735.html
#include <iostream> #include <locale> #include <string> using namespace std; struct seyf { int god; char name ; char autor ; };
C++ оптимизация кода Задача: определить, является ли последовательность скобок действительной. Длинна строки не превышает 100000. Например: № Input Output 1 ()(()) VALID 2 )( INVALID #include <iostream> #include <string> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread843725.html
C++ Дерево (Удалить нижний лист в дереве)
Выручайте ребят!Мучаюсь уже 2 недели. задание:Удалить нижний лист в дереве. Все вроде создал,удаляет,но просят автомачитеское удаление этого элемента,как это сделать???ПОМОГИТЕ!! буду весьма благодарен) нашел код для удаления вершины,а мне нужен для последнего элемента #include <iostream> #include <fstream>
Посчитать сумму ряда C++
Всем привет, поставлена задача вычислить сумму сходящегося(т.е ввод только сходящегося) ряда, который вводим с клавиатуры? У кого какие есть идеи?
C++ Реализовать итератор для самодельного списка http://www.cyberforum.ru/cpp-beginners/thread843718.html
Нужно узнать что из себя представляет итератор. Посмотреть его реализацию. (Желательно попроще, основное) Кто то может объяснить что он должен делать, какие поля и методы содержать для работы, например с таким классом? #include <iostream> using namespace std; template<class T> class List {
C++ Все необходимые данные для функций должны передаваться им в качестве параметров Как переделать код, для того, что бы все необходимые данные для функций передавались им в качестве параметров. Использование глобальных переменных в функциях запрещается. #include<iostream> #include<stdio.h> #include<fstream> #include<conio.h> #include<vector> #include<string> #include<Windows.h> using namespace std; подробнее

Показать сообщение отдельно
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
20.04.2013, 23:31     Копирование данных из файла в отображение. STL
Суть такова. Написал программку. Предполагается, что работает она так: открывает текстовый файл, весь этот файл заливает в строку string, потом осуществляет итерацию по этой строке, посимвольно проверяя её значения. Если символ это апостроф " ' ", то в зависимости от буквы стоящей за ним записывается слово (английские сокращения 've, 'm, 's, 'll, 't) have, am, is, will и not соответственно. Если символ любой кроме апострофа то происходит обычная инкрементация итератора и счетчика.Если итератор указывает на букву или цифру, то запускается соответствующий цикл. Компилятор ни на что не ругается, однако я не могу скомпилировать это. Окно просто открывается и резко закрывается не смотря на system("PAUSE");. Даже если бы цикл был бесконечен, то окно бы не исчезло сразу. Пользую билдер 6. Вот сам код. Кому не лень втыкать в него помогите пожалуйста. Как мог закомментировал. Опытному пользователю должно быть понятно, наверное:

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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
//---------------------------------------------------------------------------
 
#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <map>
#include <ctype.h>
using namespace std;
//---------------------------------------------------------------------------
map<string, int, greater<string> > fTable; //множество для слов и их количества
//---------------------------------------------------------------------------
bool isExist (const string& s) // функция для проверки наличия строк в контейнере
{
 return (fTable[s] > 0)?true:false;
}
//---------------------------------------------------------------------------
bool itP(string::iterator it)// функция проверяет символ возвращаемый *it
{
 if((*it == ' ' || ispunct(*it) || *it == '\n') && (*(it-3)!=*("'") && *it!=*"'"))
 return true;
 else
 return false;
}
//---------------------------------------------------------------------------
 
 
int main(int argc, char* argv[])
{
 
 map<string,int,greater<string> >::iterator iter;
 string resulty;
 char cFN = *("'");
 int ctr = 0;
 int Tctr = 0;
 
 
 ifstream infile("songtext.dat"); //открываем фаил
 istreambuf_iterator<char> isiter(infile);
 istreambuf_iterator<char> end_of_stream;
 string :: iterator it;
 
 string to_define(isiter,end_of_stream); //заливаем этот фаил в строку
 
 it = to_define.begin(); //используем итератор строки
 while( it != to_define.end())
 {
  if ( *it == cFN)
  /* если возвращаемый символ равен апострофу ' как правило это сокращения, то
  запускаем цикл*/
 
  {
   switch(*(it+1))
   {
        case 'l':
                if(isExist("will"))
                {       fTable["will"] += 1; }
                else
                {       fTable["will"] = 1; }
                it+=3;Tctr+=3;
                break;
        case 'r':
                if(isExist("are"))
                {       fTable["are"] += 1; }
                else
                {       fTable["are"] = 1; }
                it+=3;Tctr+=3;
                break;
        case 'v':
 
                if(isExist("have"))
                {       fTable["have"] +=1;}
                else
                {       fTable["have"] = 1; };
                it+=3;Tctr+=3;
                break;
        case 's':
                if(isExist("is"))
                {       fTable["is"] += 1;}
                else
                {       fTable["is"] = 1; }
                it+=2;Tctr+=2;
                break;
        case 'm':
                if(isExist("am"))
                {       fTable["am"] += 1; }
                else
                {       fTable["am"] = 1; }
                it+=2;Tctr+=2;
                break;
        case 't':
                if(isExist("not"))
                {       fTable["not"] += 1; }
                else
                {       fTable["not"] = 1; }
                it+=2;Tctr+=2;
                break;
   }
 }
 
 if(itP(it))
 /*эта штука работает, наша функция вернула true, то есть если итератор
 указывает не на букву или цифру*/
 {
  it++; ctr++;
 }
 
 if(!itP(it))
 /*в случае если символ буква/цифра*/
{
 
  if(it == to_define.begin()&&Tctr == 0) //если итератор указывает на начало
 {
 
   while(!itP(it))
   { it++;ctr++; }
    /*инкрементируем итератор и счетчик, счетчики организованны таким образом,
     что Tctr всегда будет равен началу слова,которое заливается в resulty
     функцией substr(), а ctr всегда будет равен концу этого слова*/
   resulty = to_define.substr(Tctr,ctr);
  }
  else //если итератор указывает не на начало
  {
  Tctr += ctr;
  while(!itP(it))
        {it++; ctr++;}
  resulty = to_define.substr(Tctr,ctr);
  }
}
 
 if(isExist(resulty))
 //если слово уже есть в отображении то увеличиваем поле на 1
 {
  fTable[resulty] += 1;
 }
 else // если же нет, то поле равно единице
 { fTable[resulty] = 1; }
 it++;Tctr++;
}
 
//выводим что получилось на экран
for(iter = fTable.begin();iter !=fTable.end(); iter++ )
        cout << (*iter).first << ' ' << (*iter).second << ' ';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 system("PAUSE");
 
 
        return 0;
}
//---------------------------------------------------------------------------
Добавлено через 40 минут
пробовал заливать в онлайн компилятор. он выдал "No errors or program output". Не пойму что же тут не так
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru