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

Размер массива объектов - C++

Восстановить пароль Регистрация
 
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
13.03.2013, 15:35     Размер массива объектов #1
Метод 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
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
// labar.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "iostream"
#include "conio.h"
 
using namespace std;
 
class TMessage
{
public:
    char Topic[30];
    char Author[30];
    char Text[250];
};
 
class TTopic
{
public:
    TMessage* AddMessage(char* topic,char* author,char* text);
    void GetMessage(TMessage*);
    void DeleteMessage(TMessage**,int q);
    int Count(TMessage*);
};
TMessage* TTopic::AddMessage(char* topic,char* author,char* text)
{   
   TMessage* p=new TMessage;
    strcpy(p->Topic,topic);
    strcpy(p->Author,author);
    strcpy(p->Text,text);
    return p;
}
void TTopic::GetMessage(TMessage*p)
{
    cout<<"TOPIC - "<<p->Topic<<'\n'
          <<"AUTHOR - "<<p->Author<<'\n'
          <<"TEXT - "<<p->Text<<endl;
    
}
void TTopic::DeleteMessage(TMessage **p,int q)
{ 
    for (int i=q;i<10;i++)
    {
strcpy(p[q]->Topic,p[q+1]->Topic);
strcpy(p[q]->Author,p[q+1]->Author);
strcpy(p[q]->Text,p[q+1]->Text);
    }
}
int TTopic::Count(TMessage*p)
{
    int j=0;
    for(int i=0;i<10;i++)
    {
        if (p[i].Author=="0" || p[i].Text=="0" || p[i].Topic=="0")
        break;
        else
            j++;
    }
    return j;
}
void main()
{
    setlocale(LC_ALL,"RUSSIAN");
    int* i=0;
    TTopic top; //объявляем тему
    TMessage* p[10];   //объявляем массив сообщений
        p[0]=top.AddMessage("книга","Stiven King","parapapa");
        p[1]=top.AddMessage("kniga","Stiven","parapapa");
        p[2]=top.AddMessage("0","0","0");
        
        
    top.GetMessage(p[0]);
    top.GetMessage(p[1]);
    top.GetMessage(p[2]);
    cout<<top.Count(*p)<<"\n";
    top.DeleteMessage(p,0);
    top.DeleteMessage(p,1);
    
 
    cout<<"------------------------\n";
    
     top.GetMessage(p[0]);
     top.GetMessage(p[1]);
     top.GetMessage(p[2]);
    delete p[0];
    delete p[1];
    getch();
}
здесь в цикле метода Count() счётчик до 10,но он должен выходить из цикла при просмотре 3 элемента (p[2]),но он не выходит
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 2
13.03.2013, 15:44     Размер массива объектов #2
строки так не сравниваются, strcmp
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
13.03.2013, 17:18  [ТС]     Размер массива объектов #3
Я их не сравниваю а копирую
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2013, 20:23     Размер массива объектов #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
// labar.cpp: определяет точку входа для консольного приложения.
#include "iostream"
#include "conio.h"
using namespace std;
 
class TMessage
{
public:
    char Topic[30];
    char Author[30];
    char Text[250];
};
 
class TTopic
{
public:
    TMessage* AddMessage(char* topic,char* author,char* text);
    void GetMessage(TMessage*);
    void DeleteMessage(TMessage**,int q);
    int Count(TMessage **p);
};
TMessage* TTopic::AddMessage(char* topic, char* author, char* text)
{   
    TMessage* p = new TMessage;
    strcpy(p->Topic, topic);
    strcpy(p->Author, author);
    strcpy(p->Text, text);
    return p;
}
void TTopic::GetMessage(TMessage*p)
{
    cout<<"TOPIC - "<<p->Topic<<'\n'
          <<"AUTHOR - "<<p->Author<<'\n'
          <<"TEXT - "<<p->Text<<endl;
    
}
void TTopic::DeleteMessage(TMessage **p,int q)
{ 
    for (int i=q;i<10;i++)
    {
strcpy(p[q]->Topic,p[q+1]->Topic);
strcpy(p[q]->Author,p[q+1]->Author);
strcpy(p[q]->Text,p[q+1]->Text);
    }
}
int TTopic::Count(TMessage **p)
{
    int j = 0;
    for(int i = 0 ; i < 10; i++)
    {
        if (!strcmp(p[i] ->Author, "0") || !strcmp(p[i] ->Text, "0") || !strcmp(p[i] ->Topic, "0"))
        break;
        else
            j++;
    }
    return j;
}
void main()
{
    setlocale(LC_ALL,"RUSSIAN");
    int* i=0;
    TTopic top; //объявляем тему
    TMessage *p[10];   //объявляем массив сообщений
        
        p[0]=top.AddMessage("книга","Stiven King","parapapa");
        p[1]=top.AddMessage("kniga","Stiven","parapapa");
        p[2]=top.AddMessage("0","0","0");
        
        
    top.GetMessage(p[0]);
    top.GetMessage(p[1]);
    top.GetMessage(p[2]);
    
    cout<<top.Count(p)<<"\n";
    
    top.DeleteMessage(p,0);
    top.DeleteMessage(p,1);
    
 
    cout<<"------------------------\n";
    
     top.GetMessage(p[0]);
     top.GetMessage(p[1]);
     top.GetMessage(p[2]);
    delete p[0];
    delete p[1];
    
    getch();
}
Yandex
Объявления
13.03.2013, 20:23     Размер массива объектов
Ответ Создать тему
Опции темы

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