Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
#1

Правильно ли построен класс

09.09.2011, 00:17. Просмотров 1597. Ответов 45
Метки нет (Все метки)

STRUCT.cpp
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
#include "STRUCT.h"
 
 STRUCT::STRUCT()
{
 clrscr();
 printf(" Введите количество спортсменов: ");
 scanf("%d", &count); //Ввод количества участников
 min = init_athletes(all, count);
 printf("\n Самый юный участник:\nМесто в реестре: %d\nФамилия: %s\nИмя: %s\nВозраст:"  
 "%d\n\Bремя: %d min. %d sec.", min + 1, all[min].name, all[min].f_name, all[min].age,
 all[min].time.min, all[min].time.sec);
 getch();
}
 
 int STRUCT::init_athletes(athlete*& all, int count)
{int i, min = 0;
 all = new athlete[count]; //массив данных типа структура
 printf(" Введите данные для каждого спортсмена:\r\n");
 for(i = 0; i < count; ++i)
   {printf("%d. ", i + 1); //Порядковый номер записи спортсмена
    scanf("%s %s %d %d %d", &all[i].name, &all[i].f_name, &all[i].age,
      &all[i].time.min, &all[i].time.sec);
    if (i == 0) min = i;
    else if (all[i].age < all[min].age) min = i;
   }
 return min;
}
STRUCT.h
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
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
 
class STRUCT
{typedef struct 
   {
    int min; //минуты
    int sec; //секунды
   }time;
 
 typedef struct
   {
    char name[20]; //имя
    char f_name[20]; //фамилия
    int age; //возраст
    time time; //результат
   }athlete;
   
 int count = 0;
 int min = 0;
 athlete* all = NULL;
 
 public:
    STRUCT();
    int init_athletes(athlete*& all, int count)
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 00:17
Ответы с готовыми решениями:

Ошибка в выводе данных, класс выводит правильно, а класс в классе - нет
Неизвестная для меня проблема. Класс выводит данные правильно из Consigment, а...

Правильно ли построил класс?
Здравствуйте, нужен совет. задание такое: построить иерархию домашней...

Правильно ли создан класс
Всем привет. Подскажите, где в этом классе правильно было бы поставить...

Не правильно объявил класс (Debian)
Здравствуйте! В изучении языка C++ (под debian сижу) возникла следующая...

Правильно ли написан класс DigitalTimeException
Помогите пожалуйста, с созданием класса. Необходимон аписать класс -...

45
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.09.2011, 02:52 #2
Цитата Сообщение от maxim43k Посмотреть сообщение
Правильно ли построен класс
неправильно

синтаксические ошибки:
Цитата Сообщение от maxim43k Посмотреть сообщение
int count = 0;
int min = 0;
athlete* all = NULL;
инициализация не статических константных полей в теле класса, запрещена

Цитата Сообщение от maxim43k Посмотреть сообщение
public:
STRUCT();
int init_athletes(athlete*& all, int count)
}
отсутствует точка с запятой после фигурной скобки

логические:
отсутсвует конструктор копирования
отсутсвует оператор присваивания
1
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 02:55  [ТС] #3
А как правильно?
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.09.2011, 02:59 #4
Цитата Сообщение от maxim43k Посмотреть сообщение
А как правильно?
книжку открой по С++, семестр только начался
0
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 03:32  [ТС] #5
Не смешно, передо мной лежит четыре книжке, но там написано мягко говоря не очень понятно. Я не сплю несколько суток, не ем почти, всё из-за каких-то 3 программочек. Мозги расплавились. Я вообще уже ничего не соображаю. Не получается у меня в класс преобразовать.

Добавлено через 26 минут
STRUCT.cpp
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
#include "STRUCT.h"
 
 STRUCT::STRUCT()
{
   int count = 0;
   int min = 0;
   athlete* all = NULL;
   clrscr();
 
   printf(" Введите количество спортсменов: ");
   scanf("%d", &count); //Ввод количества участников
   min = init_athletes(all, count);
   printf("\n Самый юный участник:\nМесто в реестре: %d\nФамилия: %s\nИмя: %s\nВозраст:"  
   "%d\n\Bремя: %d min. %d sec.", min + 1, all[min].name, all[min].f_name, all[min].age,
   all[min].time.min, all[min].time.sec);
   getch();
}
 
 int STRUCT::init_athletes(athlete*& all, int count)
{
   int i, min = 0;
   all = new athlete[count]; //массив данных типа структура
   printf(" Введите данные для каждого спортсмена:\r\n");
   for(i = 0; i < count; ++i)
      {
         printf("%d. ", i + 1); //Порядковый номер записи спортсмена
         scanf("%s %s %d %d %d", &all[i].name, &all[i].f_name, &all[i].age,
                                               &all[i].time.min, &all[i].time.sec);
         if (i == 0) min = i;
         else if (all[i].age < all[min].age) min = i;
      }
   return min;
}
STRUCT.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
 
class STRUCT
{typedef struct 
   {
    int min; //минуты
    int sec; //секунды
   }time;
 
 typedef struct
   {
    char name[20]; //имя
    char f_name[20]; //фамилия
    int age; //возраст
    time time; //результат
   }athlete;
   
 public:
        STRUCT();
        int init_athletes(athlete*& all, int count);
}
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
09.09.2011, 04:33 #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
#include <iostream>
 
using namespace std;
 
class Struct {
    
    struct time_ms {
        int min; //минуты
        int sec; //секунды
    };
 
    struct athlete {
        char name[20]; //имя
        char f_name[20]; //фамилия
        int age; //возраст
        Struct::time_ms time_ms; //результат
    };
   
public:
    Struct();
    int init_athletes(athlete *&all, int count);
};
 
Struct::Struct() {}
 
int main()
{
    Struct s;
    return 0;
}
1
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 04:39  [ТС] #7
А в двух файлах как сделать?
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
09.09.2011, 04:45 #8
struct.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Struct {
    
    struct time_ms {
        int min; //минуты
        int sec; //секунды
    };
 
    struct athlete {
        char name[20]; //имя
        char f_name[20]; //фамилия
        int age; //возраст
        Struct::time_ms time_ms; //результат
    };
   
public:
    Struct();
    int init_athletes(athlete *&all, int count);
};

struct.cpp
C++
1
2
3
#include "struct.h"
 
Struct::Struct() {}

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include "struct.h"
 
using namespace std;
 
int main()
{
    Struct s;
    return 0;
}
1
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 05:00  [ТС] #9
Так что ли?

STRUCT.cpp
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
#include "struct.h"
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
 
 Struct::Struct() 
{Struct s;
 athlete* all = NULL;
 int count = 0;
 int min = 0;
 clrscr();
 printf(" Введите количество спортсменов: ");
 scanf("%d", &count); //Ввод количества участников
 min = init_athletes(all, count);
 printf("\n Самый юный участник:\nМесто в реестре: %d\nФамилия: %s\nИмя: %s\nВозраст:"  
 "%d\n\Bремя: %d min. %d sec.", min + 1, all[min].name, all[min].f_name, all[min].age,
 all[min].time.min, all[min].time.sec);
 getch();
 return 0;
}
 
int struct::init_athletes(athlete*& all, int count)
{int i, min = 0;
 all = new athlete[count]; //массив данных типа структура
 printf(" Введите данные для каждого спортсмена:\r\n");
 for(i = 0; i < count; ++i)
   {printf("%d. ", i + 1); //Порядковый номер записи спортсмена
    scanf("%s %s %d %d %d", &all[i].name, &all[i].f_name, &all[i].age,
      &all[i].time.min, &all[i].time.sec);
    if (i == 0) min = i;
    else if (all[i].age < all[min].age) min = i;
   }
 return min;
}
STRUCT.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Struct 
{
    
    struct time_ms 
    {
        int min; //минуты
        int sec; //секунды
    };
 
    struct athlete 
    {
        char name[20]; //имя
        char f_name[20]; //фамилия
        int age; //возраст
        Struct::time_ms time_ms; //результат
    };
   
public:
    Struct();
    int init_athletes(athlete *&all, int count);
};
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
09.09.2011, 05:25 #10
регистр соблюдай
struct и Struct - разные вещи

Цитата Сообщение от maxim43k
C++
1
int struct::init_athletes(athlete*& all, int count)
неправильно

пример конструктора
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
#include <iostream>
 
using namespace std;
 
class Struct {
    
    struct time_ms {
        int min; //минуты
        int sec; //секунды
    };
 
    struct athlete {
        char name[20]; //имя
        char f_name[20]; //фамилия
        int age; //возраст
        Struct::time_ms time_ms; //результат
    };
 
    athlete a;
   
public:
    Struct();
    int init_athletes(athlete *&all, int count);
    
    athlete getath() { return a; }
};
 
Struct::Struct() { athlete t = { "a", "b", 3, { 1, 2 } }; a = t; }
 
int main()
{
    Struct s;
    cout << s.getath().name;
    return 0;
}
1
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 05:30  [ТС] #11
Правильно ли построен класс
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
09.09.2011, 05:35 #12
time_ms везде сделай
заменил из-за наличия стандартной функции time()
1
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 05:41  [ТС] #13
Это ещё что такое?

Правильно ли построен класс
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
09.09.2011, 05:45 #14
Цитата Сообщение от maxim43k
Это ещё что такое?
проверь проект
смотри здесь
1
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 10:17  [ТС] #15
Несколько раз уже перепроверял, мой глаз не видит ошибку. Что-то в правильности создания класса...

STRUCT.cpp
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
#include "struct.h"
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
 
 STRUCT::STRUCT() 
{
  STRUCT s;
  athlete* all = NULL;
  int count = 0;
  int min = 0;
  clrscr();
  printf(" Введите количество спортсменов: ");
  scanf("%d", &count); //Ввод количества участников
  min = init_athletes(all, count);
  
  printf("\n Самый юный участник:\nМесто в реестре: %d\nФамилия: %s\nИмя: %s\nВозраст:"  
  "%d\n\Bремя: %d min. %d sec.", min + 1, all[min].name, all[min].f_name, all[min].age,
  
  all[min].time_ms.min, all[min].time_ms.sec);
  getch();
}
 
int init_athletes(athlete*& all, int count)
{int i, min = 0;
 all = new athlete[count]; //массив данных типа структура
 printf(" Введите данные для каждого спортсмена:\r\n");
 for(i = 0; i < count; ++i)
   {
     printf("%d. ", i + 1); //Порядковый номер записи спортсмена
     scanf("%s %s %d %d %d", &all[i].name, &all[i].f_name, &all[i].age,
                             &all[i].time_ms.min, &all[i].time_ms.sec);
     if (i == 0) min = i;
     else if (all[i].age < all[min].age) min = i;
   }
 return min;
}
STRUCT.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class STRUCT 
{
     struct time_ms 
    {
        int min; //минуты
        int sec; //секунды
    };
 
     struct athlete 
    {
        char name[20]; //имя
        char f_name[20]; //фамилия
        int age; //возраст
        STRUCT::time_ms time_ms; //результат
    };
   
public:
    STRUCT();
    int init_athletes(athlete*& all, int count);
};
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
09.09.2011, 10:54 #16
Цитата Сообщение от maxim43k
C++
1
int init_athletes(athlete*& all, int count)
C++
1
int Struct::init_athletes(athlete*& all, int count)
поменяй STRUCT обратно

должны ещё атлеты храниться в экземпляре класса
0
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 10:58  [ТС] #17
Постоянно одна и та же ошибка возникает:

Правильно ли построен класс
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
09.09.2011, 11:09 #18
в 8ой строке STRUCT s; убрать
в 9ой строке athlete* убрать (это надо в классе описать)
ещё раз
0
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 11:28  [ТС] #19
Получилось так, не работает

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class STRUCT 
{
     struct time_ms 
    {
        int min; //минуты
        int sec; //секунды
    };
 
     struct athlete 
    {
        char name[20]; //имя
        char f_name[20]; //фамилия
        int age; //возраст
        STRUCT::time_ms time_ms; //результат
    };
    
    STRUCT::athlete* all = NULL;
   
public:
    STRUCT();
    int STRUCT::init_athletes(STRUCT::athlete*& all, int count);
};
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
09.09.2011, 11:32 #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
class Struct
{
    struct time_ms {
        int min; //минуты
        int sec; //секунды
    };
 
    struct athlete {
        char name[20]; //имя
        char f_name[20]; //фамилия
        int age; //возраст
        Struct::time_ms time_ms; //результат
    };
        
    athlete *all;
   
public:
    Struct();
    int init_athletes(int count);
};
 
Struct::Struct() 
{
    all = NULL;
}
 
int Struct::init_athletes(int count)
{
    all = new athlete[count];
    // здесь инициализация
    return 0;
}
0
09.09.2011, 11:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2011, 11:32

Как правильно реализовать класс?
Вопрос первый при реализации классов на java, я для каждого класса создавал...

Англо-русский словарь построен как двоичное дерево.
Всем привет! Помогите пожалуйста с написанием программы:cry: Очень прошу:gcray:...

Как правильно реализовать обобщённый класс?
хочу создать класс class MyGenericClass&lt;T&gt; Ругается на эту T. убрать не...


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

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

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