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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
#1

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

09.09.2011, 00:17. Просмотров 1465. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильно ли построен класс (C++):

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

Правильно ли построил класс? - C++
Здравствуйте, нужен совет. задание такое: построить иерархию домашней электротехники. я сделал общий абстрактный класс который содержит...

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

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

Как правильно реализовать класс? - C++
Вопрос первый при реализации классов на java, я для каждого класса создавал новый файл, как это лучше реализовать в c++ есть ли возможность...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 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)
}
отсутствует точка с запятой после фигурной скобки

логические:
отсутсвует конструктор копирования
отсутсвует оператор присваивания
1
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 02:55  [ТС] #3
А как правильно?
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 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
4822 / 3243 / 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;
}
1
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 04:39  [ТС] #7
А в двух файлах как сделать?
0
accept
4822 / 3243 / 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;
}
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
4822 / 3243 / 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;
}
1
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 05:30  [ТС] #11
Правильно ли построен класс
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2011, 10:17
Привет! Вот еще темы с ответами:

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

Англо-русский словарь построен в виде двоичного дерева в программе с++ - C++
Англо-русский словарь построен в виде двоичного дерева. Каждая компонента содержит английское слово, соответствующее ему русское слово и...

Как правильно обнулить структуру хранящию класс - C++
struct test{ int a; int b; wstring str; } test as; as.a = 2;

Как правильно подключить шаблонный класс (VS2008)? - C++
Добрый день! Помогите в подключении шаблонного класса в Visual Studio 2008 Professional. Создал консольный проект,в заголовочном...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.09.2011, 10:17
Ответ Создать тему
Опции темы

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