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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 00:17     Правильно ли построен класс #1
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)
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 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)
}
отсутствует точка с запятой после фигурной скобки

логические:
отсутсвует конструктор копирования
отсутсвует оператор присваивания
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 02:55  [ТС]     Правильно ли построен класс #3
А как правильно?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.09.2011, 02:59     Правильно ли построен класс #4
Цитата Сообщение от maxim43k Посмотреть сообщение
А как правильно?
книжку открой по С++, семестр только начался
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);
}
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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;
}
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 04:39  [ТС]     Правильно ли построен класс #7
А в двух файлах как сделать?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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;
}
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);
};
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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;
}
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 05:30  [ТС]     Правильно ли построен класс #11
Правильно ли построен класс
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.09.2011, 05:35     Правильно ли построен класс #12
time_ms везде сделай
заменил из-за наличия стандартной функции time()
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 05:41  [ТС]     Правильно ли построен класс #13
Это ещё что такое?

Правильно ли построен класс
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.09.2011, 05:45     Правильно ли построен класс #14
Цитата Сообщение от maxim43k
Это ещё что такое?
проверь проект
смотри здесь
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);
};
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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 обратно

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

Правильно ли построен класс
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.09.2011, 11:09     Правильно ли построен класс #18
в 8ой строке STRUCT s; убрать
в 9ой строке athlete* убрать (это надо в классе описать)
ещё раз
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);
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2011, 11:32     Правильно ли построен класс
Еще ссылки по теме:

C++ Ошибка в выводе данных, класс выводит правильно, а класс в классе - нет
Не правильно объявил класс (Debian) C++
Как правильно обнулить структуру хранящию класс C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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;
}
Yandex
Объявления
09.09.2011, 11:32     Правильно ли построен класс
Ответ Создать тему
Опции темы

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