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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнить два значения, Задачу решить с исп классов 
V
    Опции темы
SHUSTER
Дата 15.6.2011, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сравнить два значения (использовать классы)

На экране работа проги должна выглядеть так:

ВВЕсти имя: Ivan
ВВести год рождения: 1990
ВВести имя: Petr
ВВести год рождения: 2000

Ivan старше чем Petr
Ivan 1990
Petr 2000

Код класса должен быть примерно таким:

Код

class My_CClass
{
private: char* name;
int year;
public:
My_CClass (void);
~My_CClass(void);
};


Код функции main:

Код

void main(void)
{
My_CClass s1, s2;
cin >> s1 >> s2;
comp (s1, s2);
cout << s1 << '\n' << s2 << endl;
_getch();
}


Прототип дружественной ф-ции:

Код

void comp (const My_CClass, const My_CClass);


Хочу чтоб кто-нибудь мне помог собрать это всё в готовую задачу  smile 
PM MAIL ICQ Jabber   Вверх
mes
Дата 16.6.2011, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



вот лови подарочек и допиливай.. 
Код

#include <iostream>

struct person
{
   std::string name;
   int year;
};

bool less_by_year (person const& lhs
                  ,person const& rhs)
{
   return (lhs.year<rhs.year);
}

person person_from_cin ()
{
   person pers = { "null_name", 0 };
   std::cout << "name:";
   std::cin >> pers.name;
   std::cout << "year:";
   std::cin >> pers.year;
   
   return pers;
}
void person_compare_cout(person const& lhs
                          ,person const& rhs) 
{
   if      (less_by_year(lhs,rhs)) std::cout << "less1";
   else if (less_by_year(rhs,lhs)) std::cout << "less2";
   else                            std::cout << "equal";
}

int main () {
    
   person_compare_cout(
      person_from_cin(),
      person_from_cin() 
   );
}



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


Новичок



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

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



По моей задаче мне надо, как я предполагаю, описать класс My_CClass и в нем функцию сравнения возвращающую:

Ivan старше чем Petr
Ivan 1990
Petr 2000

Правильно я понимаю?
PM MAIL ICQ Jabber   Вверх
volatile
Дата 16.6.2011, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(SHUSTER @  16.6.2011,  00:35 Найти цитируемый пост)
My_CClass 

а почему два С? My_CClass

Иногда переменные называют с начальными буквами, подскажывающими тип переменной (венгерская нотация кажется называется).
В этом случае симвос С в начале, говорил-бы, что мы имеем дело с классом. CMy_Class - например.
Но в середине-то зачем он?
(честно говоря мне и в начале он почему-то всегда сильно не нравился и раздражал, но в середине это уже слишком!)

 smile 
PM MAIL   Вверх
borisbn
Дата 16.6.2011, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(mes @  16.6.2011,  00:17 Найти цитируемый пост)
person person_from_cin ()

придираться, так с музыкой   smile 
Код

const person person_from_cin ()


И исчо - чтоб не создавать тему по мелочам - не подскажете, чем по сути отличается
Код
const person & lhs

от
Код
person const & lhs

?

Это сообщение отредактировал(а) borisbn - 16.6.2011, 08:16


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
SHUSTER
Дата 16.6.2011, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



borisbn, придирайтесь. но вот ток моего вопроса это не решает

А, вот ещё, данную задачу над решить с перегрузкой, и конструкторами/деструкторами. Хотя это и так я думаю понятно

Это сообщение отредактировал(а) SHUSTER - 16.6.2011, 15:27
PM MAIL ICQ Jabber   Вверх
RastaDja
Дата 16.6.2011, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(SHUSTER @  16.6.2011,  01:35 Найти цитируемый пост)
По моей задаче мне надо, как я предполагаю, описать класс My_CClass и в нем функцию сравнения возвращающую:

я б перегрузил например операции "> < ==" , но как видно из следующего
Цитата(SHUSTER @  16.6.2011,  00:41 Найти цитируемый пост)
Код функции main:
void main(void)
{
  My_CClass s1, s2;
  cin >> s1 >> s2;
  comp (s1, s2);
  cout << s1 << '\n' << s2 << endl;
  _getch();
}

тебе надо перегрузить cin cout и написать отдельную функцию comp. Или я не прав?


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
borisbn
Дата 16.6.2011, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



SHUSTER, mes дал тебе готовое решение. Что тебя в нём не устраивает ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
SHUSTER
Дата 16.6.2011, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



RastaDja, да, так и надо сделать


borisbn, вместо 
Код

struct person

мне надо написать описание класса 

А это
Код

bool less_by_year (person const& lhs
                  ,person const& rhs)
{
   return (lhs.year<rhs.year);
}

будет та самая (нужная мне) ф-ция сравнения

Вот что я понял пока разбирался с этим примером от 
mes, 

PM MAIL ICQ Jabber   Вверх
borisbn
Дата 16.6.2011, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(SHUSTER @  16.6.2011,  16:11 Найти цитируемый пост)

borisbn, вместо 
struct person
мне надо написать описание класса 

в Си++ кроме способа доступа по-умолчанию структуры от классов ничем не отличаются.
лови

Код

#include <iostream>

// вставь сюда описание структуры (хочешь класса) person, ф-ции less_by_year и

// надеюсь у mes код под LGPL ? :)
person person_from_stream( std::istream & is )
{
   person pers = { "null_name", 0 };
   std::cout << "name:";
   is >> pers.name;
   std::cout << "year:";
   is >> pers.year;
   
   return pers;
}

std::istream & operator >> ( std::istream & is, person & p ) {
    p = person_from_cin( is );
}

ostream & operator << ( ostream & os, const person & p ) {
    std::cout << "name = " << p.name << ". year = " << p.year;
}

int main () {
  person s1, s2;
  std::cin >> s1 >> s2;
  person_compare_cout( s1, s2 ); // <----- вот эту ф-цию mes'а нужно будет допилить. я в тебя верю !
  std::cout << s1 << '\n' << s2 << endl;    
}




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
SHUSTER
Дата 16.6.2011, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



borisbn, стараюсь допиливаю. Маленьки трабл у меня - в Visual Studio 2010 (да и 2008 тож самое) ругается что не может найти файл iostream.h (а также iomanip.h  и ещё некоторые) Что делать?
PM MAIL ICQ Jabber   Вверх
triclosan
Дата 16.6.2011, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(borisbn @  16.6.2011,  07:12 Найти цитируемый пост)
И исчо - чтоб не создавать тему по мелочам - не подскажете, чем по сути отличается
Выделить всёкод C++
1:
    
const person & lhs

от
Выделить всёкод C++
1:
    
person const & lhs

?

http://www.parashift.com/c++-faq-lite/cons...s.html#faq-18.8

Это сообщение отредактировал(а) triclosan - 16.6.2011, 18:03
PM MAIL   Вверх
borisbn
Дата 16.6.2011, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



triclosan, спасибо ! хорошая подборка. только ссылку лучше было дать на 18.8, т.к. это именно то, о чём я спрашивал, а 18.6 просто описывает, что такое const-ссылка.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
triclosan
Дата 16.6.2011, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



borisbn, ага сневнимательничел, исправляю для поколений.
PM MAIL   Вверх
awesome
Дата 16.6.2011, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(SHUSTER @  16.6.2011,  16:54 Найти цитируемый пост)
Маленьки трабл у меня - в Visual Studio 2010 (да и 2008 тож самое) ругается что не может найти файл iostream.h (а также iomanip.h  и ещё некоторые) Что делать? 



Код

#include <iostream>
#include <iomanip>

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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