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

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

Войти
Регистрация
Восстановить пароль
 
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
#1

C++ Почему это не работает? - C++

01.07.2009, 07:52. Просмотров 501. Ответов 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
#include<iostream>
#include<string.h>
using namespace std;
 
class Student//:public Gruppa
{
public:
    char Cto[20];
    char Fam[20];
    char Name[15];
    char Och[15];
public:
    Student();
    ~Student();
    Student(char*,char*,char*,char*);
    //void Print();
};
struct Elem
{
    char* CtoG;
    char* NameG;
    char* OchG;
    char* FamG;
    Elem *next,*prev;
public:
 
};
class Gruppa:public Student//,public Aspirant
{
    Elem *Head,*Tail;
    int n;
public:
    Gruppa();
    Gruppa(const Gruppa&);
    ~Gruppa();
    void AddTail(Student&);
    void PrintG();
    void DelAll();
    void Del(int);
};
Student::Student()
{
    char Cto[20]={0};
    char Fam[20]={0};
    char Name[15]={0};
    char Och[15]={0};
}
Student::~Student()
{
}
Student::Student(char*C,char*F,char*N,char*O)
{
    strcpy(Cto,C);
    strcpy(Fam,F);
    strcpy(Name,N);
    strcpy(Och,O);
}
Gruppa::Gruppa()
{
   Head = Tail = NULL;
   n = 0;
}
Gruppa::~Gruppa()
{
   DelAll();
}
 
void Gruppa::DelAll()
{
   while(n!= 0)
      Del(1);
}
 
 
void Gruppa::Del(int pos)
{
   if(pos < 1 || pos >n)
   {
      cout << "Incorrect position !!!\n";
      return;
   }
   int i = 1;
 
   Elem * Del = Head;
 
   while(i < pos)
   {
      Del = Del->next;
      i++;
   }
   Elem * PrevDel = Del->prev;
   Elem * AfterDel = Del->next;
   if(PrevDel != 0 && n != 1)
      PrevDel->next = AfterDel;
    if(AfterDel != 0 && n != 1)
      AfterDel->prev = PrevDel;
   if(pos == 1)
       Head = AfterDel;
   if(pos == n)
       Tail = PrevDel;
   delete Del;
 
  n--;
}
void Gruppa::AddTail(Student&S/*char*C,char*F,char*N,char*O*/)
{
    Elem * temp=new Elem;
    strcpy(temp->CtoG,S.Cto);
    strcpy(temp->FamG,S.Fam);
    strcpy(temp->NameG,S.Name);
    strcpy(temp->OchG,S.Och);
    temp->prev = Tail;
    if(Tail != 0)
        Tail->next = temp;
    if(n == 0)
        Head = Tail = temp;
    else
        Tail = temp;            
 
    n++;
 
}
void Gruppa::PrintG()
{
 
    Elem * temp = Head;
 
    while(temp->next != 0)
    {
        /*if(S==temp->CtoG)*/
            cout << temp->CtoG<< " "<<temp->FamG<<" "<<temp->NameG<<" "<<temp->OchG;
        temp = temp->next;
    }
}
void main()
{
    Gruppa A;
    Student S1("Student","Karamishev","Dmitriy","Vitalevich");
    A.AddTail(S1);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2009, 07:52     C++ Почему это не работает?
Посмотрите здесь:

C++ Почему так происходит и как это устранить
почему это так работает C++
Функция PlaySound воспроизводит звук и возвращает управление СРАЗУ ЖЕ (но это неправильно), почему? C++
[c++] fgets не могу понять почему это не работает C++
Почему это не работает? C++
C++ Почему функция не работает с чарами? Это из-за недостатка памяти?
Почему i++ это rvalue, а ++i lvalue? C++
показывает ошибку в `pow`, почему?и как это исправить? C++
C++ Почему изменение элемента массива, который был объявлен с размером [] - это UB?
C++ Подскажите, почему это работает!?)
Почему это компилируется, ведь под второй массив по идее не выделено в куче памяти C++
C++ Почему Linux понимает русский язык, и как разучить его это делать?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
01.07.2009, 09:29     C++ Почему это не работает? #2
извини, гадалки нет поблизости.
завтра, может, соберусь схожу - погадаю, что там у тебя не работает.
глядишь и отвечу...
RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
01.07.2009, 10:20     C++ Почему это не работает? #3
замени свою main() на эту
C++
1
2
3
4
5
int main()
{
// тут твой код
return 0;
}
YurA_280784
Заблокирован
01.07.2009, 17:18     C++ Почему это не работает? #4
demanxxx , Не работает т.к. память не выделил
C++
1
2
3
4
5
6
7
8
9
10
struct Elem
{
        char* CtoG;
        char* NameG;
        char* OchG;
        char* FamG;
        Elem *next,*prev;
public:
 
};
Структура с полями указателями, ну и как же ты в указатель
C++
1
2
3
4
strcpy(temp->CtoG,S.Cto);
strcpy(temp->FamG,S.Fam);
strcpy(temp->NameG,S.Name);
strcpy(temp->OchG,S.Och);
строчески хочешь скопировать, а?Память вдели, например
temp->CtoG = new char[20]; и так для всех полей структуры Elem, а потом уж копируй и будет тебе счастье...
Evg
Эксперт CАвтор FAQ
17317 / 5565 / 347
Регистрация: 30.03.2009
Сообщений: 15,129
Записей в блоге: 26
01.07.2009, 17:22     C++ Почему это не работает? #5
> Помогите пожалуйста разобраться(создать студента и группу используя наследование)

Программа концептуально написана неправилаьно. Группа не может являться наследником студента, поскольку студентом не является, но студентов содержит. Т.е. группа должна содержать в виде поля маасив студентов (но не быть наследником)
Yandex
Объявления
01.07.2009, 17:22     C++ Почему это не работает?
Ответ Создать тему
Опции темы

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