Множественное наследование C++ помогите))

226
01 мая 2018, 01:34

Описать два базовых класса с защищен переменной типа char (в Первом - фамилия, в другом - им "я). В Первому из них описать функцию записи фамилии в обратном порядке, а в другом - превращение всех букв имени в Большие. Предусмотреть вывод преобразованной информации на экран. використовуючи множества подражания, описать производной класс с функцией задания этих переменных. В главной функции main ввести эти значения с с помощью обращения к функции с производного класса и вивести Преобразование информацию на экран, використовуючи Функции из базовых классов.

Почему она выводит не все символи?

Код

#include "iostream"
#include "conio.h"
#include "algorithm"
#include "string"
#include "Windows.h"
using namespace std;
class Mystring
{
protected: char str1, str3;
public: 
    void  mystring()
    {
        char str1[20];
        char str3[20];
        cout << " прізвище : ";
        cin.getline(str1,20);
        strcpy(str3, strrev(str1));
        cout << str3;   
    }
};
class bas2
{
protected:char str,str2;
public:
    void obr()
    {
        char str[20];
        char str2[20];
        cout << "Введіть ім’я: ";
        cin.getline(str,20);
        strcpy(str2, strupr(str));
        cout <<"ім’я:"<< str2;
    }
};
class pohid :  public bas2,public Mystring
{
public:
    void vvid(char STRING)
    { 
        bas2::str2 = STRING;
        Mystring::str3 = STRING;
    }
};
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    pohid cc;
    char str3;
    char str2;
    cout<<"Ввести прізвище"<<endl;
    cin>>str3;
    cin>>str2;
    cc.mystring();
    cc.obr();
    system("pause");
    return 0;
}
Answer 1

Требование задачи не соответствует тому, что вы пытались делать, но не получилось. Требуется примерно такое:

#include <iostream>
using namespace std;
class Mystring {
protected:
    char surname[20];
public:
    void  inverse() { strrev(surname); }
    void print_surname() const { cout << surname << endl; }
};
class Name {
protected:
    char firstName[20], up[20];
public:
    void print_firstName(bool capitals = false) {
        if(capitals) {
            cout << up << endl;
         }
        else
             cout << firstName <<endl;
    }
};
class Pohid : public Mystring, public Name {
public:
    Pohid() {
        cout << "enter surname \n" ;
        cin.getline(surname, 20);
        cout << "enter firstname \n";
        cin.getline(firstName, 20);
        int n = strlen(firstName);
        for (int i = 0; i < n; ++i)
            up[i] = toupper(firstName[i]);
    }
};
int main()
{    
    Pohid p;
    p.print_firstName();
    p.print_surname();
    // теперь напечатаем фамилию в обратном порядке, а имя с большими буквами
    p.inverse();
    p.print_firstName(true);
    p.print_surname();
    return 0;
}

Если вы поймете как и почему, то надеюсь это будет в пользу того, чтоб дальше вы писали осмысленные вещи

Answer 2
 #include <iostream>
 #include<string>
 using namespace std;
 class Mystring {
    protected:
   char surname[20];
public:
void  inverse() { strrev(surname); }
void print_surname() const { cout << surname << endl; }
};
 class Name {
protected:
char firstName[20];
public:
void  verse() { strupr(firstName); }
void print_firstName() const { cout << firstName << endl; }
};
class Pohid : public Mystring, public Name {
public:
Pohid() {
    cout << "enter surname \n";
    cin.getline(surname, 20);
    cout << "enter firstname \n";
    cin.getline(firstName, 20);
 }
};
int main()
{
Pohid p;
p.print_firstName();
p.print_surname();
// теперь напечатаем фамилию в обратном порядке, а имя с большими буквами
p.inverse();
p.verse();
p.print_firstName();
p.print_surname();
system("pause");
return 0;
}
READ ALSO
Интерфейс шаблонов

Интерфейс шаблонов

Что Скотт Майерс подразумевает под "Интерфейсами шаблонов" в своей книге "Эффективное использование C++55 верных советов улучшить структуру...

205
Ускорение времени компиляции С++ кода при уменьшении включений

Ускорение времени компиляции С++ кода при уменьшении включений

Говорят, что удаление ненужных включений ускоряет сборку проектаЯ решил проверить это на простом примере

173
Считать массив структур из файла

Считать массив структур из файла

мне нужно считать данные из файла в массив структур, вот мой код - узнаю длину файла(количество строк) и потом считываю, но получаю на выходе...

203