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

Класс домов и класс улиц для учета поступлений квартплаты. Массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Решение головоломок http://www.cyberforum.ru/cpp-beginners/thread848821.html
Скажи пожалуйста, как должна работать программа, решающая головомку: составить, например, функцию проверки окончания и прогонять все варианты или не знаю, пробывать составить какое-то дерево ходов или мыслить так же как решает человек Хочу написать решатель для головоломки Первые встречные http://www.cross-plus-a.ru/html/voc7abc.htm
C++ Изменение цвета текста Привет всем. Можно ли в консоле менять цвет ЧАСТИ текста? тоесть выделить одно слово другим цветом например Просто system(color ** ) изменяет всё целиком. В нэте не нашёл нормального ответа на мой вопрос http://www.cyberforum.ru/cpp-beginners/thread848819.html
C++ Операции над натуральными числами
Привет всем, я новенький как на форуме так и на в программировании. Начал изучать с++ 2 недели назад,самоучка, так что сильно не кричите)) Задача : Даны три натуральных числа K,L,M (K>=L>=M). Если хотя бы одно из них кратно любому другому, оставить числа без изменения. В противном случае умножить все числа на меньшее из них. #include "iostream" using namespace std;
C++ Класс, динамический массив строк
Здравствуй, пользователь. Сегодня, наконец выбравшись из рид онли и пройдя процесс регистрация, я спешу попросить тебя о помощи. Что я имею? Задание: Создать класс, включающий в себя динамический массив строк. Создать методы работы с массивом, а именно: добавить строку в конец\начало, удалить строку из конца\начала. Причём код должен быть сделан следующим образом: в мейне инициализация и...
C++ Оформить в виде функции http://www.cyberforum.ru/cpp-beginners/thread848795.html
Оформить каждый пункт задания в виде функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается. #include "stdafx.h" #include <iostream> #include "conio.h" #include "math.h" #include "windows.h" using namespace std; int **mas, n, m, i,j, y, temp;
C++ Преобразование списка адресов Возникли трудности, не могу решить задачу с переводом адресов в числа. Есть файл с таким содержанием: (данные разделены пробелами, я для наглядности по столбцам разбила) (Из файла надо считать данные) yandex.ru www.cyberforum.ru 3 google.ru yandex.ru 7 mail.ru www.cyberforum.ru 10... подробнее

Показать сообщение отдельно
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
26.04.2013, 00:28     Класс домов и класс улиц для учета поступлений квартплаты. Массив
Задание:
вырезано

Файл StdAfx.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <string.h>
#include <string>
#include <iomanip>
#include <iostream>
using namespace std;


Файл Home.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
class Home
{
    int iHome;
    int MenCount;
    int EtagCount;
    int NumbApartament;
public:
    Home();
    Home(int iH, int EtgC,int MenC, int NumbA); //Создание дома со всеми параметрами
    ~Home();
    int get_iHome();                         //Получить числовой номер дома
    int get_EtagCount();                     //Получить количество этажей в доме
    int get_MenCount();                      //Получить количество жителей дома
    int get_NumbApartament();                //Получить количество квартир в доме
    void set_iHome(int iH);                  //Установить числовой номер дома
    void set_EtagCount(int EtgC);            //Установить количество этажей в доме
    void set_MenCount(int MenC);             //Установить количество жителей в доме
    void set_NumbApartament(int NumbA);      //Установить количество квартир в доме
    friend ostream &operator<<(ostream &output, Home &H);
    Home operator+(Home &); //
};


Файл Home.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
#include "StdAfx.h"
#include "Home.h"
 
 
Home::Home() //Создание дома без параметров
{
    iHome=EtagCount=MenCount=NumbApartament=0;
}
 
Home::Home(int iH, int EtgC,int MenC, int NumbA) //Создание дома со всеми параметрами
{
    this->iHome=iH;
    this->EtagCount=EtgC;
    this->MenCount=MenC;
    this->NumbApartament=NumbA;
}
 
Home::~Home() //Снос дома
{
}
 
void Home::set_iHome(int iH) {this->iHome=iH;} //Получаем числовой номер дома
void Home::set_EtagCount(int EtgC) {this->EtagCount=EtgC;} //Получаем количество этажей в доме
void Home::set_MenCount(int MenC) {this->MenCount=MenC;} //Получаем число жителей в доме
void Home::set_NumbApartament(int NumbA) {this->NumbApartament=NumbA;} //Получаем количество квартир в доме
 
int Home::get_iHome() {return iHome;} //Устанавливаем числовой номер дома
int Home::get_EtagCount() {return EtagCount;} //Устанавливаем количество этажей в доме
int Home::get_MenCount() {return MenCount;} //Устанавливаем количество жителей в доме
int Home::get_NumbApartament() {return NumbApartament;} //Устанавливаем количество квартир в доме
ostream &operator<<(ostream &output, Home &H) //перегрузка оператора вЫвода <<
{
    return output;
}


Файл Street.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma once
class Street
{
    string Name_Street; //Символьное название улицы
    int Homes_num; //Число домов на улице
    int NumberStreet; //Номер улицы
    int ChisloPeople; //Количество людей, проживающих на улице
public:
    Street();
    Street(string NameS, int NumH, int NumS, int ChP);
    ~Street();
    string GetNameStreet();
    int GetHomesNum();
    int GetNumbStreet();
    int GetChisloPeople();
    void SetNameStreet(string NameStr);
    void SetHomeNum(int NumH);
    void SetNumbStreet(int NumSt);
    void SetChisloPeople(int ChP);
    friend ostream &operator<<(ostream &output, Street &Str);
};


Файл Street.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
#include "StdAfx.h"
#include "Street.h"
 
 
Street::Street(void)
{
}
Street::Street(string NameS, int NumH, int NumS, int ChP)
{
    Name_Street=NameS;
    this->Homes_num=NumH;
    this->NumberStreet=NumS;
    this->ChisloPeople=ChP;
}
Street::~Street(void)
{
}
void Street::SetNameStreet(string NameStr) {Name_Street=NameStr;}
void Street::SetHomeNum(int NumH) {Homes_num=NumH;}
void Street::SetNumbStreet(int NumSt) {NumberStreet=NumSt;}
void Street::SetChisloPeople(int ChP) {ChisloPeople=ChP;}
string Street::GetNameStreet() {return Name_Street;}
int Street::GetHomesNum() {return Homes_num;}
int Street::GetNumbStreet() {return NumberStreet;}
int Street::GetChisloPeople() {return ChisloPeople;}
ostream &operator<<(ostream &output,  Street &Str)
{
    return output;
}


Основная проблема - это массив. Растолкуйте плиз что надо добавить и переделать..

Добавлено через 1 час 30 минут
Задание:
Кликните здесь для просмотра всего текста

Вариант выбирается следующим образом: получить оста-ток от деления № студента по списку в электронном универси-тете на число вариантов, если остаток равен нулю, то берется последний вариант, если остаток не равен нулю, то это есть номер варианта.
Первым шагом в выполнении ДЗ должно быть осмысление поставленной задачи, и, в частности, выделение новых типов объектов, для которых нужно разработать обоб-щенные описания объектов в виде классов на языке СИ++. Нужно определить свойства объектов каждого класса и его поведение. Другими словами, необходимо первоначально выделить основные данные для объектов класса и перечень методов/функций, которые эти данные изменяют. На первом этапе это делается на абстрактном уровне.
Для начала проектирования является важным определение, так называемой, пред-метной области. Под предметной областью понимается совокупность понятий, объектов реального мира, их свойств, а также что с этими объектами можно делать в программе и делается в жизни. Для одной и той же системы классов может быть выделено много раз-личных предметных областей, которые, в конечном счете, зависят от решаемой (постав-ленной) задачи автоматизации. Поэтому первым шагом нужно задать одну или несколь-ко предметных областей, для которых будет разрабатываться система классов.
Пример. Будем рассматривать для пояснения пример разработки системы классов улиц и классов домов, которые могут располагаться на конкретных улицах. Возможны следующие задачи, для которых разрабатывается такая система классов: контролирова-ние оплаты жителями коммунальных услуг, проведение выборов, ремонт строений на улице и самой улицы, ведение паспортного учета жителей (или прописки), оценка числа жителей на улице для планирования социальных услуг, построение карт города с ули-цами (детализация по домам), оценка движения автомобилей по улице и т.д. Из этого перечня задач видно, что от выбора конкретной задачи существенно зависят свойства будущих объектов и набор операций (методов), которые над этими объектами преду-сматриваются. Определим, для примера, предметную область так: учет числа жителей на улице и оценка необходимости ремонта строений улицы.
Далее для каждого объекта предметной области, на содержательном уровне, нужно более детально задать перечень свойств (данных) и возможных операций над этими свойствами.
Пример. Например, свойства для дома: номер дома, этажность дома, число жите-лей в доме, признак ремонта, тип строения и т.д. Операции для дома: установка числа жителей, изменение типа дома, установка или сброс признака необходимости ремонта дома. Для улицы можно выделить свойства: название улицы, тип улицы, число домов на улице, число жителей, признаки ремонта улицы и т.д.
Далее целесообразно проанализировать предметную область и поставленную зада-чу и определить необходимость дополнительных классов для реализации. Эти классы могут быть технологическими (вспомогательными) и содержательными. Технологиче-ские классы могут быть выделены, например, для реализации контейнеров элементных объектов (списки, массивы, множества и т.д.) и для выполнения других функций реше-ния задачи. Эти классы не имеют явных аналогов в предметной области и выделяются на основе опыта программиста. Дополнительные содержательные классы могут потре-боваться для комплексного решения задачи. Например, Для нашего случая это могут быть: класс городов (при построении карт), класс планов ремонта улиц (в ремонтной задаче), классы бюджетов оплаты жилья (для контроля оплаты квартир) и т.д.
Более важным является определение перечня возможных операций над объектами. Не всегда удается сразу определить его полностью: он наращивается и видоизменяется в процессе проектирования и реализации программной системы.
Пример. Предположим тема задания следующая - разработать систему классов для описания объектов строений/домов улиц (элементные объекты) и объектов типа улица, содержащих в себе элементные объекты (дома). Улица - это контейнерный объект. Зада-чи, для которых разрабатывается система классов, заданы выше. Для домов целесообраз-но выделить свойства создания дома (построение), удаления дома (снос дома), изменения свойств дома (установка признаков необходимости ремонта, числа жителей и т.д.). Для улиц возможные операции: добавление и удаление домов, переименование улицы, по-верка признака ремонта улицы и домов на улице. Предположим, что нужно предусмот-реть операции для контейнерного объекта: добавления строений, переименования улиц, сноса строений, печати списка домов, добавления строений и т.д. Более детально это расшифровано ниже, включая и раскрытие понятий предметной области:
1. В нашем случае, на первом этапе мы должны выделить следующие понятия: дома/строения и улицы, как упорядоченной совокупности домов.
2. Понятие дома - объекта, возможно, будет обладать следующими свойствами: номер дома, этажность дома, число жителей дома, расположение на левой или правой стороне улицы, название дома, характеристика строения и т.д.
3. Понятие улицы – объекта, возможно, будет содержать следующие свойства: название улицы, перечень домов улицы, число проживающих на улице, число домов, район расположения, город улицы и т.д.
4. Поведение дома – набор методов, возможно, будет содержать следующие дей-ствия: создание дома, разрушение дома, чтение параметров, изменение номера дома и название, установка число проживающих, изменение этажности – пере-стройка дома, распечатка дома и т.д.
5. Поведение улицы – набор методов, возможно, будет содержать следующие дей-ствия: создание улицы, удаление улицы, добавление дома на улицу, удаление дома с улицы, новая нумерация домов на улице, распечатка домов улицы, из-менение названия улицы, чтение параметров улицы, объединение двух улиц, деление улиц на две и т.д.
6. Уже сейчас, можно придумать название для классов этих объектов: дом Home, а улица – Street. Так как это описание классов на языке программирования, то мы должны давать названия латиницей. Лучше эти названия дать осмысленно.
7. В качестве технологических классов можно выделить классы: список (List).


Пример. В нашем случае материальный объект – дом/строение. Контейнерный объ-ект улица, как совокупность домов. На первом этапе необходимо очень внимательно на понятийном уровне продумать смысл каждого свойства и каждого действия над выде-ленными типами объектов. Ниже приведены некоторые свойства классов с описание содержания:
1. Номер дома порядковый – целочисленная переменная (int HomeNumber), а операции по изменению номера дома и чтению этих параметров (SetHome-Number и GetHomeNumber) и т.д. Придуманные обозначения желательно по-местить в таблицу, в которой будут перечислены все понятия их свойства и ме-тоды работы с данными объекта, их названия и типы.
2. Номер дома символьный – символьная переменная (char *Home_Number), по-требуется, так как дома часто имеют различные индексы в номере (Например: “Дом 5а-стр.2”).
3. Название улицы – символьный массив (char NameStreet[30]) или указатель на имя (char * pNameStreet). Для добавления дома на улицу придумаем метод (AddHome), а для удаления дома с улицы (DeleteHome). И т.д. Придуманные обозначения желательно поместить в таблицу, в которой будут перечислены понятия/методы, их названия и типы.
Реализация контейнерных классов

В каждом задании на ДЗ требуется создать минимум один контейнерный класс. Контейнерные классы – это такие классы, на основе которых создаются объекты, вклю-чающие в себя другие объекты (отношение накопления). Контейнерные классы могут быть упорядоченными (массивы и списки) и неупорядоченными (множества). Для реа-лизации контейнерных классов студенты могут выбрать один из подходов:
• Использование стандартных (библиотечных) классов типа список или массив, а соб-ственный контейнерный класс наследовать от них.
• Создание собственных списков в контейнерном классе задания (например, в классе улиц) и реализация в них всех операций над списками. Менее универсальный вари-ант.
• Создание собственных отдельных классов типа список и массив, с дальнейшим наследованием контейнерных классов задания от них. Более универсальный вари-ант.

Некоторые особенности выполнения ДЗ

При выполнении задания должны быть учтены следующие требования. В этом разделе даются также методические указания для реализации задания.

1. Для классов объектов явно определяются и разрабатываются: конструкторы (не ме-нее двух для каждого класса) и деструкторы (для каждого класса);
Пример. Конструкторы могут с первоначальным заданием параметров или нет, напри-мер, с заданием названия улицы и т.д.

2. В каждом классе помимо конструкторов и деструкторов должны быть определены не менее четырех методов (функций членов класса) и не менее четырех свойств (дан-ных класса);
Пример. Методы для улиц могут быть такими: добавление дома, удаление дома, распе-чатки домов улицы, нумерация домов, сложение улиц, деление улиц и т.д. Например, деление улицы на две может интерпретироваться так: первые N домов переносятся на "улицу Горького", а остальные на "Тверскую". Т.е., другими словами, из одного объекта мы получаем два других объекта с определенными свойствами. Разрабатывая такую опе-рацию нужно продумать вопросы: где создаются новые объекты, как они заполняться, уничтожается ли исходный объект и т.д.

3. Один из разрабатываемых классов должен быть контейнерного типа (массив, спи-сок, множество и т.д.), в нем должны быть определены операции добавления, удале-ния и распечатки из контейнера.
Пример. В контейнерном классе улица предусматриваются операции добавления домов, их удаления, печати всех домов улицы и т.д.

4. В одном классе по выбору, в зависимости от варианта, определяется как минимум одна перегружаемая операция (обязательная операция, обозначенная знаком "+" ).
Пример. В нашем случае лучше определить операцию сложения двух улиц или опера-цию добавления дома на улицу. В первом случае это может выглядеть так:
Оператор присваивания -Street3 = Street1+ Street2;
а во втором просто выражение присваивания – Street1+Home1;.

5. Должен быть разработан, описан в отчете и представлен демонстрационный (тесто-вый) пример, иллюстрирующий работу всех составляющих разработанной системы классов (свойств и методов/функций членов), который является основой для сдачи домашнего задания;

Пример. В демонстрационном примере должны быть показано использование всех клас-сов, на основе определения объектов и работу всех методов этих классов. Например, для классов улиц: создание улиц статическое и динамическое через операцию new, уничто-жение улиц через операцию delete, добавление домов на улицу, их удаление, распечатку домов, слияние улиц и т.д.

6. Описания классов должны быть вынесены в отдельные файлы (*.h). При этом необ-ходимо исключить повторное включение описаний в исходный текст.
Пример. Например, с помощью переменных этапа компиляции (define __STREET_H):
#if !defined( __STREET_H )
…… Основной текст файла
#endif //

7. Обязательным является перегрузка операции вывода (<<) в стандартный поток COUT для предметного класса.

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