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

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

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

Программа зависает при загрузке файла - C++

29.05.2012, 22:10. Просмотров 615. Ответов 6
Метки нет (Все метки)

Добрый день. Недавно я написал свою первую программу. Возникла проблема, с которой я не могу разобраться. Программа работает нормально, если запускать ее через компилятор. Но при запуске .exe файла зависает во время загрузки файла. Может кто-нибудь сказать, в чем может быть проблема?

Вот код:
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 <string>
#include <Windows.h>
#include <fstream>
using namespace std;
int data1(int dat);
// -------------------------------------------------------------------------------------------
void FilePrint(int t, int n)
{
    string M[2][10] = {{"1_1", "1_2", "1_3", "1_4", "1_5", "1_5", "1_6", "1_7", "1_8", "1_9"}, 
                       {"2_1", "2_2", "2_3", "2_4", "2_5", "2_5", "2_6", "2_7", "2_8", "2_9"}};
    string s, p;
 
    p = "num//"+M[t][n]+".txt";
    ifstream f(p);
    getline(f, s);
    cout << s << endl;
    f.close();  
}
// -------------------------------------------------------------------------------------------
int chislo(string value)
{
    int *a,summa=0;
    char tabl[9][8]={   {'а','и','с','ъ','А','И','С','Ъ'},
                        {'б','й','т','ы','Б','Й','Т','Ы'},
                        {'в','к','у','ь','В','К','У','Ь'},
                        {'г','л','ф','э','Г','Л','Ф','Э'},
                        {'д','м','х','ю','Д','М','Х','Ю'},
                        {'е','н','ц','я','Е','Н','Ц','Я'},
                        {'ё','о','ч',' ','Ё','О','Ч',' '},
                        {'ж','п','ш',' ','Ж','П','Ш',' '},
                        {'з','р','щ',' ','З','Р','Щ',' '},
                    };
    a = (int*)malloc(value.size());
    for (int i=0; i < value.size();i++)
    {
        for(int j=0;j<9;j++)
        {
            for(int k=0;k<8;k++)
            {
                if (value[i]==tabl[j][k])
                {
                    a[i]=j+1;
                }
            }
        }
    }
    for(int i=0;i<value.size();i++)
    {
        summa+=a[i];
    }
    
    return data1(summa);    
}
// -------------------------------------------------------------------------------------------
int data1(int dat)
{
    while(9<dat)
    {
        dat = dat%10+dat/10;
    }
    return dat;
}
// -------------------------------------------------------------------------------------------
void data()
{
    char n;
    int t,m,j;
    cout << "Введите день рождения: ";
    cin >> t;
    cout << "Введите месяц рождения: ";
    cin >> m;
    cout << "Введите год рождения: ";
    cin >> j;
    int x;
    x = data1(t)+data1(m)+data1(j);
    x = data1(x);
    cout << "Число даты рождения равно: " << x << endl;
    FilePrint(1,x-1);
}
// -------------------------------------------------------------------------------------------
 
// -------------------------------------------------------------------------------------------
void imya()
{
    string name,fam;
    cout << "Введите имя: ";
    cin >> name;
    cout << "Введите Фамилию: ";
    cin >> fam;
    int imja;
    imja = chislo(name)+chislo(fam);
    imja = data1(imja);
    cout << "Число имени: " << imja << endl;
    FilePrint(0,imja-1);
}
// -------------------------------------------------------------------------------------------
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n=0;
    do
    {
        cout << "Введите 1 если хотите найти число имени" << endl;
        cout << "Bведите 2 для числа даты рождения" << endl;
        cout << "Или введите 0 для выхода: ";
        cin >> n;
        if (n == 0)
        {
            return 0;
        }
        else if (n==1)
        {
            system("cls");
            imya();
        }
        else if (n==2)
        {
            system("cls");
            data();
        }
        else
        {
            system("cls");
            cout << "Ошибка ввода, попробуйте еще раз!"<<endl;
        }
    }
    while(n!=1 || n!=2);
    system("pause");
}
Программа для любителей нумерологии. Вырешивает число имени и число даты рождения. Для каждого числа свой файл с описанием, которое потом выводиться в консоли. Для даты и для имени создал отдельные функции. Через .exe файл функция числа даты рождения работает нормально, показывает результат, но функция числа имени как раз таки зависает. помогите, плиз.

P.S.: Программа первая, если корявый код, прошу сильно не пинать )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2012, 22:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Программа зависает при загрузке файла (C++):

Зависает программа при вычислении - C++
Здравствуйте. Программа написана на Dev c++. При компиляции происходит зависание программы. Никак не могу понять в чем дело. ...

Программа зависает при вводе значения b - C++
Помогите пожалуйста. Когда я в прогарамме ввожу значения b, программа &quot;застряла&quot;. #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include...

Программа зависает при очищении памяти - C++
Здраствуйте. Написал программу, вроде работает нормально, только при окончании зависает. Вот код: #include &lt;iostream&gt; #include...

При передаче ссылки на указатель программа зависает - C++
Почему это не работает (точнее работает но зависает т.к. в set_val_to23() ссылка на указатель val передаётся со значением 0: main(): ...

Программа зависает при выводе однонаправленного списка - C++
создал однонаправленный список. все компилится, но при попытке вывода - прога зависает уже горит, так как уже создал буффер для хранения...

Не находит символа при загрузке с файла - C++
Доброго времени суток !!! :) Есть задача : Написать программу, которая считывает английский текст из файла и выводит его на экран,...

6
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
30.05.2012, 01:32 #2
Цитата Сообщение от Otoko Посмотреть сообщение
Но при запуске .exe файла зависает во время загрузки файла.
очевидно, что у вас файл не там где надо лежит
0
Avazart
Эксперт С++
7586 / 5571 / 330
Регистрация: 10.12.2010
Сообщений: 24,993
Записей в блоге: 17
30.05.2012, 01:41 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void FilePrint(int t, int n)
{
    string M[2][10] = {{"1_1", "1_2", "1_3", "1_4", "1_5", "1_5", "1_6", "1_7", "1_8", "1_9"}, 
                       {"2_1", "2_2", "2_3", "2_4", "2_5", "2_5", "2_6", "2_7", "2_8", "2_9"}};
    string s, p;
 
    p = "num//"+M[t][n]+".txt";
 
    ifstream f(p); // Странно  может ifstream f(p.c_str()); ? 
    if(f) // Проверка открыт ли поток для файла
     {
      getline(f, s);
      cout << s << endl;
      f.close();  
     }
   else cerr<<"Error: file not found!!!"<<endl;
}
Добавлено через 1 минуту
А что хранится в файле что в нем читается только первая строчка?
0
Otoko
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 5
30.05.2012, 01:53  [ТС] #4
Цитата Сообщение от defer Посмотреть сообщение
очевидно, что у вас файл не там где надо лежит
вторая часть программы работает нормально, файлы берутся из одной папки.

Добавлено через 5 минут
Цитата Сообщение от Avazart Посмотреть сообщение
А что хранится в файле что в нем читается только первая строчка?
В файле небольшие тексты некоторые в 1 строку, некоторые в 2. Сейчас перепроверил, текст в 1 строку сработал как надо, в две строки не хочет. Вторая часть программы работает нормально, не взирая на то, сколько строк.
0
Avazart
Эксперт С++
7586 / 5571 / 330
Регистрация: 10.12.2010
Сообщений: 24,993
Записей в блоге: 17
30.05.2012, 01:55 #5
Повторяю: судя по коду FilePrint() с файла читается только первая строчка и только
0
Otoko
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 5
30.05.2012, 10:43  [ТС] #6
Цитата Сообщение от Avazart Посмотреть сообщение
Повторяю: судя по коду FilePrint() с файла читается только первая строчка и только
Я посмотрел по внимательней, и действительно, читается только первая строка. Хотелось бы знать как сделать, чтоб читал весь файл.

И еще, возможно так, что зависание происходит не во время чтения файла?
Вот кусок кода именно этого фрагмента:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void imya()
{
    string name,fam;
    cout << "Введите имя: ";
    cin >> name;
    cout << "Введите Фамилию: ";              // До этого момента программа работает нормально
    cin >> fam;                               // После ввода фамилии нажимаю Enter
    int imja;
    imja = chislo(name)+chislo(fam);
    imja = data1(imja);
    cout << "Число имени: " << imja << endl;  // Вот эту строчку уже не выводит, так как программа зависает
    FilePrint(0,imja-1);
}
может быть проблема в вырешивании переменной imja?
0
Avazart
Эксперт С++
7586 / 5571 / 330
Регистрация: 10.12.2010
Сообщений: 24,993
Записей в блоге: 17
30.05.2012, 14:14 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void imya()
{
    string name,fam;
    cout << "Введите имя: ";
    cin >> name;    cin.sync(); //!!!
    cout << "Введите Фамилию: ";            
    cin >> fam;      cin.sync();   //!!!                    
    int imja;
    imja = chislo(name)+chislo(fam);
    imja = data1(imja);
    cout << "Число имени: " << imja << endl; 
    FilePrint(0,imja-1);
}
1
30.05.2012, 14:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2012, 14:14
Привет! Вот еще темы с ответами:

При загрузке из файла дублируется запись - C++
Добрый вечер! Не пойму в чем ошибка, дублируется запись при загрузке из файла! Помогите пожалуйста! Спасибо большое! #include &quot;stdafx.h&quot; ...

Обработка конца строки при загрузке из файла - C++
День добрый. Помогите, пожалуйста. Исходные данные. Есть класс: class ThingPtr { string word; vector &lt;int&gt;...

При загрузке списка из файла дублируется последняя строка - C++
Здравствуйте! Такая проблема: Выгружаю список в файл. С процедурой выгрузки проблем нет. Всё сохраняет корректно. Но при загрузке списка...

При запуске из среды программа работает, при запуске выполняемого файла выдает ошибку - C++
Добавлено через 1 минуту 35 секунд как исправить ошибки в названии темы? там должно было быть исполняемого файла


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

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

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