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

Ошибка: неинициализированные переменные - C++

Восстановить пароль Регистрация
 
tema47
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 67
08.05.2014, 11:09     Ошибка: неинициализированные переменные #1
Требовалось оформить класс ORDER, ошибка на 103-ей строке про неинициализированные переменные, помогите исправить.

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
#include <iostream>
#include <fstream>
using namespace std;
 
int const n=21;
 
class ORDER
{
public:
    char plat[n], pol[n];                 //Ввод счета длиной 20 символов
    double summa;
public:
    void setDATA (char plat_s, char pol_s, double summa_r)
    {
        plat[n] = plat_s;
        pol[n] = pol_s;
        summa = summa_r;
    }
 
    void getDATA()
    {
        ORDER Spisok[21];
        ifstream fin;
        fin.open ("input.txt");                                     //Чтение данных из файла
        cout <<"--------------------------------------------------------------------------------"<<"Чтение данных из файла."<<endl;
        for (int i=1;i<=3;i++)
        {
            int a;
            fin >> a;
            cout<<"# "<<i<<endl<<"Плательщик - "<<Spisok[i].plat<<endl
            <<"Получатель - "<<Spisok[i].pol<<endl<<"Сумма - "<<Spisok[i].summa<<" руб."<<endl<<endl;
        }
        cout <<"--------------------------------------------------------------------------------";
        fin.close ();
    }
 
    void sort()
    {
        ORDER tmp;
        ORDER Spisok[21];
        for (int i=1;i<=3;i++)                              //Сортировка по расчетным счетам плательщиков (исправить)
        for (int j=1;j<=3;j++)
        {
            if (i!=j)
            if (strcmp(&Spisok[i].plat[0], &Spisok[j].plat[0]))
            {
                tmp=Spisok[j];
                Spisok[j]=Spisok[i];
                Spisok[i]=tmp;
            }
        }
        cout<<"Сортировка по расчетным счетам плательщиков.";
        for (int i=1;i<=3;i++)
        cout<<endl<<"# "<<i<<endl<<"Плательщик - "<<Spisok[i].plat<<endl
        <<"Получатель - "<<Spisok[i].pol<<endl<<"Сумма - "<<Spisok[i].summa<<" руб."<<endl;
        cout << "--------------------------------------------------------------------------------";
    }
 
    void search()
    {
        bool r=false;
        ORDER Spisok[21];
        double snyataya_summa=0;
        char nomer_plat[21];
        cout<<"Введите номер расчетного счета (плательщика): ";                 //Поиск расчетного счета
        cin>>nomer_plat;
        for (int i=1;i<=3;i++)
        if (strcmp(&Spisok[i].plat[0], &nomer_plat[0]) == 0 )
        {
            snyataya_summa+=Spisok[i].summa;
            r=true;
        }
        if (r==true)
        cout<<"С расчетного счета "<<nomer_plat<<" снято "<<snyataya_summa<<" руб."<<endl;
        else
        cout<<"Такого расчетного счета нет!"<<endl;
    }
};
 
 int main()
{
    setlocale (LC_ALL, "rus");
    char plat[n], pol[n];
    double summa;
    ofstream fout;
    ORDER Spisok[21];
    fout.open ("input.txt");                                    //Запись данных в файл
    ORDER *obj = new ORDER;
    for (int i=1;i<=3;i++)
    { 
        cout<<"# "<<i<<endl;
        cout<<"Расчетный счет плательщика: ";
        cin>>Spisok[i].plat;
        cout<<"Расчетный счет получателя: ";
        cin>>Spisok[i].pol;
        cout<<"Перечисляемая сумма в руб.: ";
        cin>>Spisok[i].summa;
        cout << endl;
        fout<<"# "<<i<<endl<<"Плательщик - "<<Spisok[i].plat<<endl
        <<"Получатель - "<<Spisok[i].pol<<endl<<"Сумма - "<<Spisok[i].summa<<" руб."<<endl<<endl;
    }
    fout.close();
    obj->setDATA(plat[n], pol[n], summa);
    obj->getDATA();
    obj->sort();    
    obj->search();
    delete obj;
    system("PAUSE");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
08.05.2014, 11:15     Ошибка: неинициализированные переменные #2
ну ты на 84-й строчке объявляешь переменную double summa;, потом не присвоив ей никакого значения суёшь её в свою функцию на 103-й строчке. Присвой ей что надо сперва
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
08.05.2014, 11:15     Ошибка: неинициализированные переменные #3
У тебя в 84 строке объявлена переменная summa, но ей не присвоено значение. То есть там мусор.
tema47
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 67
08.05.2014, 11:28  [ТС]     Ошибка: неинициализированные переменные #4
newbie666, Если я это уберу у меня сразу красным отмечается 103 строчка, в классе вроде описал

Добавлено через 4 минуты
fishec, Я её сейчас обнулил, теперь выдает ошибку на 103-ой строчке касающиеся plat, pol
newbie666
Заблокирован
08.05.2014, 11:32     Ошибка: неинициализированные переменные #5
Цитата Сообщение от tema47 Посмотреть сообщение
Если я это уберу у меня сразу красным отмечается 103 строчка, в классе вроде описал
Пфф... ну ты что в 1-м классе что ли на самом деле? Или во втором? Конечно, если ты сотрёшь объявление переменной, и в вызове функции оставишь название этой переменной - будет ошибка
Цитата Сообщение от tema47 Посмотреть сообщение
Я её сейчас обнулил
что обнулил?

Сформулируй лучше задачу, проще тебе её заново накидать
tema47
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 67
08.05.2014, 11:34  [ТС]     Ошибка: неинициализированные переменные #6
newbie666, Требуется решить задачу с использованием классов.
При этом обязательно оформить методы для выполнения каждого из действий: по вводу данных, выводу их в файл, чтению данных из файла и выводу их на экран, сортировке данных.

Дана структура с именем ORDER, состоящая из полей:
- расчетный счет плательщика;
- расчетный счет получателя;
- перечисляемая сумма в руб.
Написать программу, которая выполняет следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа ORDER, и занесение их в файл данных;
- чтение данных из файла и вывод их на экран;
- вывод на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры (если таких нет – вывести об этом сообщение);
- список должен быть упорядочен по расчетным счетам плательщиков.
newbie666
Заблокирован
08.05.2014, 11:41     Ошибка: неинициализированные переменные #7
Цитата Сообщение от tema47 Посмотреть сообщение
Требуется решить задачу
всё, я помогать тебе не буду. Ненавижу халявщиков, я то думал ты изучаешь С++, а ты просто хочешь чтоб кто то напрягся ради твоего препода тут
tema47
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 67
08.05.2014, 11:46  [ТС]     Ошибка: неинициализированные переменные #8
newbie666, Вообще-то, у меня есть код, его просто нужно доработать.

Добавлено через 27 секунд
newbie666, Ладно, большое спасибо

Добавлено через 1 минуту
Работает, но она без класса.

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
#include <iostream>
#include <fstream>
using namespace std;
 
int const n=21;
 
struct ORDER
{
       char plat[n], pol[n];                 //Ввод счета длиной 20 символов
       double summa;
};
 
 int main()
{
    setlocale (LC_ALL, "rus");
    ofstream fout; ifstream fin;
    ORDER tmp;
    ORDER Spisok[21];
    char nomer_plat[21];
    bool r=false;
    float snyataya_summa=0;
    fout.open ("input.txt");                                    //Запись данных в файл
    for (int i=1;i<=3;i++)
    { 
        cout<<"# "<<i<<endl;
        cout<<"Расчетный счет плательщика: ";
        cin>>Spisok[i].plat;
        cout<<"Расчетный счет получателя: ";
        cin>>Spisok[i].pol;
        cout<<"Перечисляемая сумма в руб.: ";
        cin>>Spisok[i].summa;
        cout << endl;
        fout<<"# "<<i<<endl<<"Плательщик - "<<Spisok[i].plat<<endl
        <<"Получатель - "<<Spisok[i].pol<<endl<<"Сумма - "<<Spisok[i].summa<<" руб."<<endl<<endl;
    }
    fout.close();
 
 
    fin.open ("input.txt");                                     //Чтение данных из файла
    cout <<"--------------------------------------------------------------------------------"<<"Чтение данных из файла."<<endl;
    for (int i=1;i<=3;i++)
    {
        int a;
        fin >> a;
        cout<<"# "<<i<<endl<<"Плательщик - "<<Spisok[i].plat<<endl
        <<"Получатель - "<<Spisok[i].pol<<endl<<"Сумма - "<<Spisok[i].summa<<" руб."<<endl<<endl;
    }
    cout <<"--------------------------------------------------------------------------------";
    fin.close ();
 
 
    for (int i=1;i<=3;i++)                              //Сортировка по расчетным счетам плательщиков (исправить)
    for (int j=1;j<=3;j++)
    {
        if (i!=j)
        if (strcmp(&Spisok[i].plat[0], &Spisok[j].plat[0]))
        {
            tmp=Spisok[j];
            Spisok[j]=Spisok[i];
            Spisok[i]=tmp;
        }
    }
    cout<<"Сортировка по расчетным счетам плательщиков.";
    for (int i=1;i<=3;i++)
    cout<<endl<<"# "<<i<<endl<<"Плательщик - "<<Spisok[i].plat<<endl
    <<"Получатель - "<<Spisok[i].pol<<endl<<"Сумма - "<<Spisok[i].summa<<" руб."<<endl;
    cout << "--------------------------------------------------------------------------------";
    cout<<"Введите номер расчетного счета (плательщика): ";                 //Поиск расчетного счета
    cin>>nomer_plat;
    for (int i=1;i<=3;i++)
    if (strcmp(&Spisok[i].plat[0], &nomer_plat[0]) == 0 )
    {
        snyataya_summa+=Spisok[i].summa;
        r=true;
    }
    if (r==true)
    cout<<"С расчетного счета "<<nomer_plat<<" снято "<<snyataya_summa<<" руб."<<endl;
    else
    cout<<"Такого расчетного счета нет!"<<endl;
    system("PAUSE");
    return 0;
}
Добавлено через 1 минуту
newbie666, Вообще-то я не только С++ изучаю.
ArtONcus
1 / 1 / 0
Регистрация: 05.06.2013
Сообщений: 21
08.05.2014, 11:55     Ошибка: неинициализированные переменные #9
Ну у парня есть сделаный код, просто с недоработками, а ты его сразу обвиняешь в халяве. Если так брать то зачем вообще этот сайт, если нельзя вопросы задавать. Халява это когда пишут задачу с просьбой "РЕШИТЕ", вот это для препода.
tema47
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 67
08.05.2014, 12:32  [ТС]     Ошибка: неинициализированные переменные #10
Кто может помочь с этим?

Требуется решить задачу с использованием классов.
При этом обязательно оформить методы для выполнения каждого из действий: по вводу данных, выводу их в файл, чтению данных из файла и выводу их на экран, сортировке данных.

Дана структура с именем ORDER, состоящая из полей:
- расчетный счет плательщика;
- расчетный счет получателя;
- перечисляемая сумма в руб.
Написать программу, которая выполняет следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа ORDER, и занесение их в файл данных;
- чтение данных из файла и вывод их на экран;
- вывод на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры (если таких нет – вывести об этом сообщение);
- список должен быть упорядочен по расчетным счетам плательщиков.

Код:
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
#include <iostream>
#include <fstream>
using namespace std;
 
int const n=21;
 
struct ORDER
{
       char plat[n], pol[n];                 //Ввод счета длиной 20 символов
       double summa;
};
 
 int main()
{
    setlocale (LC_ALL, "rus");
    ofstream fout; ifstream fin;
    ORDER tmp;
    ORDER Spisok[21];
    char nomer_plat[21];
    bool r=false;
    float snyataya_summa=0;
    fout.open ("input.txt");                                    //Запись данных в файл
    for (int i=1;i<=3;i++)
    { 
        cout<<"# "<<i<<endl;
        cout<<"Расчетный счет плательщика: ";
        cin>>Spisok[i].plat;
        cout<<"Расчетный счет получателя: ";
        cin>>Spisok[i].pol;
        cout<<"Перечисляемая сумма в руб.: ";
        cin>>Spisok[i].summa;
        cout << endl;
        fout<<"# "<<i<<endl<<"Плательщик - "<<Spisok[i].plat<<endl
        <<"Получатель - "<<Spisok[i].pol<<endl<<"Сумма - "<<Spisok[i].summa<<" руб."<<endl<<endl;
    }
    fout.close();
 
 
    fin.open ("input.txt");                                     //Чтение данных из файла
    cout <<"--------------------------------------------------------------------------------"<<"Чтение данных из файла."<<endl;
    for (int i=1;i<=3;i++)
    {
        int a;
        fin >> a;
        cout<<"# "<<i<<endl<<"Плательщик - "<<Spisok[i].plat<<endl
        <<"Получатель - "<<Spisok[i].pol<<endl<<"Сумма - "<<Spisok[i].summa<<" руб."<<endl<<endl;
    }
    cout <<"--------------------------------------------------------------------------------";
    fin.close ();
 
 
    for (int i=1;i<=3;i++)                              //Сортировка по расчетным счетам плательщиков (исправить)
    for (int j=1;j<=3;j++)
    {
        if (i!=j)
        if (strcmp(&Spisok[i].plat[0], &Spisok[j].plat[0]))
        {
            tmp=Spisok[j];
            Spisok[j]=Spisok[i];
            Spisok[i]=tmp;
        }
    }
    cout<<"Сортировка по расчетным счетам плательщиков.";
    for (int i=1;i<=3;i++)
    cout<<endl<<"# "<<i<<endl<<"Плательщик - "<<Spisok[i].plat<<endl
    <<"Получатель - "<<Spisok[i].pol<<endl<<"Сумма - "<<Spisok[i].summa<<" руб."<<endl;
    cout << "--------------------------------------------------------------------------------";
    cout<<"Введите номер расчетного счета (плательщика): ";                 //Поиск расчетного счета
    cin>>nomer_plat;
    for (int i=1;i<=3;i++)
    if (strcmp(&Spisok[i].plat[0], &nomer_plat[0]) == 0 )
    {
        snyataya_summa+=Spisok[i].summa;
        r=true;
    }
    if (r==true)
    cout<<"С расчетного счета "<<nomer_plat<<" снято "<<snyataya_summa<<" руб."<<endl;
    else
    cout<<"Такого расчетного счета нет!"<<endl;
    system("PAUSE");
    return 0;
}

Проблема в том что он без класса, а нужно с классом сделать, пожалуйста хелп.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 12:41     Ошибка: неинициализированные переменные
Еще ссылки по теме:

C++ Ошибка, указывающая на неинициализированные переменные
Ошибка: не определены переменные класса C++
C++ Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения

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

Или воспользуйтесь поиском по форуму:
newbie666
Заблокирован
08.05.2014, 12:41     Ошибка: неинициализированные переменные #11
ну добавь где нибуть сверху объявление пустого класса и будет в твоём коде класс
Yandex
Объявления
08.05.2014, 12:41     Ошибка: неинициализированные переменные
Ответ Создать тему
Опции темы

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