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

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

Восстановить пароль Регистрация
 
Otoko
 Аватар для Otoko
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 5
29.05.2012, 22:10     Программа зависает при загрузке файла #1
Добрый день. Недавно я написал свою первую программу. Возникла проблема, с которой я не могу разобраться. Программа работает нормально, если запускать ее через компилятор. Но при запуске .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.: Программа первая, если корявый код, прошу сильно не пинать )))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
defer
秘密
 Аватар для defer
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
30.05.2012, 01:32     Программа зависает при загрузке файла #2
Цитата Сообщение от Otoko Посмотреть сообщение
Но при запуске .exe файла зависает во время загрузки файла.
очевидно, что у вас файл не там где надо лежит
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,606
Записей в блоге: 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 минуту
А что хранится в файле что в нем читается только первая строчка?
Otoko
 Аватар для Otoko
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 5
30.05.2012, 01:53  [ТС]     Программа зависает при загрузке файла #4
Цитата Сообщение от defer Посмотреть сообщение
очевидно, что у вас файл не там где надо лежит
вторая часть программы работает нормально, файлы берутся из одной папки.

Добавлено через 5 минут
Цитата Сообщение от Avazart Посмотреть сообщение
А что хранится в файле что в нем читается только первая строчка?
В файле небольшие тексты некоторые в 1 строку, некоторые в 2. Сейчас перепроверил, текст в 1 строку сработал как надо, в две строки не хочет. Вторая часть программы работает нормально, не взирая на то, сколько строк.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,606
Записей в блоге: 17
30.05.2012, 01:55     Программа зависает при загрузке файла #5
Повторяю: судя по коду FilePrint() с файла читается только первая строчка и только
Otoko
 Аватар для 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?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2012, 14:14     Программа зависает при загрузке файла
Еще ссылки по теме:

При загрузке списка из файла дублируется последняя строка C++
Программа зависает при вводе значения b C++
При загрузке из файла дублируется запись C++

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,606
Записей в блоге: 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);
}
Yandex
Объявления
30.05.2012, 14:14     Программа зависает при загрузке файла
Ответ Создать тему
Опции темы

Текущее время: 16:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru