Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 10.12.2019
Сообщений: 69
1

Дружественная функция находящая максимальное значение полей объекта первого типа и полей объекта второго типа

11.04.2020, 15:38. Просмотров 2038. Ответов 5
Метки нет (Все метки)


Само задание:
Создать объект первого типа, у которого одно целочисленное свойство. Значение данного свойства определяется посредством параметризированно-го конструктора.
Создать объект второго типа, у которого две целочисленные свойства. Значение данных свойств определяется посредством метода объекта.
Реализовать дружественную функцию, которая находит максимальное значение полей объекта первого типа и полей объекта второго типа.
Написать программу:
1. Вводит значение для поля объекта первого типа.
2. Создает объект первого типа.
3. Вводит значения полей для полей объекта второго типа.
4. Создает объект второго типа.
5. Определяет значения полей объекта второго типа.
6. Определяет максимальное значение полей, созданных двух объектов разного типа посредством дружественной функции.
7. Выводит полученный результат.

В задании создать 2 класса для двух объектов. Описание классов и методов — в отдельном файле. Всего будет 5 файлов (включая main.cpp). Дружественную функцию описывать в main.cpp

main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdlin.h>
#include <sdtio.h>
#include "Class.h"
#include "Method.h"
#include <iostream>
using namespace std;
int main(){
    int A,B;
    Class One(a);
    Method One1(b);
    One1.Frd;
    frend void arr(Frd &frd);
}
Method.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdlin.h>
#include <sdtio.h>
#include "Method.h"
#include "Class.h"
#include <iostream>
using namespace std;
Method::Method(int b){
}
void Method::Frd(){
    int b=0;
}
Method.h

C++
1
2
3
4
5
6
7
8
9
#idndef __Method_H
#define __Method_H
class Method{
    int Met=0;
    public:
    void 1();
    Method(int b);
};
#endif
Class.ccp

C++
1
2
3
4
5
6
7
8
9
10
#include <stdlin.h>
#include <sdtio.h>
#include "Class.h"
#include "Method.h"
#include <iostream>
using namespace std;
Class::Class(int A){
    int Cnr=0;
    cin>>Chr;
}
Class.h

C++
1
2
3
4
5
6
7
8
9
#idndef __Class_H
#define __Class_H
class Class{
 
    int Cnc=0;
    public:
    Class(int a);
};
#endif
Это все что я смог написать. Не понимаю что такое дружественная функция и как ее описать в main.cpp
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2020, 15:38
Ответы с готовыми решениями:

Можно ли присвоить объекту основного типа значение объекта пользовательского типа?
Правильно ли я понимаю, что SomeClass obj; int x = obj; или SomeClass obj; int x = 5 +...

Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа
Доброго времени суток, пишу класс содержащий несколько std::set от разных типов, нужно сделать...

Исходя из условия задачи, определить структуру комбинированного типа данных и типа полей
P.S-заголовок: Исходные данные разместить в текстовом файле. В программе не использовать массивов...

Значение типа без объекта
#include &lt;iostream&gt; using namespace std; int main() { cout &lt;&lt; int(); cout &lt;&lt; int(4);...

5
Модератор
Эксперт С++
10382 / 8658 / 5241
Регистрация: 18.12.2011
Сообщений: 23,162
11.04.2020, 15:48 2
По моим соображением требуется что-то вроде этого:
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
struct B; // требуется предварительное объявление класса для компиляции дружественной ф-ции f
struct A
{
int n1;
A(int n):n1(n){}
friend int f(const A&,const B&);
};
struct B
{
int m1,m2;
B(int n,int m):m1(n),m2(m){}
friend int f(const A&,const B&);
};
int f(const A& a,const B& b)
{
    int mx=a.n1;
    if(b.m1>mx)mx=b.m1;
    if(b.m2>mx)mx=b.m2;
    return mx;
}
int main()
{
    A a(10);
    B b(1,100);
    cout<<f(a,b);
}
0
0 / 0 / 0
Регистрация: 10.12.2019
Сообщений: 69
11.04.2020, 16:47  [ТС] 3
а как это записать в пяти файлах?

Добавлено через 50 минут
мне надо разбить это на 5 файлов и чтобы у объекта первого типа значения свойства было в конструкторе, а у объекта второго типа задаются свойства посредством метода
0
0 / 0 / 0
Регистрация: 10.12.2019
Сообщений: 69
14.04.2020, 12:54  [ТС] 4
Само задание:
Создать объект первого типа, у которого одно целочисленное свойство. Значение данного свойства определяется посредством параметризированно-го конструктора.
Создать объект второго типа, у которого две целочисленные свойства. Значение данных свойств определяется посредством метода объекта.
Реализовать дружественную функцию, которая находит максимальное значение полей объекта первого типа и полей объекта второго типа.
Написать программу:
1. Вводит значение для поля объекта первого типа.
2. Создает объект первого типа.
3. Вводит значения полей для полей объекта второго типа.
4. Создает объект второго типа.
5. Определяет значения полей объекта второго типа.
6. Определяет максимальное значение полей, созданных двух объектов разного типа посредством дружественной функции.
7. Выводит полученный результат.

В задании создать 2 класса для двух объектов. Описание классов и методов — в отдельном файле. Всего будет 5 файлов (включая main.cpp). Дружественную функцию описывать в main.cpp

main.ccp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "Clas.h"
#include "method.h"
#include <iostream>
using namespace std;
int f( method& A, Clas& B) {
    int max = B.Cnr;
    if (A.a > max) max = B.Cnr;
    if (A.b > max) max = B.Cnr;
    cout << "max = " << max;
}
int main() {
    int n, m1, m2;
    Clas B(n);
    method A(m1, m2);
    A.Frd;
}
mathod.ccp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "method.h"
#include "Clas.h"
#include <iostream>
using namespace std;
method::method(int m1, int m2) {
    M1 = m1;
    M2 = m2;
}
void method::Frd() {
    int a = 0, b = 0;
    cin >> a;
    cin >> b;
 
}
method.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef __METHOD_H
#define __METHOD_H
class Clas;
class method {
    
    int M1 = 0, M2 = 0;
public:
    friend int f(method&, Clas&);
    void Frd();
    method(int m1, int m2);
};
#endif
Clas.cpp
C++
1
2
3
4
5
6
7
8
#include "Clas.h"
#include "method.h"
#include <iostream>
using namespace std;
Clas::Clas(int n) {
    int Cnr = 0;
    cin >> Cnr;
}
Clas.h
C++
1
2
3
4
5
6
7
8
9
10
#ifndef __CLAS_H
#define __CLAS_H
class method;
class Clas {
    int Cnr = 0;
public:
    friend int f(method&, Clas&);
    Clas(int n);
};
#endif
Выдает ошибки, не могу понять почему.
0
Модератор
Эксперт С++
10382 / 8658 / 5241
Регистрация: 18.12.2011
Сообщений: 23,162
14.04.2020, 13:13 5
Лучший ответ Сообщение было отмечено Astreemonter как решение

Решение

C++
1
2
3
4
5
6
7
int main() {
    int n, m1, m2;
    cin>>n>>m1>>m2;
    Clas B(n);
    method A(m1, m2);
    cout<<f(A,B);
}
Цитата Сообщение от Astreemonter Посмотреть сообщение
C++
1
2
3
4
5
void method::Frd() {
 int a = 0, b = 0;
 cin >> a;
 cin >> b;
}
Зачем Вам такой метод, который вводит данные во временные переменные a,b, и больше ничего не делает.
Если Вы предполагали ввод данных класса, то
C++
1
2
3
4
void method::Frd() {
 cin >> M1;
 cin >> M2;
}
Цитата Сообщение от Astreemonter Посмотреть сообщение
Clas::Clas(int n) {
int Cnr = 0;
cin >> Cnr;
}
Здесь Cnr - временная переменная. Такой конструктор тоже ничего не делает.
C++
1
2
3
Clas::Clas(int n) {
   Cnr = n; // Cnr - член класса Clas
}
Кстати, это дурной тон: так называть класс.
1
0 / 0 / 0
Регистрация: 10.12.2019
Сообщений: 69
14.04.2020, 14:00  [ТС] 6
мне в main.cpp подчеркивает красным ".a",".b" в 7 и 8 строчках соответственно, не знаете почему?

Добавлено через 31 минуту
Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2020, 14:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

При попытке присвоить значение типа char одному из полей структуры, выводится некоректное значение
Задание Описать структуру с именем TRAIN, содержащую следующие поля: Название пункта...

Как из первого класса достучаться до объекта второго, а из второго до метода первого?
Есть два класса. Как можно из drawCircle достучаться до x,y,R, и из DrawNCirles дстучаться до...

Функция возвращающая абсолютное разницу первого и второго параметров и функция типа int, возвращающая минимальное из трех целых чисел
Разработать заданные согласно условия функции и сделать в главной программе по два вызова этих...

Получить значение объекта своего типа через рефлексию
Доброго времени суток. Есть собственный тип с перегрузкой. public struct MyType { ...

Как получить менеджер объекта, зная значение соответствующего типа?
всем привет Задача - как получить менеджер объекта зная значение соответствующего типа? вот к...

Динамические массивы. Дан массив записей из полей типа Char, Word, Byte. Преобразовать его в массив типа Longint
FreePascal Выполнить обработку массивов в соответствии с заданием. Предусмотреть описание...


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

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

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