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

Использование класса ORDER - C++

Восстановить пароль Регистрация
 
 
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
09.05.2014, 17:58     Использование класса ORDER #1
Следующие задания требуется решить с использованием классов.
При этом обязательно оформить методы для выполнения каждого из действий: по вводу данных, выводу их в файл, чтению данных из файла и выводу их на экран, сортировке данных.

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

Вот, что попытался сделать:
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4257 / 3688 / 1243
Регистрация: 14.04.2014
Сообщений: 14,440
09.05.2014, 18:03     Использование класса ORDER #2
А где твой класс? Судя по заданию Order надо классом описывать, а не структурой.
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
09.05.2014, 18:07  [ТС]     Использование класса ORDER #3
nmcf, Как раз в этом проблема и состоит, как мне реализовать класс?
Сейчас скину с классом, но там ошибка, подумал может вы поможете:

С фэйловым классом.
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=0;
    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;
}
Добавлено через 1 минуту
nmcf, ошибка на 103 строчке!
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
09.05.2014, 18:35     Использование класса ORDER #4
C++
1
2
3
4
5
6
void setDATA (char* plat_s, char* pol_s, double summa_r)
    {
        strcpy(plat,plat_s);
        strcpy(pol, pol_s);
        summa = summa_r;
    }
и вызов
C++
1
obj->setDATA(plat, pol, summa);
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
09.05.2014, 19:15  [ТС]     Использование класса ORDER #5
zss, И все что ли?

Добавлено через 6 минут
zss, После того как я ввел сумму, ошибки повыскакивали

Добавлено через 32 минуты
Помогите кто-нибудь с этой задачей, уже 3 дня решаю.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
09.05.2014, 20:12     Использование класса ORDER #6
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const int n=21;
 
class ORDER
{
private:
    char plat[n], pol[n];                 //Ввод счета длиной 20 символов
    double summa;
public:
    void setDATA (char* plat_s, char* pol_s, double summa_r)
    {
        strcpy(plat,plat_s);
        strcpy(pol, pol_s);
        summa = summa_r;
    }
 
    void getDATA()
    {
        cout<<"Расчетный счет плательщика: ";
        cin>>plat;
        cout<<"Расчетный счет получателя: ";
        cin>>pol;
        cout<<"Перечисляемая сумма в руб.: ";
        cin>>summa;
     }
    void ReadDATA( ifstream fin)
    {
        fin>>plat;
        fin>>pol;
        fin>>summa;
   }
    friend void sort(ORDER* Spisok)
    {
        ORDER tmp;
        for (int i=0;i<3;i++)                              //Сортировка по расчетным счетам плательщиков (исправить)
        for (int j=0;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=0;i<3;i++)
        cout<<endl<<"# "<<i<<endl<<"Плательщик - "<<Spisok[i].plat<<endl
        <<"Получатель - "<<Spisok[i].pol<<endl<<"Сумма - "<<Spisok[i].summa<<" руб."<<endl;
        cout << "--------------------------------------------------------------------------------";
    }
 
    friend void search(ORDER* Spisok)
    {
        bool r=false;
        double snyataya_summa=0;
        char nomer_plat[21];
        cout<<"Введите номер расчетного счета (плательщика): ";                 //Поиск расчетного счета
        cin>>nomer_plat;
        for (int i=0;i<3;i++)
        if (strcmp(&Spisok[i].plat[0], &nomer_plat[0]) == 0 )
        {
            snyataya_summa+=Spisok[i].summa;
            r=true;
        }
        if (r)
        cout<<"С расчетного счета "<<nomer_plat<<" снято "<<snyataya_summa<<" руб."<<endl;
        else
        cout<<"Такого расчетного счета нет!"<<endl;
    }
};
 
 int main()
{
    setlocale (LC_ALL, "rus");
    ifstream fin;
    fin.open("input.txt",ios::in);
    if(!fin)
        return 0;
    ORDER Spisok[4];
    for (int i=0;i<3;i++)
    { 
        Spisok[i].ReadDATA(fin);
    }
    fin.close();
    sort(Spisok);    
    search(Spisok);
    system("PAUSE");
    return 0;
}
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
09.05.2014, 20:41  [ТС]     Использование класса ORDER #7
zss, Огромное спасибо, но он выводит ошибку:
Ошибка 3 error C2248: std::basic_ios<_Elem,_Traits>::basic_ios: невозможно обратиться к private член, объявленному в классе "std::basic_ios<_Elem,_Traits>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\fstream

Добавлено через 8 минут
zss, Запись в файл как-то связана через ios::in?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
09.05.2014, 20:48     Использование класса ORDER #8
В описании ReadDATA надо передать параметр по ссылке
C++
1
void ReadDATA( ifstream& fin)
Добавлено через 3 минуты
Цитата Сообщение от Lom1 Посмотреть сообщение
Запись в файл как-то связана через ios::in?
Запись ios::out
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
09.05.2014, 20:49  [ТС]     Использование класса ORDER #9
zss, Обошел, программа запустилась, вышел вывод чисто, а ввода никакого нет + он не записал ничего в файл
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
09.05.2014, 20:54     Использование класса ORDER #10
Цитата Сообщение от Lom1 Посмотреть сообщение
он не записал ничего в файл
В этом примере из файла ЧИТАЕТСЯ а не пишется
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
09.05.2014, 20:57  [ТС]     Использование класса ORDER #11
zss, Для записи нужно метод разработать тогда?
У меня такой алгоритм: Ввожу я лицевой счет плательщика затем получателя кому я деньги передаю, затем сумму, после этого он все записывает в файл, потом сразу оттуда читает и выводит тот же вид, но который прочитал из файла, потом сортировку выводит, ну а потом поиск лиц. счета!
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
09.05.2014, 21:06     Использование класса ORDER #12
Действуйте по аналогии
C++
1
2
3
4
5
6
    void WriteDATA( ofstream& fin)
    {
        fin<<plat<<" ";
        fin<<pol<<" ";
        fin<<summa<<endl;
   }
Ну и соответственно создайте объект ofstream
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
09.05.2014, 22:35  [ТС]     Использование класса ORDER #13
zss, Сейчас попробую.

Добавлено через 1 час 17 минут
zss, Не получается что-то, попробовал так:

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
#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)
    {
        strcpy(plat,plat_s);
        strcpy(pol, pol_s);
        summa = summa_r;
    }
 
    void readDATA_and_showDATA()        //Чтение данных из файла и вывод их на экран
    {
        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 recordDATA_and_getDATA()       //Ввод данных и запись данных в файл
    {
        ofstream fout;
        for (int i=1;i<=3;i++)
        { 
            ORDER Spisok[21];
            fout.open ("input.txt");
            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();
    }
 
    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=0;
    ORDER *obj = new ORDER;
    obj->setDATA(plat, pol, summa);
    obj->recordDATA_and_getDATA();
    obj->readDATA_and_showDATA();
    obj->sort();
    obj->search();
    system("PAUSE");
    return 0;
}
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
10.05.2014, 09:09  [ТС]     Использование класса ORDER #14
Прошу отважной помощи срочно с данной задачей, послезавтра сдавать. Никто помочь не может, уже 3-4 дня мучаюсь.
----------------------------------------------------------------------------------
Следующие задания требуется решить с использованием классов.
При этом обязательно оформить методы для выполнения каждого из действий: по вводу данных, выводу их в файл, чтению данных из файла и выводу их на экран, сортировке данных.

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

Вот, что попытался сделать:
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;
}
Пробовал использовать с классом, но там ошибки, исправил, а затем не работает, поэтому решил сбросить код без класса, чтобы легче было понять ситуацию.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
10.05.2014, 18:19     Использование класса ORDER #15
Цитата Сообщение от Lom1 Посмотреть сообщение
Не получается что-то
А для кого я писал:
Цитата Сообщение от zss Посмотреть сообщение
void WriteDATA( ofstream& fin)
Такая функция будет писать ОДИН текущий(*this) объект в поток fin.
А в main организуйте открытие файла на запись и цикл записи всех
элементов массива по очереди.
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
10.05.2014, 18:31  [ТС]     Использование класса ORDER #16
zss, Не совсем вас понимаю, отправьте код лучше, а дальше я разберусь.
DrNIX
Сообщений: n/a
10.05.2014, 18:32     Использование класса ORDER #17
Сложная задача, проект, обращайтесь во фриланс.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
10.05.2014, 19:05     Использование класса ORDER #18
А чем Вам не угодил мой пост №6
Использование класса ORDER
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
11.05.2014, 13:09  [ТС]     Использование класса ORDER #19
zss, Тем, что он выводит сразу данные, нет ввода, записи.

Добавлено через 1 минуту
zss, А, и еще вывода чтения.

Добавлено через 17 часов 45 минут
zss, Спасибо, я добился все-таки.
Но теперь проблема с тем, что когда я ввожу в поле плательщика или получателя 21 символ то у меня происходит при вводе слитность плательщика и получателя, хотелось бы с циклом while сделать так чтобы допустим пользователь вводит 21 цифру и ему выдает сообщение ввести корректный номер лицевого счета, а когда 20 проходит цикл.

Вот код:
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
const int n=21;
 
class ORDER
{
private:
    char plat[n], pol[n];        //Ввод счета длиной 20 символов
    double summa;
public:
    void setDATA (char* plat_s, char* pol_s, double summa_r)
    {
        strcpy(plat,plat_s);
        strcpy(pol, pol_s);
        summa = summa_r;
    }
 
    void getDATA()               //Ввод данных
    {
        cout<<"Расчетный счет плательщика: ";
        cin>>plat;
        int count_plat = strlen(plat);
        while (count_plat>=21)
        {
            cout << "Введите корректный расчетный счет плательщика (20 цифр): ";
            cin>>plat;
        }
        cout<<"Расчетный счет получателя: ";
        cin>>pol;
        int count_pol = strlen(pol);
        while (count_pol>=21)
        {
            cout << "Введите корректный расчетный счет получателя (20 цифр): ";
            cin>>pol;
        }
        cout<<"Перечисляемая сумма в руб.: ";
        cin>>summa;
        cout << endl;
    }
 
    void WriteDATA(ofstream& fout)          //Запись данных
    {
        fout<<endl<<plat<<endl<<pol<<endl<<summa<<endl<<endl;
    }
 
    void ReadDATA(ifstream& fin)            //Чтение данных и вывод их на экран
    {
        fin>>plat;
        fin>>pol;
        fin>>summa;
        cout<<endl<<"Плательщик - "<<plat<<endl
        <<"Получатель - "<<pol<<endl<<"Сумма - "<<summa<<" руб."<<endl<<endl;
   }
    friend void sort(ORDER* Spisok)         //Сортировка по расчетным счетам плательщиков (исправить)
    {
        ORDER tmp;
        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 << "--------------------------------------------------------------------------------";
    }
 
    friend void search(ORDER* Spisok)       //Поиск расчетного счета и вывод на экран информации о сумме, cнятой с расчетного счета плательщика
    {
        bool r=false;
        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)
        cout<<"С расчетного счета "<<nomer_plat<<" снято "<<snyataya_summa<<" руб."<<endl;       
        else
        cout<<"Такого расчетного счета нет!"<<endl;
    }
};
 
 int main()
{
    setlocale (LC_ALL, "rus");
    char plat[n], pol[n];
    double summa=0;
    
 
    ORDER Spisok[4];
    for (int i=1;i<=3;i++)
    { 
        Spisok[i].setDATA (plat, pol, summa);
        cout<<"# "<<i<<endl;
        Spisok[i].getDATA();
    }
 
 
    ofstream fout("input.txt");
    if(!fout)
        return 0;
    for (int i=1;i<=3;i++)
    { 
        fout<<i;
        Spisok[i].WriteDATA(fout);
    }
    fout.close();
 
 
    ifstream fin("input.txt");
    cout <<"--------------------------------------------------------------------------------"<<"Чтение данных из файла."<<endl;
    if(!fin)
        return 0;
    for (int i=1;i<=3;i++)
    { 
        fin >> i;
        cout<<"# "<<i;
        Spisok[i].ReadDATA(fin);
    }
    cout <<"--------------------------------------------------------------------------------";
    fin.close();
    sort(Spisok);    
    search(Spisok);
    system("PAUSE");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2014, 13:25     Использование класса ORDER
Еще ссылки по теме:

Использование объекта одного класса при создании нового класса C++
C++ использование this в методе класса
C++ Использование абстрактного класса

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
11.05.2014, 13:25     Использование класса ORDER #20
Цитата Сообщение от Lom1 Посмотреть сообщение
for (int i=1;i<=3;i++)
Почему не от нуля?
Цитата Сообщение от Lom1 Посмотреть сообщение
for (int i=1;i<=3;i++) { fin >> i;
fin>>i затрет i (переменную цикла).
Цитата Сообщение от Lom1 Посмотреть сообщение
while (count_plat>=21) { cout << "Введите корректный расчетный счет плательщика (20 цифр): "; cin>>plat; }
Это и есть проверка на корректный размер. Только надо проверять на неравно
while (count_plat!=20).
Yandex
Объявления
11.05.2014, 13:25     Использование класса ORDER
Ответ Создать тему
Опции темы

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