Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 5
Регистрация: 19.10.2013
Сообщений: 75
1

Прекращена работа программы, неполадки с конструктором

07.01.2014, 15:54. Показов 631. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При запуске выбывает "Прекращена работа программы".
Скорее всего проблемы с конструктором для
C++
1
 Note mas[8];
. Может намудрил с указателем на int.
Не могу разобраться, помогите пожалуйста)

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
#include "stdafx.h"
#include "iostream"
#include "stdio.h"
#include "string.h"
 
using namespace std;
 
int menu();
void vivod();
void vvod();
 
class Note
{
private:
    char imya[10];
    char fam[10];
    char tel[15];
    int date[3];
public:
    Note(){assign("\0", "\0", "\0", 0);}
    Note(char* im, char* f, char* t, int* d){assign(im, f, t, d);}
    void assign(char* im, char* f, char* t, int* d);
    /*Ф-ции возвращающие значения полей*/
    char* getIm(){return imya;}
    char* getFm(){return fam;}
    char* getTel(){return tel;}
    int* getDate(){return date;}
    /*Ф-ции устанавливающие значения полей*/
    void setIm(char* im){strcpy(imya, im);}
    void setFm(char* f){strcpy(fam, f);}
    void setTel(char* t){strcpy(tel, t);}
    void setDate(int* d)
    {
        for(int i = 0; i < 3; i++)
            date[i] = d[i];
    }   
};
 
void Note::assign(char *im, char *f, char* t, int *d)
{
    strcpy(imya, im);
    strcpy(fam, f);
    strcpy(tel, t);
    for(int i = 0; i < 3; i++)
        date[i] = d[i];
}
 
Note mas[8];
 
int _tmain(int argc, _TCHAR* argv[])
{
    for(;;)
    {
        switch(menu())
        {
        case 1 : vvod(); break;
        case 4 : exit(0);
        }
    }
    return 0;
}
 
int menu()
{
    int c;
    cout << "1. Vvod\n2. Vivod\n3. Vivod po familii\n 4. Exit()\n";
    cin >> c;
    return c;
}
 
void vvod()
{
    /*Ввод*/
    char im[10], f[10], t[15];
    int d[3], count, sort[10];
 
    cout << "Vvedite kolichestvo chelovek:  ";
    cin >> count;
 
    for(int i = 0; i < count; i++)
    {
        cout << "\n**********" ;
        cout << "Familiya:  ";
        cin >> f;
        cout << "Imya:      ";
        cin >> im;
        cout << "Telefon:   ";
        cin >> t;
        cout << "Date(dd.mm.gggg):      ";
        scanf_s("%d.%d.%d", &d[0], &d[1], &d[2]);
 
        mas[i].assign(im, f, t, d);
    }   
    
    for(int i = 0; i < count-1; i++)
        for(int j = i; j < count; j++)      
            if(mas[i].getTel() > mas[j].getTel())
                swap(mas[i], mas[j]);       
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2014, 15:54
Ответы с готовыми решениями:

Прекращена работа программы
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include...

Прекращена работа программы
Завершаю приложение нажав на крестик. Так же есть дополнительная кнопка в приложении для его...

Прекращена работа программы
Как можна переделать это код, чтобы испоьзовать классы, а не функции стандартного ввода-вывода? ...

Прекращена работа программы
помогите с проблемой. все файлы есть, проверял, компилируется нормально в devc++, но после запуска...

5
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
07.01.2014, 16:04 2
Конструктор по умолчанию.
C++
1
    Note(){int d[3]={0};assign("\0", "\0", "\0", d);}
1
100 / 100 / 47
Регистрация: 19.11.2012
Сообщений: 195
07.01.2014, 16:07 3
при создании объекта типа Note
C++
1
Note mas[8];
вызывается его конструктор
C++
1
Note() {assign("\0", "\0", "\0", 0);}
который вызывает функцию
C++
1
void assign(char* im, char* f, char* t, int* d);
и передает ей параметры, в т.ч. и указатель на 0 адрес памяти компьютера, в котором ничего нет(мусор)
и функция assign пытается записать в int date[3]; этот мусор с адреса 0x00000000
C++
1
date[i] = d[i];
как вариант можете в конструкторе создавать массив, заполнять как-нибудь, и передвать в assign
C++
1
2
3
4
5
6
7
        Note() {
            int * mas = new int[3];
            for (int i=0; i<3; i++)
                mas[i]=0;
            assign("\0", "\0", "\0", mas);
            delete [] mas;
        }
так не вылетает
0
2 / 2 / 5
Регистрация: 19.10.2013
Сообщений: 75
07.01.2014, 16:18  [ТС] 4
TrueBit,
а без динамической памяти как?
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
07.01.2014, 16:19 5
Цитата Сообщение от HUSTLIN Посмотреть сообщение
а без динамической памяти как?
Я уже написал, как.
1
2 / 2 / 5
Регистрация: 19.10.2013
Сообщений: 75
07.01.2014, 16:20  [ТС] 6
Всем спасибо, все работает)
0
07.01.2014, 16:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2014, 16:20
Помогаю со студенческими работами здесь

Прекращена работа программы
Здравствуйте! На C# было разработано приложении. Но при запуске исполняемого файла выходит: В...

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

Прекращена работа программы
Ошибки следующие: Прекращена работа программы &quot;(название игры)&quot;. Жму ок, далее второе окно...

Прекращена работа программы
Опять проблема и опять WPF, около месяца работал над одной программой, там есть база данных, и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru