Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2010, 13:27   #1
Sxronjkeee
 
Регистрация: 21.10.2010
Сообщений: 8
По умолчанию формирование массива объектов

Помогите исправит программу!

Надо написать программу, выполняющую:
•формирование массива объектов (с конструктором по умолчанию);
•формирование одиночных объектов (с конструктором с параметрами);
•ввод данных с клавиатуры;
•вывод данных на экран.

Определить класс, описывающий объект «дом» (улица, номер, год постройки, количество квартир, количество жильцов и т.д.).

Примерный код:

Код:
class home{
private:
        home(void);
        home(char *a, char *b, char *c, char *d);
        ~home(void);
 
        void Input(void);
    void Output(void);
 
private:
        char number[100];
        char god[100];
private:
        char kvartira[100];
        char street[100];
};
Код:
#include <stdio.h>
#include <string.h>
#include "CData.h"
 
home::home()
{
char street[100];
char number[100];
char god[100];
char kvartira[5];
 
strcpy (street, "street");
strcpy (number, "number");
strcpy (god, "god");
strcpy (kvartira, "kvartira");
}
 
home::home(char *a, char *b, char *c, char *d)
{
        strcpy (street, a);
        strcpy (number, b);
        strcpy (god, c);
        strcpy (kvartira, d);
}
home::~home()
{
}
 
void home::Input()
{
    char szBuf[100];
    printf("street:\n");
    printf("    street (string): ");
    gets(szBuf);
    sscanf(szBuf, "%s", &street);
    printf("   number  (string): ");
    gets(number);
        printf("  god (int):");
        scanf("%d",god);
        printf("  kvartira (int):");
        scanf("%d",kvartira);
}
 
void home::Output()
{
        printf("street: %s. number: \"%s\". god: %d. kvartira: %d.\n", street, number, god, kvartira);
}
void main (void)
{
home v1;
home v2("aaa", "bbb", "ccc");
home v3[5];
 
 
v1.Output();
v2.Output();
 
int i;
        for (i = 0; i < 5; i++) {
        v3[i].Input();
    }
    for (i = 0; i < 5; i++) {
        v3[i].Output();
    }
}
Первый файл с расширением h, второй cpp. Помогите плиз.
проблема с выводом объектов, помогите исправить, чтобы всё норм было)
Sxronjkeee вне форума Ответить с цитированием
Старый 21.10.2010, 14:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
формирование массива объектов
Изучай это по картам изучай это по звездам:
Код:
// erqweq.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"

#include <stdio.h>
#include <string.h>

class home{
public:
        home(void){
            char street[100];
            char number[100];
            char god[100];
            char kvartira[5];
 
            strcpy (street, "street");
            strcpy (number, "number");
            strcpy (god, "god");
            strcpy (kvartira, "kvartira");
            }
        home(char *a, char *b, char *c, char *d);
        ~home(void);
 
        void Input(void);
    void Output(void);
 
private:
        char number[100];
        char god[100];
private:
        char kvartira[100];
        char street[100];
};


home::home(char *a, char *b, char *c, char *d)
{
        strcpy (street, a);
        strcpy (number, b);
        strcpy (god, c);
        strcpy (kvartira, d);
}
home::~home()
{
}
 
void home::Input()
{
    char szBuf[100];
    printf("street:\n");
    printf("    street (string): ");
    gets(szBuf);
    sscanf(szBuf, "%s", &street);
    printf("   number  (string): ");
    gets(number);
        printf("  god (int):");
        scanf("%d",god);
        printf("  kvartira (int):");
        scanf("%d",kvartira);
}
 
void home::Output()
{
        printf("street: %s. number: \"%s\". god: %d. kvartira: %d.\n", street, number, god, kvartira);
}


int _tmain(int argc, _TCHAR* argv[])
{
home *v1;
home *v2= new home("aaa", "bbb", "ccc","");
home *v3[5];
 
 
v1->Output();
v2->Output();
 
int i;
    for (i = 0; i < 5; i++) {
        v3[i]=new home();
        v3[i]->Input();
    }
    for (i = 0; i < 5; i++) {
        v3[i]->Output();
    }

    return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2010, 15:11   #3
Sxronjkeee
 
Регистрация: 21.10.2010
Сообщений: 8
По умолчанию

спс)
но у меня при комптляции выдаёт ошибку:
fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory
как исправить?
Sxronjkeee вне форума Ответить с цитированием
Старый 21.10.2010, 15:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А убери его вообще.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2010, 15:48   #5
Sxronjkeee
 
Регистрация: 21.10.2010
Сообщений: 8
По умолчанию

убрал)
теперь при компелиции вылетает:


Warning 1 warning C4996: 'strcpy' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 15
Warning 2 warning C4996: 'strcpy' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 16
Warning 3 warning C4996: 'strcpy' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 17
Warning 4 warning C4996: 'strcpy' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 18
Warning 5 warning C4996: 'strcpy' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 37
Warning 6 warning C4996: 'strcpy' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 38
Warning 7 warning C4996: 'strcpy' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 39
Warning 8 warning C4996: 'strcpy' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 40
Warning 9 warning C4996: 'gets' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 51
Warning 10 warning C4996: 'sscanf' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 52
Warning 11 warning C4996: 'gets' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 54
Warning 12 warning C4996: 'scanf' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 56
Warning 13 warning C4996: 'scanf' was declared deprecated c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 58
Warning 14 warning C4313: 'printf' : '%d' in format string conflicts with argument 3 of type 'char *' c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 63
Warning 15 warning C4313: 'printf' : '%d' in format string conflicts with argument 4 of type 'char *' c:\documents and settings\admin\мои документы\visual studio 2005\projects\klass\klass\stdafx.cp p 63

и прога слетает
Sxronjkeee вне форума Ответить с цитированием
Старый 21.10.2010, 16:01   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну не знаю...
Я в VS2010 проверял...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2010, 16:26   #7
Sxronjkeee
 
Регистрация: 21.10.2010
Сообщений: 8
По умолчанию

я на VS2005 пишу
прописал:
#pragma warning(disable: 4996) всё исчезло) осталось только:
Warning 1 warning C4700: uninitialized local variable 'v1' used
и всё равно прога слетает
Sxronjkeee вне форума Ответить с цитированием
Старый 21.10.2010, 16:33   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
#include <stdio.h>
#include <string.h>

class home{
public:
        home(void){ 
            strcpy (street, "street");
            strcpy (number, "number");
            strcpy (god, "god");
            strcpy (kvartira, "kvartira");
            }
        home(char *a, char *b, char *c, char *d);
        ~home(void);
 
        void Input(void);
    void Output(void);
 
private:
        char number[100];
        char god[100];
private:
        char kvartira[100];
        char street[100];
};


home::home(char *a, char *b, char *c, char *d)
{
        strcpy (street, a);
        strcpy (number, b);
        strcpy (god, c);
        strcpy (kvartira, d);
}
home::~home()
{
}
 
void home::Input()
{
    char szBuf[100];
    printf("street:\n");
    printf("    street (string): ");
    gets(szBuf);
    sscanf(szBuf, "%s", &street);
    printf("   number  (string): ");
    gets(number);
        printf("  god (int):");
        scanf("%d",god);
        printf("  kvartira (int):");
        scanf("%d",kvartira);
}
 
void home::Output()
{
        printf("street: %s. number: \"%s\". god: %d. kvartira: %d.\n", street, number, god, kvartira);
}


int _tmain(int argc, _TCHAR* argv[])
{
home *v1=new home();
home *v2= new home("aaa", "bbb", "ccc","");
home *v3[5];
 
 
v1->Output();
v2->Output();
 
int i;
    for (i = 0; i < 5; i++) {
        v3[i]=new home();
        v3[i]->Input();
    }
    for (i = 0; i < 5; i++) {
        v3[i]->Output();
    }

    return 0;
}
тот варнинг не спроста))

Виталий, как у тебя работал вывод не инициализированного обьекта науке не известно(выделил красным место вылета в неисправленном коде)

теперь поидее должно работать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.10.2010, 17:10   #9
Sxronjkeee
 
Регистрация: 21.10.2010
Сообщений: 8
По умолчанию

да щас норм, спс) только почему первый раз нормально всё вводится, а начиная со второго не даёт мне ввести street и сразу просит ввести number? и после 5 раза прога закрывается, как сделать чтобы не закрывалась?)
Sxronjkeee вне форума Ответить с цитированием
Старый 22.10.2010, 14:45   #10
Sxronjkeee
 
Регистрация: 21.10.2010
Сообщений: 8
По умолчанию

щас всё работает) только вопрос, как мне сделать вывод без оператора new?
Sxronjkeee вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование массива Pascal n0rma1 Помощь студентам 3 20.04.2010 16:03
Формирование нового массива из данных в Делфи Юлия Алексеевна Помощь студентам 0 07.03.2010 13:53
Формирование массива B из A(pascal,delphi) HouK Помощь студентам 3 10.12.2009 12:09
задача на формирование массива. паскаль Ananim-Pbl6ak Помощь студентам 8 20.03.2009 03:57