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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2011, 23:50   #1
Alovar
 
Регистрация: 25.12.2010
Сообщений: 4
Вопрос Классы и поезда в C++

Товарищи, господа, коллеги. Сегодня я понял что видимо не втыкаю в классы. Передомной стояла задача создать класс "Поезд" содержащий различные сведения, однако я схалтурил и написал все через структуру и теперь прошу помощи, можно ли мой код переписать со структуры на класс?)

Само условие задачи:

1. Определить класс с именем TRAIN, содержащий следующие поля:
- название пункта назначения;
- номер поезда;
- время отправления.

Определить методы доступа к этим полям и перегруженные операции извлечения и вставки для объектов типа TRAIN. - вот тут я малость не понял.

2. Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из восьми объектов типа TRAIN; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;
- вывод на экран информации о поездах, отправляющихся после введенного с клавиатуры времени;
- если таких поездов нет, выдать на дисплей соответствующее сообщение.

Вот мой вариант задачи но без классов
Код:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;

#define SIZE 3

void output_information(struct TRAIN *information);

struct TRAIN {
	char point[25];
	int start_time;
	char train_number[10];
};
void main(void)
{
	int i,flag;
	TRAIN *information = new TRAIN[SIZE];
	TRAIN temp;
	int m;
	for(i=0;i<SIZE;i++)
	{
		// Ввод данных
		cout<<"Enter a destination of "<<i+1<<" train: ";
		cin >> information[i].point;
		cout<<"Enter the leaving time of "<<i+1<<" train in hours: ";
		cin >> information[i].start_time;
		cout<<"Enter the number of "<<i+1<<" train: ";
		cin >> information[i].train_number;
	}
	cout << "Base data before sorting" << '\n';
	output_information(information);
	// Сортировка
	flag = 1;
	while(flag)
	{
		flag = 0;
		for(i=0;i<SIZE-1;i++)
		if(strcmp(information[i].point,information[i+1].point)>0)
		{
			strcpy(temp.point,information[i].point);
			temp.start_time = information[i].start_time;
			strcpy(temp.train_number,information[i].train_number);
			strcpy(information[i].point,information[i+1].point);
			information[i].start_time = information[i+1].start_time;
			strcpy(information[i].train_number,information[i+1].train_number);
			strcpy(information[i+1].point,temp.point);
			information[i+1].start_time=temp.start_time;
			strcpy(information[i+1].train_number,temp.train_number);
			flag = 1;
		}
	}
	cout << '\n'<<"After sorting"<<'\n';
	output_information(information);
	cout <<'\n'<< "Press any key"<< '\n';
	getch();
	cout << '\n' << "Enter the leaving time: ";
	cin >> m;
	cout << '\n' << "Searching result:" << '\n';
	flag = 1;
	for(i=0;i<SIZE;i++)
		if(information[i].start_time >= m)
		{
			printf("%-15s",information[i].point);
			printf("%-15d",information[i].start_time);
			printf("%-8s\n",information[i].train_number);
			flag = 0;
		}
		if(flag)
		{
		printf("\nThere is no trains that leave at %s",m);
		}
	delete [] information;
	getch();
}
void output_information(struct TRAIN *information)
{
	int i;
	for(i=0;i<SIZE;i++)
	{
		printf("%-15s",information[i].point);
		printf("%-15d",information[i].start_time);
		printf("%-8s\n",information[i].train_number);
	}
}
Alovar вне форума Ответить с цитированием
Старый 05.06.2011, 00:05   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что-то не очень понял ваш код, но структуры от классов отличаются тем, что по-умолчанию ( без private: , public: , protected: ) поля\методы структуры открыты для всех, а в классах соответственно наоборот.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.06.2011, 01:00   #3
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Структура - частный случай класса.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 05.06.2011, 15:07   #4
Alovar
 
Регистрация: 25.12.2010
Сообщений: 4
По умолчанию

Но все же, не могли бы вы показать как выглядел бы этот код с использованием класса вместо структур?
Alovar вне форума Ответить с цитированием
Старый 05.06.2011, 15:19   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
class train
{
private:  (private здесь лишь для улучшения читаемости. причина уже описана в сообщении #2)
    поле класса1;
    поле класса2;
public:
    конструкторы если необходимо,
    методы класса (потребуются методы для ввода, вывода и т.п., ибо доступ "напрямую" как у вас со структурой невозможен)
};
Ну и дальше вместо, например, "cin >> information[i].point;" вызывается соответствующий метод и т.д.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 05.06.2011 в 15:23.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы . Zalik Помощь студентам 1 21.02.2011 07:04
Построить вагоны поезда в определенном порядке. как? helen10 Паскаль, Turbo Pascal, PascalABC.NET 4 28.09.2010 20:14