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

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

Войти
Регистрация
Восстановить пароль
 
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 272
#1

Есть ли ошибка? - C++

07.11.2011, 23:08. Просмотров 467. Ответов 12
Метки нет (Все метки)

сам класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class stud_file
{
map <string, list<string> > data;
 
public:
    
    stud_file (string s)
    {
        ifstream FS; //Fs(s) ?
        FS.open(s);
        string Fam, pred;
        while(!FS.eof())
        {
            FS >> Fam;
            FS >> pred;
            data[pred].push_back(Fam);
        }
                      FS.close();
    }
 
 
};
Обращение
C++
1
    stud_file Stud("file.txt");
При запуске утекает память)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2011, 23:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Есть ли ошибка? (C++):

есть код и есть ошибка нужно найти дырку - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; int main(int argc, char *argv) { int i,size,n; ...

Есть ли ошибка в операторах - C++
Задано опис: FILE f1,f2; float f; long l; char c;Каждый вариант вопроса содержит фрагмент программы, использующей приведенные...

есть ли ошибка в программе? - C++
задание Дано натуральное число, найти сумму его делителей. Вывести все делители и их сумму на печать. начинается ли ряд чисел с 1( в...

Системы счисления (есть ошибка) - C++
Начал учить си. Захотел написать конвертер. В итоге такая проблемка: переменная k при создании массива работать должна как счетчик. При...

Есть ли ошибка в коде. Не могу найти. - C++
#include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;conio.h&gt; int summa(char *st) { int i; i=0; while ( st ) { if ((st &gt;=...

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

12
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.11.2011, 23:15 #2
Цитата Сообщение от IcyWind Посмотреть сообщение
При запуске утекает память)
если вы сами нигде явно память не выделяете (с помощью оператора new), то утечки быть не может, деструкторы map, fstream, string, etc. обо всем позаботятся
0
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 272
07.11.2011, 23:20  [ТС] #3
запускаю программу
открываю диспетчер задач
нахожу процесс с именем программы
и за 3-5 секунд он уже жрёт 500мб оперативки)
в текстовом файле - 4 строчки)
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
07.11.2011, 23:28 #4
Давайте сюда весь код.
0
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 272
07.11.2011, 23:29  [ТС] #5
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
#include "stdafx.h"
#include <algorithm>
#include <iostream>
#include <string>
#include <fstream>
#include <list>
#include <map>
using namespace std;
 
/*
математику mas[0]
физику     mas[1]
биологию   mas[2]
химию      mas[3]
*/
 
class stud_file
{
map <string, list<string> > data;
 
public:
    
    stud_file (string s)
    {
        ifstream FS; //Fs(s) ?
        FS.open(s);
        string Fam, pred;
        while(!FS.eof())
        {
            FS >> Fam;
            FS >> pred;
            data[pred].push_back(Fam);
        }
        FS.close();
    }
 
 
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, "Rus");
    const int n = 4;
    int mas[n] = {0,0,0,0};
 
    stud_file Stud("file.txt"); //тут виснит
 
    cout<<"†††††††††††††††††††††††††††††††††††††††††††††\n";
    cout<<"Установите нужные параметры поиска\n";
    int con = 0;
    while (con !=-1)
    {
        cout<<"†††††††††††††††††††††††††††††††††††††††††††††\n";
        cout<<"математика     => 0\n";
        cout<<"физика         => 1\n";
        cout<<"биология       => 2\n";
        cout<<"химия          => 3\n";
        cout<<"текущий выбор  => 101\n";
        cout<<"вывести список => 102\n";
        cout<<"Выйти          => -1\n";
        cin >> con;
 
        switch (con)
        {
        case 0:
        case 1:
        case 2:
        case 3:
            {
                cout<<"изучает   =>1\n";
                cout<<"неважно   =>0\n";
                cout<<"неизучает =>-1\n";
                int i;
                cin>>i;
                mas[con] = i;
                break;
            }
        case 101:
            {
                for_each(&mas[0], &mas[n], [](int x){cout<<x<<' ';});
                cout<<"\n";
            }
        }
    }
    return 0;
}
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.11.2011, 23:34 #6
C++
1
 FS.open(s.c_str());
0
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 272
07.11.2011, 23:36  [ТС] #7
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
C++
1
 FS.open(s.c_str());
не могли бы пояснить, что это за метод и почему мой вариант - неправильный
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.11.2011, 23:42 #8
Цитата Сообщение от IcyWind Посмотреть сообщение
не могли бы пояснить, что это за метод и почему мой вариант - неправильный
конструктор std::ifstream принимает char *
в std::string есть метод c_str() который и возвращает строку в стиле Си, т.е. char *
0
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 272
07.11.2011, 23:44  [ТС] #9
не помогло...исправил тип в конструкторе
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
#include "stdafx.h"
#include <algorithm>
#include <iostream>
#include <string>
#include <fstream>
#include <list>
#include <map>
using namespace std;
 
/*
математику mas[0]
физику     mas[1]
биологию   mas[2]
химию      mas[3]
*/
 
class stud_file
{
map <string, list<string> > data;
 
public:
    
    stud_file (char *s)
    {
        ifstream FS; //Fs(s) ?
        FS.open(s);
        string Fam, pred;
        while(!FS.eof())
        {
            FS >> Fam;
            FS >> pred;
            data[pred].push_back(Fam);
        }
        FS.close();
    }
 
 
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, "Rus");
    const int n = 4;
    int mas[n] = {0,0,0,0};
 
    stud_file Stud("file.txt");
 
    cout<<"†††††††††††††††††††††††††††††††††††††††††††††\n";
    cout<<"Установите нужные параметры поиска\n";
    int con = 0;
    while (con !=-1)
    {
        cout<<"†††††††††††††††††††††††††††††††††††††††††††††\n";
        cout<<"математика     => 0\n";
        cout<<"физика         => 1\n";
        cout<<"биология       => 2\n";
        cout<<"химия          => 3\n";
        cout<<"текущий выбор  => 101\n";
        cout<<"вывести список => 102\n";
        cout<<"Выйти          => -1\n";
        cin >> con;
 
        switch (con)
        {
        case 0:
        case 1:
        case 2:
        case 3:
            {
                cout<<"изучает   =>1\n";
                cout<<"неважно   =>0\n";
                cout<<"неизучает =>-1\n";
                int i;
                cin>>i;
                mas[con] = i;
                break;
            }
        case 101:
            {
                for_each(&mas[0], &mas[n], [](int x){cout<<x<<' ';});
                cout<<"\n";
            }
        }
    }
    return 0;
}
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
07.11.2011, 23:52 #10
Цитата Сообщение от IcyWind Посмотреть сообщение
не помогло...исправил тип в конструкторе
добавьте условие на проверку открытия файла
0
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 272
07.11.2011, 23:54  [ТС] #11
эээ с файлами - беда...вообще не знаком с ними
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
08.11.2011, 00:03 #12
Цитата Сообщение от IcyWind Посмотреть сообщение
эээ с файлами - беда...вообще не знаком с ними
попробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
if (FS.is_open()) {
    string Fam, pred;
    while(!FS.eof())
    {
        FS >> Fam;
        FS >> pred;
        data[pred].push_back(Fam);
    }
    FS.close();
}
0
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 272
08.11.2011, 00:18  [ТС] #13
Вроде он пропустил...хм...значит - не открыт, зараза

Добавлено через 7 минут
ой блин, сори...я не в тот проект файл закидывал...

Добавлено через 1 минуту
Кстати, вернул стринг обратно на место char *. работает
0
08.11.2011, 00:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2011, 00:18
Привет! Вот еще темы с ответами:

Перевести код с Pascal в С++(и там одна ошибка есть) - C++
Program lab; var s,p,q,n,i: integer; begin s:=1; p:=0; q:=0; for i:=1 to n do begin p:=p+cos(i:real);

Составление программы решение простейшего уравнения. Есть ошибка - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { cout &lt;&lt; &quot;a - x = 0&quot;; double a,x; cout &lt;&lt; &quot;set...

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

Программа для подсчета площади треугольника, есть ошибка - C++
Надо создать программу что бы она вычисляла площад треуголника и должна запустится win32 окна визуал. вот код но тут что то не так. ...


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

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

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