Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
fors-dnet
3 / 3 / 0
Регистрация: 11.12.2011
Сообщений: 88
#1

Реализовать класс вместо структуры - C++

31.01.2012, 22:21. Просмотров 766. Ответов 5
Метки нет (Все метки)

Здравстуйте буду благодарен если кто-то поможет.

Вот само задание:
создать программу по индивидуальному варианту, которая:
1.1. открывает внешний файл Input.txt и считывает с него данные согласно индивидуальным заданием;
1.2. запоминает полученные данные в виде класса;
1.3. сортирует данные структуры за числовым полем любым методом сортировки;
1.4. записывает полученные результаты сортировки во внешний файл Output.txt в виде таблицы с соответствующей шапкой и табулирования данных.
2. Выполнить пункты 1.3 и 1.4 для сортировки данных структуры по символьным полем.

1. Закрытые данные-члены класса:
- Мобильный номер;
- Остаток средств на счете;
- Название тарифного плана.
Открытые функции-члены класса:
- Инициализация (введение через аргументы функции информации в данные-члены класса);
- Вывод на экран информации, сохранения в данных-членах.
а.


Файл допустим такого содержания:
09342598623 56.30 life
05085458748 23.10 mtc
09765874598 11.20 kyivstar
09345874122 89.65 life
09645874114 11.50 mtc.

Предыдущее задание было такое же только со структурой и на языке Си:
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
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
struct Abonent
{
    char nomer[11];
    double ostatok;
    char tarif[15];
}arr [5];
 
int load (struct Abonent *arr)
{
    int i=0;
    FILE *f=NULL; 
    f=fopen("D:\Input.txt", "rt");
    if (f==NULL)
    {
        printf ("No file!!!\n");
        exit (0);
    }
    
    for(i=0;i<5;i++)
    {
        fscanf(f,"%s", &arr[i].nomer);
        fscanf(f,"%lf", &arr[i].ostatok);
        fscanf(f,"%s", &arr[i].tarif);
    }
    fclose (f);
 
    return 0;
}
 
int sortost (struct Abonent *t)
{
    struct Abonent x;
    int i=0, j=0;   
    for(i=0;i<5;i++)
    {
        for(j=0; j<4; j++)
        {
            if( t[j].ostatok > t[j+1].ostatok )
            {
                x=t[j];
                t[j]=t[j+1];
                t[j+1]=x;
            }
            
        }
    }
 
    return 0;
}
 
int sorttar (struct Abonent *arr)
{
    int i=0, j=0;
    struct Abonent temp;
    for (i=0; i<5; i++)
    {
        for (j=0; j<4; j++)
        {
            if (strcmp(arr[j].tarif, arr [j+1].tarif) >= 0)
            {
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
 
    return 0;
}
 
int save (struct Abonent *arr)
{
    int i=0;
    FILE *f=NULL;
    f=fopen ("D:\Result.txt", "wt");
    if (f==NULL)
    {
        printf ("No file!!!\n");
        exit (0);
    }
    fprintf (f, "Spisok abonentov:\n\n");
    for(i=0;i<5;i++)
    {
        fprintf(f,"%s\t", arr[i].nomer);
        fprintf(f,"%lf\t", arr[i].ostatok);
        fprintf(f,"%s\t", arr[i].tarif);
        fprintf(f,"\n");
    }
    fclose (f);
 
    return 0;
}
 
void main (void)
{
    int n=0, i=0;
L:  printf("1.load\n2.sortorovka po osratky\n3.sortirovka po tarify\n4.save\n5.exit\n");
    printf ("Input number : ");
    scanf ("%d", &n);
    printf ("\n");
 
    switch (n)
    {
    case 1 : load(arr);
             break;
 
    case 2 : sortost (arr);
             break;
 
    case 3 : sorttar (arr);
             break;
 
    case 4 : save (arr);
             break;
 
    case 5 : exit (0);
             break;
    }
    for (i=0;i<5;i++)
    printf("%s %2.2lf %s\n",arr[i].nomer,arr[i].ostatok,arr[i].tarif);
    printf("\n");
    goto L;
    
}
Теперь нужно вместо структуры класс сделать, я Си++ не разбирал ещё, а лабу завтра здать надо. Помогите пожалуйста у кого есть свободных минут 20. )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2012, 22:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализовать класс вместо структуры (C++):

Реализовать класс на основе заданной структуры данных - C++
ЦЕХ имя - char* начальник - char* количество сотрудников – int

Необходимо реализовать шаблонный класс Array, и грамотно реализовать push_back - C++
Необходимо реализовать шаблонный класс Array, параметризируемый типом хранимых элементов. Класс Array представляет собой...

Реализовать класс Goods используя для представления цены класс Money - C++
Реализовать класс Goods (пункт 1 ), используя для представления цены класс Money с пункта 2 Реализовать метод уценки товара, уменьшая цену...

Класс Matrix: реализовать шаблонный класс для двумерных массивов - C++
Доброго времени суток. У меня вопрос: я создал класс Array со внутренним динамическим массивом и объекты этого типа смог создать и я ими...

Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления углов - C++
Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления углов. Собственно вот такая проблема. Не...

Реализовать пользовательские типы: класс Person и класс String - C++
1)Разработать класс Person, который содержит соответствующие члены для хранения: имени, возраста, пола и телефонного номера. ...

5
Jupiter
Каратель
Эксперт С++
6565 / 3986 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.02.2012, 00:17 #2
Цитата Сообщение от fors-dnet Посмотреть сообщение
Си++ не разбирал ещё
за чем же дело стало? надо ж когда-то и начать
1
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
01.02.2012, 00:33 #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
#include <conio.h>
#include <stdio.h>
#include <string>
#include <stdlib.h>
 
class Abonent
{
public:
        char nomer[11];
        double ostatok;
        char tarif[15];
 
int load (Abonent *arr)
{
        int i=0;
        FILE *f=NULL; 
        f=fopen("D:\Input.txt", "rt");
        if (f==NULL)
        {
                printf ("No file!!!\n");
                exit (0);
        }
        
        for(i=0;i<5;i++)
        {
                fscanf(f,"%s", &arr[i].nomer);
                fscanf(f,"%lf", &arr[i].ostatok);
                fscanf(f,"%s", &arr[i].tarif);
        }
        fclose (f);
 
        return 0;
}
 
int sortost (Abonent *t)
{
         Abonent x;
        int i=0, j=0;   
        for(i=0;i<5;i++)
        {
                for(j=0; j<4; j++)
                {
                        if( t[j].ostatok > t[j+1].ostatok )
                        {
                                x=t[j];
                                t[j]=t[j+1];
                                t[j+1]=x;
                        }
                        
                }
        }
 
        return 0;
}
 
int sorttar (Abonent *arr)
{
        int i=0, j=0;
        struct Abonent temp;
        for (i=0; i<5; i++)
        {
                for (j=0; j<4; j++)
                {
                        if (strcmp(arr[j].tarif, arr [j+1].tarif) >= 0)
                        {
                                temp=arr[j];
                                arr[j]=arr[j+1];
                                arr[j+1]=temp;
                        }
                }
        }
 
        return 0;
}
 
int save (Abonent *arr)
{
        int i=0;
        FILE *f=NULL;
        f=fopen ("D:\Result.txt", "wt");
        if (f==NULL)
        {
                printf ("No file!!!\n");
                exit (0);
        }
        fprintf (f, "Spisok abonentov:\n\n");
        for(i=0;i<5;i++)
        {
                fprintf(f,"%s\t", arr[i].nomer);
                fprintf(f,"%lf\t", arr[i].ostatok);
                fprintf(f,"%s\t", arr[i].tarif);
                fprintf(f,"\n");
        }
        fclose (f);
 
        return 0;
};
 
 
};
 
 
void main (void)
{
Abonent manager;
 
Abonent arr [5];
 
        int n=0, i=0;
L:      printf("1.load\n2.sortorovka po osratky\n3.sortirovka po tarify\n4.save\n5.exit\n");
        printf ("Input number : ");
        scanf ("%d", &n);
        printf ("\n");
 
        switch (n)
        {
        case 1 :  manager.load(arr);
                         break;
 
        case 2 :  manager.sortost (arr);
                     break;
 
        case 3 : manager.sorttar (arr);
                     break;
 
        case 4 :  manager.save (arr);
                     break;
 
        case 5 : exit (0);
                     break;
        }
        for (i=0;i<5;i++)
    printf("%s %2.2lf %s\n",arr[i].nomer,arr[i].ostatok,arr[i].tarif);
        printf("\n");
        goto L;
        
}
1
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
01.02.2012, 00:44 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я конечно не очень в с но вот наскорую руку что получильсь.
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
#include<iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
class Abonent
{
private:   
        char nomer[11];
        double ostatok;
        char tarif[15];
public:
    int load (Abonent *arr);
    int sortost (Abonent *t);
    int sorttar ( Abonent *arr);
    int save ( Abonent *arr);
    void get(void);
 
 
}arr [5];
 int Abonent:: load (Abonent *arr)
 {
        int i=0;
        FILE *f=NULL; 
        f=fopen("D:\Input.txt", "rt");
        if (f==NULL)
        {
                std::cout<< "No file!!!\n";
                exit (0);
        }
        
        for(i=0;i<5;i++)
        {
               //найди аналог на С++ для fscanf(f,"%s", &arr[i].nomer);
                // я ещё пока не знаю как писать из файла в с++
                fscanf(f,"%s", &arr[i].nomer);
                fscanf(f,"%lf", &arr[i].ostatok);
                fscanf(f,"%s", &arr[i].tarif);
        }
        fclose (f);
 
        return 0;
 }
 
 
 
 int Abonent:: sortost (class Abonent *t)
 {
        class Abonent x;
        int i=0, j=0;   
        for(i=0;i<5;i++)
        {
                for(j=0; j<4; j++)
                {
                        if( t[j].ostatok > t[j+1].ostatok )
                        {
                                x=t[j];
                                t[j]=t[j+1];
                                t[j+1]=x;
                        }
                        
                }
        }
 
        return 0;   
 }
 int Abonent:: sorttar (class Abonent *arr)
 {
        int i=0;
        FILE *f=NULL; 
        f=fopen("D:\Input.txt", "rt");
        if (f==NULL)
        {
                printf ("No file!!!\n");
                exit (0);
        }
        
        for(i=0;i<5;i++)
        {
                fscanf(f,"%s", &arr[i].nomer);
                fscanf(f,"%lf", &arr[i].ostatok);
                fscanf(f,"%s", &arr[i].tarif);
        }
        fclose (f);
 
        return 0;
 }
 
int Abonent:: save (class Abonent *arr)
{
        int i=0;
        FILE *f=NULL;
        f=fopen ("D:\Result.txt", "wt");
        if (f==NULL)
        {
                std::cout<<"No file!!!\n";
                exit (0);
        }
      //я не знаю оналога для  fprintf (f, "Spisok abonentov:\n\n");
        fprintf (f, "Spisok abonentov:\n\n");
        for(i=0;i<5;i++)
        {
                //я не знаю оналога для fprintf(f,"%s\t", arr[i].nomer);
                fprintf(f,"%s\t", arr[i].nomer);
                fprintf(f,"%lf\t", arr[i].ostatok);
                fprintf(f,"%s\t", arr[i].tarif);
                fprintf(f,"\n");
        }
        fclose (f);
 
        return 0;
}
 void Abonent:: get(void)
 {
        int n=0, i=0;
      while(1)
      {
        std::cout<<"1.load\n2.sortorovka po osratky\n3.sortirovka po tarify\n4.save\n5.exit\n";
        std::cout<<"Input number : ";
        std::cin>>n;
        std::cout<<std::endl;
 
        switch (n)
        {
        case 1 : load(arr);
                         break;
 
        case 2 : sortost (arr);
                     break;
 
        case 3 : sorttar (arr);
                     break;
 
        case 4 : save (arr);
                     break;
 
        case 5 : exit (0);
                     break;
        }
        for (i=0;i<5;i++)
        std::cout<<arr[i].nomer<<arr[i].ostatok<<arr[i].tarif<<std::endl;
     } 
 }
void main (void)
{
    class Abonent Abonent_val;
    Abonent_val.get();
       system("pause");
 
}
вот только как из файла закачивать значения в переменные я не знаю.
В C++ анологи scanf and printf это cin and cout.
Код рабочий тебе только надо в двух местах заменить я там коменты оставил.
А вобще часто программисты используют смешаный стиль, по этому можно и так оставить решай сам.
1
fors-dnet
3 / 3 / 0
Регистрация: 11.12.2011
Сообщений: 88
01.02.2012, 20:15  [ТС] #5
AzaKendler,
stawerfar, Cпасибо большое за помощь.
Особенное спасибо
stawerfar, всё расписал дельно, приятно что есть добрые люди.
0
ValeryS
Модератор
6752 / 5161 / 493
Регистрация: 14.02.2011
Сообщений: 17,338
01.02.2012, 20:29 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
структура в С++ это тот же класс
стой лишь разницей что в структуре все члены по умолчанию открытые(public)
а в классе закрытые (privat)
C++
1
2
3
4
5
6
class My
{
public:
 int a1;
 int a2;
};
и
C++
1
2
3
4
5
6
struct My
{
//public: Это не обязательно в структуре по умолчанию 
 int a1;
 int a2;
};
Эквивалентны
т.е в своей программе напиши class вместо struct и добавь public
но скорее всего тебя просят описать методы класса
например для доступа к первой переменной
C++
1
2
3
4
5
6
7
8
9
class My
{
public:
 void SetA1(int a){a1=a};//записать значение
 int GetA1(){return a1};// прочитать значения
privat:                       // теперь к членам класса снаружи доступа нет
int a1;
 int a2;
};
1
01.02.2012, 20:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2012, 20:29
Привет! Вот еще темы с ответами:

Реализовать класс Money, используя класс Fraction - C++
// реализовать класс Money используя класс Fraction #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;sstream&gt; #include...

Реализовать класс родительский класс "Пара чисел" и класс-наследник "Комплексное число" - C++
Ткма работы создать класс pair (пара чисел); определить метод перемножения полей и операцию сложения пар (a,b)+(c,d) =(a+b,c+d)...

Кракозябры вместо слов и цифр при записи структуры в файл - C++
Помогите, пожалуйста! Создаю файл, записываю в него структуру, записывается кракозябра вместо слов и цифр. Как решить проблему?

Реализовать пользовательский класс "Двунаправленный список"; реализовать добавление и удаление элементов - C++
Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить К элементов с...


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

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

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