Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Массив классов 
:(
    Опции темы
Павлуха
Дата 2.10.2006, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 19.5.2006

Репутация: нет
Всего: нет



Вот какая проблема..........Если в этой программе создавать не массив объектов а один объект всё работает нормально, если массив(как здесь)-выводит ерунду........Что делать и какая специфика при работе с массивом объектов????
Код

#include <iostream.h>
#include <string.h>
class book
{    protected:
    char avtor[20];
    char name[20];
public:
    void set(char* a, char* n){strcpy(avtor,a); strcpy(name,n);}
    void print()
    {
        cout<<avtor<<'\n'<<name;
    }};
class book2:public book
{
    int year;
    char isd[20];
    int kol;
    int kosht;
    public:
    void set(int y, char* i, int k,int c )
    {year=y; strcpy(isd,i); kol=k; kosht=c;}
    void print()
    {
        
        cout<<'\n'<<year<<'\n'<<isd<<'\n'<<kol<<'\n'<<kosht;
    }};
void main()
{
int s,y,k,c;
char a[20], n[20], i[20];
book ob[10];
book2 obb[10];
cout<<"AVTOR";
cin>>a;
cout<<"NAME";
cin>>n;
cout<<"YEAR";
cin>>y;
cout<<"ISD-VO";
cin>>i;
cout<<"KOL_VO";
cin>>k;
cout<<"CENA";
cin>>c;
for (s=0;s<10;s++)
{
ob[s].set(a,n);
obb[s].set(y,i,k,c);
}
ob[s].print();
obb[s].print();
}


PM MAIL   Вверх
Daevaorn
Дата 2.10.2006, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: нет
Всего: 70



Цитата(Павлуха @  2.10.2006,  22:26 Найти цитируемый пост)
ob[s].print();
obb[s].print();

Это и не будет работать. У тебя всего 10 элементов, а ты тут к 11му обращаешься

Hint:
Цитата(Павлуха @  2.10.2006,  22:26 Найти цитируемый пост)
void main()
{

Лучше
Код

int main()
{
   //...
   return 0;
}


PM MAIL WWW   Вверх
triclosan
Дата 2.10.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: нет
Всего: 12



Хочу добавить, что лучше вместо массивов объектов использовать колекции, векторы, к примеру. Кстати, подобных проблем в таком случае не возникнит.
PM MAIL   Вверх
Павлуха
Дата 2.10.2006, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 19.5.2006

Репутация: нет
Всего: нет



Ой согласен затупил но вот и при таакой раскладке не хочет создавать 2 объекта, я пишу 2 книги а он сканит только одну и сразу же выводит ее на экран и 2 раза, что-то я не могу догнать в чём дело....
Код

void main()
{
int s,y,k,c,e=0;
char a[20], n[20], i[20];
book ob[10];
book2 obb[10];
cout<<"Vvedite kol-vo knig";cin>>e;
cout<<"AVTOR";cin>>a;
cout<<"NAME";cin>>n;
cout<<"YEAR";cin>>y;
cout<<"ISD-VO";cin>>i;
cout<<"KOL_VO";cin>>k;
cout<<"CENA";cin>>c;
for (s=0;s<e;s++)
{
ob[s].set(a,n);
obb[s].set(y,i,k,c);
}
for (s=0;s<e;s++)
{
ob[s].print();
obb[s].print();
}
}






Это сообщение отредактировал(а) Павлуха - 2.10.2006, 22:35
PM MAIL   Вверх
Daevaorn
Дата 2.10.2006, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: нет
Всего: 70



Цитата(Павлуха @  2.10.2006,  23:14 Найти цитируемый пост)
Ой согласен затупил но вот и при таакой раскладке не хочет создавать 2 объекта

Он и создает 2, только из одних введенных данных. Как вариант:
Код

void main()
{
int s,y,k,c,e=0;
char a[20], n[20], i[20];
book ob[10];
book2 obb[10];
cout<<"Vvedite kol-vo knig";cin>>e;
е = ( е <=20 ) ? e : 20;
for( s = 0; s < e; ++s )
{
cout<<"AVTOR";cin>>a;
cout<<"NAME";cin>>n;
cout<<"YEAR";cin>>y;
cout<<"ISD-VO";cin>>i;
cout<<"KOL_VO";cin>>k;
cout<<"CENA";cin>>c;
ob[s].set(a,n);
obb[s].set(y,i,k,c);
}
for (s=0;s<e;s++)
{
ob[s].print();
obb[s].print();
}
}


PM MAIL WWW   Вверх
Павлуха
Дата 3.10.2006, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 19.5.2006

Репутация: нет
Всего: нет



А как применяются конструкторы и деструкторы, если создавать просто объекты всё понятно, а как при работе с массивами объектов они применяются(для данного случая)........
P.S. Извините если я вас уже запарил!!! smile 
PM MAIL   Вверх
Rockie
Дата 3.10.2006, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



Павлуха, а где остальной код?

в существующем полагаю должно быть что-то вроде этого:
Код
cout<<"Vvedite kol-vo knig";cin>>e;
for (s=0;s<e;s++)
{
cout<<"AVTOR";cin>>a;
cout<<"NAME";cin>>n;
cout<<"YEAR";cin>>y;
cout<<"ISD-VO";cin>>i;
cout<<"KOL_VO";cin>>k;
cout<<"CENA";cin>>c;
ob[s].set(a,n);
obb[s].set(y,i,k,c);
}




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
sergejzr
Дата 3.10.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
vinter
Дата 3.10.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата

А как применяются конструкторы и деструкторы, если создавать просто объекты всё понятно, а как при работе с массивами объектов они применяются

точно так же

Это сообщение отредактировал(а) vinter - 3.10.2006, 15:16


--------------------
Мой блог
PM MAIL WWW   Вверх
sergejzr
Дата 15.11.2006, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0773 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.