Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.01.2017
Сообщений: 13
1

Неинициализированная переменная

26.03.2018, 16:55. Показов 660. Ответов 11
Метки нет (Все метки)

Написал код для работы с файлами, объявил переменную r как объект класса (могу ошибаться в правильности), и пишет что переменная не инициализирована. Пытался создать метод где ей даются определенные значения, нули к примеру, но после выполнения программы последние записанные данные в файл перезаписываются в эти же нули. Что делать посоветуете?

C++
1
2
3
4
5
6
7
8
9
10
11
int main() {
    int vibor;
    State r; // место где выбивает ошибку (error C4700: использована неинициализированная локальная переменная "r")
//  r.setdata();
    ifstream q("kol.txt");
    q >> i;
    q.close();
    arr s;
    for (int k = 0; k < i; k++) {
        s.output(r, k);
    }
Если нужно скинуть больше кода - дайте знать
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2018, 16:55
Ответы с готовыми решениями:

Неинициализированная переменная
int main() { system(&quot;color 3F&quot;); SET_LOCALE int transaction_number; int temp_tr_num;

неинициализированная переменная
Дано натуральное число N. Найти все натуральные числа меньше N, которые одновременно являются...

Неинициализированная переменная
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; double func_x() { double x;...

Неинициализированная переменная в классе
Привет, я проверяю всякие разности в С++ и наткнулся на непонятное мне явление. Я могу использовать...

11
1122 / 851 / 394
Регистрация: 30.10.2017
Сообщений: 2,382
26.03.2018, 16:59 2
Конструктор по умолчанию есть у класса State? Или воспользуйтесь имеющимся конструктором, то есть при инициализации передайте значения согласно спецификации конструктора.
0
0 / 0 / 0
Регистрация: 18.01.2017
Сообщений: 13
26.03.2018, 17:02  [ТС] 3
С конструктором тоже определенные проблемы были
Для ясности лучше сделаю так

Кликните здесь для просмотра всего текста

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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#include"stdafx.h"
#include<iostream>
#include<conio.h>
#include<string>
#include<fstream>
#include<iomanip>
#include<vector>
#include<windows.h>
 
#pragma warning(disable:4996)
 
using namespace std;
 
int i;
 
class State {
private:
    int number;
    char thing[10];
    char whatdo[10];
    char type[10];
public:
    void getdata() {
        cout << "Number of statement: "; cin >> number;
        cout << "What need to do: "; cin >> thing;
        cout << "What you need to do with the order: "; cin >> whatdo;
        cout << "What type of printing: "; cin >> type;
    }
    void out(int d);
    void showdata(int)const;
    void in();
    void record_states();
    void removedata(int n);
    void setdata() {
    /*  number = 0;
        thing[10] = ' ';
        whatdo[10] = ' ';
        type[10] = ' ';*/
    }
};
void State::showdata(int numb)const {
    cout << numb + 1 << ")" << number << '\t' << thing << '\t' << whatdo << '\t' << type << '\t' << endl;
}
void State::out(int d) {
    ifstream k("k.txt");
    for (int z = 0; z < d; z++) {
        char* str = new char[100];
        k.getline(str, 100);
    }
    k >> number; k >> thing; k >> whatdo; k >> type;
}
void State::in()
{
    ofstream zapis("k.txt", ios::app);
    zapis << number << " "; zapis << thing << " "; zapis << whatdo << " "; zapis << type << " ";
    zapis.close();
}
void State::removedata(int n) {
    ifstream read("statements.txt"); // rewrite
}
void State::record_states() {
    ofstream record_pupil("statements.txt", ios::app);
    record_pupil << number << " "; record_pupil << thing << " "; record_pupil << whatdo << " "; record_pupil << type << " ";
    record_pupil.close();
}
class arr :public State {
private:vector<State> p;
public:
    void add(State);
    void display(int)const;
    void output(State, int);
    void correct(int);
    void record_order(int);
    void statements_record(int);
};
 
void arr::add(State s) {
    p.push_back(s);
}
void arr::display(int d)const {
    p[d].showdata(d);
}
void arr::output(State s, int d) {
    s.out(d);
    p.push_back(s);
}
void arr::correct(int d) {
    p[d].getdata();
}
void arr::record_order(int number)
{
    p[number].in();
}
void arr::statements_record(int end)
{
    p[end].record_states();
}
 
int main() {
    int vibor;
    State r;
//  r.setdata();
    ifstream q("kol.txt");
    q >> i;
    q.close();
    arr s;
    for (int k = 0; k < i; k++) {
        s.output(r, k);
    }
    char ch;
    do {
        cout << "1. Add" << endl << "2. Correct information" << endl << "3. Show information" << endl << "4. Delete information\n";
        cin >> ch;
        switch (ch) {
        case '1': {
            system("cls");
            cout << "Enter the information for " << i + 1 << " statement:" << endl;;
            r.getdata();
            s.add(r);
            i++;
            ofstream b("kol.txt");
            b << i;
            break; }
        case '2': {
            system("cls");
            for (auto j = 0; j < i; j++)
                s.display(j);
            cout << endl << "Enter the number from list: "; cin >> vibor;
            s.correct(vibor - 1);
            break;
        }
        case '3': {
            if (i == 0)
            {
                system("cls");
                cout << "There is no statements";
                Sleep(1000);
            }
            system("cls");
            for (auto j = 0; j < i; j++) {
                s.display(j);
            }
            break;
        }
        case '4':
            for (auto j = 0; j < i; j++) {
                s.display(j);
            }
            int b;
            cout << "What number of statement need to delete?\n";
            cin >> b;
            s.removedata(b);
        }
        cout << endl;
        cout << "If you want to continue push Y,else N:";
        cin >> ch;
        system("cls");
    } while (ch != 'N');
    ofstream record_order("statements.txt", ios::out);
    record_order.close();
    for (int n = 0; n < i; n++)
    {
        s.statements_record(n);
    }
    if (i != 0) {
        system("cls");
        cout << "Please wait, recording data to a file\n";
        Sleep(2000);
        ofstream z("k.txt", ios::out);
        z.close();
        for (int q = 0; q < i; q++)
        {
            s.record_order(q);
        }
    }
    system("pause");
    return 0;
}
0
1122 / 851 / 394
Регистрация: 30.10.2017
Сообщений: 2,382
26.03.2018, 17:07 4
MrHarrys, у вас в классе переменная number и массивы не инициализированы. Создайте конструктор по умолчанию или проинициализируйте переменную и массивы в описании класса.
0
0 / 0 / 0
Регистрация: 18.01.2017
Сообщений: 13
26.03.2018, 17:17  [ТС] 5
Так вот мне этого наоборот и не надо, потому что после каждого закрытия программы последние записанные данные в файл будут перезаписываться с каждым последующим запуском кода
0
470 / 422 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
26.03.2018, 17:18 6
C++
1
2
3
4
5
6
    ifstream k("k.txt");
    for (int z = 0; z < d; z++) {
        char* str = new char[100];
        k.getline(str, 100);
    }
    k >> number; k >> thing; k >> whatdo; k >> type;
Что это вообще такое?
0
1122 / 851 / 394
Регистрация: 30.10.2017
Сообщений: 2,382
26.03.2018, 17:20 7
MrHarrys, как связаны конструктор и запись в файл? У вас конструктор должен только проинициализировать переменную и массивы. В этом все его предназначение.
0
470 / 422 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
26.03.2018, 17:35 8
И зачем вы наследуете в arr - State, если не пользуетесь ничем от базового? За исключением неудачного считывания. Но зачем тогда контейнер внутри класса?
0
1265 / 1023 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
26.03.2018, 17:55 9
Цитата Сообщение от MrHarrys Посмотреть сообщение
Так вот мне этого наоборот и не надо, потому что после каждого закрытия программы последние записанные данные в файл будут перезаписываться с каждым последующим запуском кода
Тогда открывайте файл в режиме добавления (ios::app).
0
470 / 422 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
26.03.2018, 18:11 10
likehood, он у него так и открывается)
Само добавление правда корявое
0
1265 / 1023 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
26.03.2018, 18:42 11
Цитата Сообщение от SuperKir Посмотреть сообщение
он у него так и открывается
А, там и полный код есть, не заметил. Тогда тем более непонятно чего хочет ТС. Хотя, в 121 строке файл открывается в обычном режиме - может в этом проблема.

Но код конечно странный. Функция out читает из файла, in - пишет. Файлы открываются и тут же закрываются. Тут надо всю логику проверять.
0
470 / 422 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
26.03.2018, 18:52 12
Цитата Сообщение от likehood Посмотреть сообщение
Но код конечно странный. Функция out читает из файла, in - пишет. Файлы открываются и тут же закрываются. Тут надо всю логику проверять.
Её там нет. Без обид ТСу
MrHarrys, я бы посоветовал переписать всё с 0. Составить четкий алгоритм, логичный. Разобраться в наследовании, которое тут совершенно ни к чему и используется ужасно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2018, 18:52

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Использована неинициализированная переменная
Я недавно начал изучать программирование на С++. Вот есть задание сделать программу, которая...

Неинициализированная локальная переменная
#include &quot;stdafx.h&quot; int main() { struct queue { int data; queue *next; }; queue...

Локальная неинициализированная переменная
Прочитал в учебнике, что обращение к локальной неинициализированной переменной это ошибка, ради...

Использована неинициализированная локальная переменная
Здравствуйте. Подскажите, пожалуйста, в чем тут ошибка? Вроде бы все правильно. Создаются...


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

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

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