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

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

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

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

09.09.2011, 00:17. Просмотров 1481. Ответов 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: Англо-русский словарь построен как двоичное дерево. ...

45
accept
4822 / 3243 / 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 обратно

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

Правильно ли построен класс
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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
4822 / 3243 / 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;
}
0
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 11:39  [ТС] #21
*.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
#include "struct.h"
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
 
 STRUCT::STRUCT() 
{
  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 STRUCT::init_athletes(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;
}
*.h
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; //результат
    };
    
    athlete *all;  
    
public:
    STRUCT();
    int init_athletes(int count);
};
Правильно ли построен класс
0
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 20:57  [ТС] #22
Из-за чего ругается? Я английский не понимаю

Добавлено через 16 минут
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 "struct.h"
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
 
 STRUCT::STRUCT() 
{
  all = NULL;
  int count = 0;
  int min = 0;
  clrscr();
  printf(" Введите количество спортсменов: ");
  scanf("%d", &count); //Ввод количества участников
  init_athletes(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 STRUCT::init_athletes(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 0;
}
--------------------------------------------------------------------------------

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; //результат
    };
    
    athlete *all;  
    
public:
    STRUCT();
    int STRUCT::init_athletes(int count);
};
Добавлено через 8 часов 48 минут
Укажите на ошибки, пожалуйста
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,474
09.09.2011, 21:22 #23
Одним файлом всё, ни на что не ругается
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
#include <stdio.h>
#include <iostream>
#include <conio.h>
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 *all;  
        
public:
    STRUCT();
    int STRUCT::init_athletes(int count);
};
 
int main() {
 getchar();
 return 0;
}
 
 
 
 STRUCT::STRUCT() 
{
  all = NULL;
  int count = 0;
  int min = 0;
//  clrscr();
  printf(" Введите количество спортсменов: ");
  scanf("%d", &count); //Ввод количества участников
  init_athletes(count);
//  printf("Самый юный участник:\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,
  printf("%d\nФамилия: %s\nИмя: %s\nВозраст: %d\nBремя: %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 STRUCT::init_athletes(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 0;
}
0
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 21:32  [ТС] #24
В том то и проблема, что мне нужно всё сделать в двух файлах *.cpp и *.h Вот класс с двумя файлами у меня никак не хочет работать(((
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,474
09.09.2011, 21:42 #25
..А вообще фигню ты делаешь. Я так понял, прога должна выводить данные самого юного участника? Значит, кропай некое подобие сортировки и сортируй участников по полю athlete.age, а то у тебя самым юным выводится первый введённый перец , а он может старпень какой-нибудь...

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
#include "STRUCT.h"
int main() {
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 getchar();
 STRUCT str;
 return 0;
}
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
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <conio.h>
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 *all;  
        
public:
    STRUCT();
    int STRUCT::init_athletes(int count);
};
 
 
 
 STRUCT::STRUCT() 
{
  all = NULL;
  int count = 0;
  int min = 0;
//  clrscr();
  printf(" Введите количество спортсменов: ");
  scanf("%d", &count); //Ввод количества участников
  init_athletes(count);
  printf("Самый юный участник:\nМесто в реестре: %d\nФамилия: %s\nИмя: %s\nВозраст: %d\nBремя: %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 STRUCT::init_athletes(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 0;
}
кидай файлы в одну директорию, озаглавливай второй STRUCT.h, первый как хочешь и компиль и всё будет круто
0
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 21:57  [ТС] #26
Фишка в том, что у меня ВС++ 3.1. Ничего опять не компилится, не работает, исправлял под себя, а всё равно не хочет запускаться
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,474
09.09.2011, 22:08 #27
А ошибки какие?
0
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 22:19  [ТС] #28
Я пытаюсь скомпилировать такой код:

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
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include "STRUCT.h"
 
 STRUCT::STRUCT()
{
  all = NULL;
  int count = 0;
  int min = 0;
  clrscr();
  printf(" Введите количество спортсменов: ");
  scanf("%d", &count); //Ввод количества участников
  init_athletes(count);
  printf("Самый юный участник:\nМесто в реестре: %d\nФамилия: %s\nИмя: %s" 
  "\nВозраст: %d\nBремя: %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 STRUCT::init_athletes(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 0;
}
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
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 STRUCT::init_athletes(int count);
};
В итоге:
Правильно ли построен класс
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,474
09.09.2011, 22:24 #29
Слушай, насколько я знаю в каждой проге должна присутствовать главная функция main (или Winmain), короче, чё-то такое. Если есть возражения по этому пункту, давай их сюда.

Ты же безо всякого предупреждения режешь на корню мой код, убираешь оттуда main и говоришь, что оно не компилится. А оно вроде и не должно компилиться- main-то отсутствует!

Компиль МОЙ код и будем разбираться.
0
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 22:34  [ТС] #30
Твой код как есть

Правильно ли построен класс
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2011, 22:34
Привет! Вот еще темы с ответами:

Как правильно реализовать обобщённый класс? - 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. Создал консольный проект,в заголовочном...


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

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

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