Member 13592359 Ответов: 1

В чем проблема с этой программой?


#include <iostream>
#include <conio.h>
#include <string>
#include <cstdlib>

using namespace std;
 class Dog
{
private:
    string breed;
    string EyeColor;
public:
    Dog(string Breed="",string eyeColor="") {breed=Breed;EyeColor=eyeColor;}
     string getBreed() {return breed;}
     string setBreed(string Breed) {breed=Breed;}
     string getEyeColor() {return EyeColor;}
     string setEyeColor(string eyeColor) {EyeColor=eyeColor;}
     friend  Dog operator *(Dog d1,Dog d2);
     void display(){cout<<"Breed: "<<breed<<"; eye color: "<<EyeColor<<endl;}


};
Dog operator *(Dog d1,Dog d2)
{
    Dog newDog;
    if(d1.getBreed()==d2.getBreed())
        newDog.setBreed(d1.getBreed());
    else

        newDog.setBreed("Mixed");
        int i=rand()%2;
        if(i==0)
            newDog.setEyeColor(d1.getEyeColor());
        else
            newDog.setEyeColor(d2.getEyeColor());
        return Dog(newDog.getBreed(),newDog.getEyeColor());
}
int main()
{
    Dog d1("Labrador","Yellow"),
    d2("Labrador","Green"),
    d3("Dog","Yellow"),
    d4("Mops","Black");
    cout<<"dog #1: ";d1.display();
    cout<<"dog #2: ";d2.display();
    Dog saheb;
    saheb=d1*d2;
    cout<<"Result of pair dog: ";
    saheb.display();
    cout<<"dog #3: ";d3.display();
    cout<<"dog #4: ";d4.display();
    cout<<"Result of pair dog: ";
    (d3*d4).display();
    getch();
    return 0;

}


Что я уже пробовал:

я пытался решить эту проблему
а. создайте класс собак, включающий поля для породы (например, “Лабрадор”) и цвета глаз. Включите операторы извлечения и вставки.

b. перегрузите функцию operator*()для класса Dog. Когда вы умножаете двух собак, в результате получается собака. Если две собаки-операнда принадлежат к одной и той же породе, то результирующая собака является этой породой; если две собаки-операнда имеют разные породы, то результирующая собака является “смешанной” породой. Получите случайное число 0 или 1 для результирующего цвета глаз собаки. (Инструкции по созданию случайных чисел см. В приложении Е.) Когда выбранное случайное число равно 0, используйте цвет глаз из первого операнда Dog для результирующего цвета глаз собаки; когда случайное число равно 1, Используйте цвет глаз второй собаки для результирующей собаки.

c. напишите функцию main (), в которой вы объявляете четырех родительских собак. Когда вы выполняете программу, убедитесь, что вы назначаете одну и ту же породу двум собакам, а разные породы-каждой из двух других собак. (У вас будет в общей сложности три породы для четырех собак.) Также назначают различные цвета глаз. В цикле умножьте каждую пару восемь раз и отобразите результаты.

Nakhia_ind

как может быть несколько двух объектов, таких как saheb=d1*d2;

1 Ответов

Рейтинг:
2

OriginalGriff

Прочитайте свой домашний вопрос:

In a loop, multiply each pair eight times, and display the results.

Для этого вам понадобится for цикл, и умножить d1 на d2, затем d1 на d3, d1 на d4, d2 на d3, d2 на d4 и d3 на d4 внутри цикла, печатая результат каждый раз.


Member 13592359

// до сих пор я делал это, и все в порядке, теперь я хочу включить операторы извлечения и вставки для породы и цвета глаз. Не могли бы вы сказать мне, как это сделать?
#включить <cstdlib>
#include <iostream>
#include <string>
использование пространства имен std;
классная собака
{
строку породы;
строки eyeColor;
общественный:
void extInsrt(int i)
{
cout << "введите породу "<<i+1 <<" нет собаки: ";
cin >> порода;
соиь <&ЛТ; "введите eyecolor из" &ЛТ;&ЛТ; я+1 &ЛТ;&ЛТ; " ни одна собака: ";
cin >> eyeColor;
}
void showData(int i, Dog obj[4])
{
cout <<i+1<< ". Порода "<< i+1 << "ни одна собака не является:" << obj[i].func_breed()<<endl;
соиь <&ЛТ; "в eyecolor из" &ЛТ;&ЛТ; я+1 &ЛТ;&ЛТ; "ни одна собака не:" &ЛТ;&ЛТ; параметр obj[я].func_eyeColor () на<<епси;

}
строка func_breed()
{
возвращение породы;

}
строка func_eyeColor()
{
вернуться eyeColor;
}
Оператор дог* (Собака объединение)
{
Собака возражает;

если (это->порода == об.порода)
{
параметр obj.порода = порода;
возврат obj;
}
еще
{
obj.breed = "смешанная порода";
возврат obj;
}
}

};



тап_п()
{
Собака obj[4];
for (int i = 0; i < 4; i++)
{
obj[i].extInsrt(i);
}
for (int i = 0; i < 4; i++)
{
obj[i].showData(i, obj);
}
for (int i = 0; i < 8; i++)
{

инт параметр1;
инт параметр2;
int random_Number = rand() % 2;
cout << "введите количество двух собак [пример: для 1 нет собаки, введите 1]";
cin >> opt1;
cin >> opt2;
Собака Обь;
ob = obj[opt1 - 1] * obj[opt2 - 1];
соиь <&ЛТ;"порода: "&ЛТ;&ЛТ; Обь.func_breed () на << епси;
if (random_Number == 0)
{
соиь <&ЛТ;"Eyecolor: "&ЛТ;&ЛТ; параметр obj[параметр1 - 1].func_eyeColor () на << епси;
}
еще {
соиь <&ЛТ; "Eyecolor:" &ЛТ;&ЛТ; параметр obj[параметр2 - 1].func_eyeColor () на << епси;
}

}


возвращает 0;

}