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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
#1

простые функции - C++

29.07.2011, 17:51. Просмотров 793. Ответов 14
Метки нет (Все метки)

Всем приветик!!!
Есть код:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include<iostream.h>
#include<conio.h>
#include<string.h>
 
enum Shape{prizm,parallelepiped,cube,pyramid,cone,cylinder};
 
class Body
{
    public:
  char* Name;
  Shape shape_s;
  Body(char* name,Shape s)
  {Name=new char[strlen(name)+1];
  strcpy(Name,name);
  shape_s=s;}
  ~Body()
  {delete[]Name;}
};
 
class Prizm: public Body
{
    public:
  float H;
  Prizm(char *name,Shape s,float h):Body(name,s)
  {H=h;}
};
 
class Cube: public Body
{
    public:
  float H;
  Cube(char *name,Shape s,float h):Body(name,s)
  {H=h;}
 
 const char* your_name(const Prizm& var) const
  {return var.Name;}
 friend bool Less(Cube one, Prizm two)
  {return one.H<two.H;}
};
 
int main()
{
  Prizm p("Prizma Petya",prizm,13);
  Cube c("Cube Victor",cube,12);
  if(Less(c,p))
      {cout<<c.your_name(p)<<" great."<<endl;}
  else{cout<<c.your_name(p)<<" less or equal."<<endl;}
 
  getch();
  return 0;
}
Подскажите пожалуйста почему выдает мусор и как функцию const char* your_name(const Prizm& var) const {return var.Name;} подружить с классом Prizm.
Заранее всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2011, 17:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос простые функции (C++):

Функции. Найти все трехзначные простые числа - C++
Найти все трехзначные простые числа. (Определить функцию, позволяющую распознавать простые числа.)

проверить и написать простые функции в максимум 2 строчки - C++
1) функция принимает целое число, возвращает логическое значение является ли оно четным. 2) функция принимает вещественное число,...

Функции (Найти все трехзначные простые числа) - C++
Найти все трехзначные простые числа, определив функцию, позволяющую распознавать простые числа.

Как научиться создавать на C++ простые приложения (очень простые игры)? - C++
Помогите, я хочу научится создавать какието для начала очень простые игры, приложения. но я вооще ничего не знаю :wall: не знаю с чего...

Задача про простые числа. Выпишите все простые числа, находящиеся в интервале между а и б - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using std::cout; using std::cin; using...

Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа - C++
Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа. Простые числа это когда они делятся только...

14
LosAngeles
Заблокирован
29.07.2011, 18:01 #2
разве можно так char* выводить? думаю он выводит указатель
0
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 18:03  [ТС] #3
а как нужно?
0
LosAngeles
Заблокирован
29.07.2011, 18:05 #4
пользуйся string
0
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 19:23  [ТС] #5
а как тогда подружить функции, можно плиз на етом коде продемонстрировать?

Добавлено через 1 час 11 минут
помогите пожалуйста
0
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,022
29.07.2011, 19:26 #6
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
а как тогда подружить функции, можно плиз на етом коде продемонстрировать?
Какие именно?
0
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 19:28  [ТС] #7
const char* your_name(const Prizm& var) const
{return var.Name;}
friend bool Less(Cube one, Prizm two)
{return one.H<two.H;}

Добавлено через 45 секунд
там некорректно работает 1-ая функция

Добавлено через 41 секунду
во второй не уверен правильно ли я сделал
0
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,022
29.07.2011, 19:37 #8
Я не совсем догоняю, что Вы хотели сделать. Не пойму, что значит подружить функции.

Дружественные функции - это те функции, которые принадлежат обоим классам.
0
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
29.07.2011, 19:41 #9
Цитата Сообщение от marina2 Посмотреть сообщение
Я не совсем догоняю, что Вы хотели сделать. Не пойму, что значит подружить функции.

Дружественные функции - это те функции, которые принадлежат обоим классам.
Нет. Дружественные функции - это объявленные как friend. Количество классов тут совершенно ни причем
1
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
29.07.2011, 19:41 #10
Цитата Сообщение от marina2 Посмотреть сообщение
Дружественные функции - это те функции, которые принадлежат обоим классам.
Они имеет доступ к закрытым полям класса, но не является явной частью класса.
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 19:42  [ТС] #11
Морочить голову не буду вот как написано в задании:
"подружите 2 производных класса, для чего введите в один класс 2 функции и объявите их дружественными во втором. Одна из функций должна возвращать имя объекта, а другая - сравнивать высоту объектов", так вот что-то не получается у меня
0
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
29.07.2011, 19:45 #12
Mr. Pyatachok, подружить классы и подружить функции с классами - это несколько разные вещи.
Чтобы класс подружить, надо написать friebd clacc ИМЯ_КЛАССА; в обоих классах.
А чтобы подружить функции с классом, надо написать friend прототип_функции;
0
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 19:48  [ТС] #13
повторю еще раз:
для чего введите в один класс 2 функции и объявите их дружественными во втором. Одна из функций должна возвращать имя объекта, а другая - сравнивать высоту объектов
0
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
29.07.2011, 20:18 #14
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
повторю еще раз:
для чего введите в один класс 2 функции и объявите их дружественными во втором. Одна из функций должна возвращать имя объекта, а другая - сравнивать высоту объектов
Блин:
C++
1
2
3
4
5
6
7
8
9
10
class A
{ public:
   std::string f1();    // -- для имени --
   double f2();          // -- для высоты --
};
class B
{  public:
    friend std::string A::f1();
    friend double A::f2();
};
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
29.07.2011, 21:47  [ТС] #15
Извините конечно, а можете у меня подправить код, пожалуйста

Добавлено через 43 минуты
Итак, слов много, но никто так и не помог

Добавлено через 11 минут
народ, 2 листа впустую, толку нет, объясните как сделать

 Комментарий модератора 
Истерику прекратите! Помог вам ValeryLaptev, а переделывать ваш код никто не нанимался. Может найдётся альтруист через час/день/месяц, а может и не найдётся...
И кстати: дружественные функции - ваша же тема. Если не в курсе:
Запрещено размещать тему в нескольких разделах одновременно (кросспостинг), а также дублировать тему в одном разделе.
Правила форума.
0
29.07.2011, 21:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 21:47
Привет! Вот еще темы с ответами:

простые - C++
Требуется найти колличество простых чисел до 10000. А потом определить является ли число этих чисел (звучит то как)))) простым. В чем...

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции - C++
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая должна бы вернуть значение, отталкиваясь от первой. Возможно...

Простые числа - C++
Помогите сделать так, чтобы в этой программе не считал все четные числа(2,4,6,8...), а просто пропускал их. #define SIZE 32767 //вводит...

Простые сомножители - C++
Любое натуральное число может быть единственным образом разложено на простые сомножители. Напишите программу для выполнения такого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru