Основы программирования на С++ для начинающих

Задачи и решения: Классы C++

Прошло немного времени после публикации вводного урока о классах в C++. Теперь мы предлагаем вам попрактиковаться в решении достаточно простых задач с применением классов. Старайтесь решать самостоятельно.

1. Создать класс Tiles (кафель), который будет содержать поля с открытым доступом: brandsize_hsize_wprice и метод класса getData(). В главной функции объявить пару объектов класса и внести данные в поля. Затем отобразить их, вызвав метод getData().

2. Определить класс Children, который содержит такие поля (члены класса): закрытые – имя ребенка, фамилию и возраст , публичные – методы ввода данных и отображения их на экран. Объявить два объекта класса, внести данные и показать их.

3. Преобразовать строки двумерного массива в столбцы. Например было: 

задачи и решения, классы c++, классы с++ для начинающих, спецификаторы доступа privat и public, методы класса

стало:

задачи и решения, классы c++, классы с++ для начинающих, спецификаторы доступа privat и public, методы класса

Класс будет содержать два метода: один заполнит массив значениями, второй произведет замену значений строк на значения столбцов.

37 thoughts on “Задачи и решения: Классы C++

  1. Вот как я сделал 3-ю задачу:
    #include “pch.h”
    #include
    #include
    #include
    #include
    #include
    #include
    using namespace std;
    class Matrix
    {
    int rows, cols;
    int arr[100][100];
    int i, j;
    public:
    void Fill_array()
    {
    this->cols = cols;
    this->rows = rows;
    cout <> rows; cout << endl;
    cout <> cols; cout <arr[rows][cols];

    for ( i = 0; i < rows; i++)
    {
    for ( j = 0; j < cols; j++)
    {
    arr[i][j] = rand() % 10;
    }
    }
    }
    void Change_array()
    {
    cout << "Matrix\n\n";
    for ( i = 0; i < rows; i++)
    {
    for ( j = 0; j < cols; j++)
    {
    cout << setw(4) << arr[i][j];
    }
    cout << endl;
    }
    cout << "\nModified matrix\n\n";
    for ( j = 0; j < cols; j++)
    {
    for ( i = 0; i < rows; i++)
    {
    cout << setw(4) << arr[i][j];
    }
    cout << endl;
    }
    }
    };

    int main()
    {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand(time(NULL));

    Matrix a;
    a.Fill_array();
    a.Change_array();

    return 0;
    }

  2. //1 задание.
    class Tiles
    #include
    {public:
    string brand;
    int size_h;
    int size_w;
    double price; int data;
    void setData(int x,int y)
    {
    size_h=x;
    size_w=y;
    }
    void getData()
    {
    cout << "\tНазвание = " << brand << "\tВысота= " << size_h << "\tШирина = " << size_w << "\tСтоимость = " << price << endl;

    }
    void Print()
    {
    cout <<"\tНазвание = "<< brand << "\tВысота= " << size_h << "\tШирина = " << size_w << "\tСтоимость = " << price << endl;
    }

    };
    int main()
    {
    setlocale(LC_ALL, "rus");
    Tiles Keramika;
    Keramika.brand = "Керамика из Италии";
    Keramika.price = 2.3;
    Tiles bKeramika;
    Keramika.setData(5, 6);
    Keramika.getData();
    bKeramika.price=30.5;
    bKeramika.size_h=20;
    bKeramika.size_w = 10;
    bKeramika.brand = "Керамика из Франции";
    bKeramika.Print();
    }

  3. //void FillArray-метод класса. void Exchange-отдельная функция
    #include
    using namespace std;
    int **arr;
    class Inverse
    {
    public:
    void FillArray(int raw, int col)
    {
    arr = new int*[raw];
    for (int i = 0; i < raw; i++)
    {
    arr[i] = new int[col]; //присваиваем в каждый элемент строки новый динам массив, отвечающий за колонки
    }

    for (int i = 0; i < raw; i++)
    {
    cout << "|";
    for (int j = 0; j < col; j++)
    {
    arr[i][j] = rand() % 20;
    cout << arr[i][j] << "\t";
    }
    cout << "|" << endl;
    }
    }
    };

    void Exchange(int raw, int col)
    {
    int** Narr = new int*[col];

    for (int i = 0; i < col; i++)
    {
    Narr[i] = new int[raw]; //присваиваем в каждый элемент строки новый динам массив, отвечающий за колонки
    }
    for (int i = 0; i < col; i++)
    {
    for (int j = 0; j < raw; j++)
    {
    Narr[i][j] = arr[j][i];
    }
    cout << endl;
    }
    for (int i = 0; i < raw; i++)
    {
    delete[] arr[i];//освобождаем старые данные из массива
    }
    delete[] arr;
    arr = new int*[col];
    for (int i = 0; i < col; i++)
    {
    arr[i] = new int[raw];
    }
    for (int i = 0; i < col; i++)
    {
    cout << "|";
    for (int j = 0; j < raw; j++)
    {
    arr[i][j] = Narr[i][j];
    cout << arr[i][j] << "\t";
    }
    cout << "|" << endl;
    }

    for (int i = 0; i < col; i++)
    {
    delete[] Narr[i];
    }
    delete[] Narr;
    }

    int main()
    {
    int raw = 7;
    int col = 10;
    Inverse a;
    a.FillArray(raw, col);
    Exchange(raw, col);
    return 0;
    }

  4. Без указателей и одним методом. У кого выдаёт предупреждение добавьте ключ -std=c++11 к компилятору. Но сработает и без этого.

    #include
    using namespace std;
    class mass
    {
    int massStroka[5][2]={};
    int massCtolbez[2][5]={};
    public:
    void zapolnMass()
    {
    int a =0;
    int kolvoStr;
    int kolvoCtlb;
    cout<<" Введите кол-во строк. "<>kolvoStr;
    cout<<" Введите кол-во столбцов. "<>kolvoCtlb;
    for (int i=0;i<kolvoStr;i++)
    {
    cout<<endl;
    for(int j =0;j<kolvoCtlb;j++)
    {
    a++;

    massStroka[i][j] = a;
    massCtolbez[j][i] = a ;
    cout << "|" ;
    cout<<massStroka[i][j];
    cout << "|" ;
    }
    }
    cout<<endl;

    for (int z=0;z<kolvoCtlb;z++)
    {
    cout<<endl;
    cout << "|";
    for(int k =0;k<kolvoStr;k++)
    {
    cout<<massCtolbez[z][k];
    }
    cout << "|";
    }
    }
    };

    int main ()
    {
    setlocale(LC_ALL, "rus");
    mass a1;
    a1.zapolnMass();

    return 0;
    }

  5. 3 задание. Подскажите, всё норм?

    #include
    #include

    using namespace std;

    class Matrix
    {
    private:
    int arr[3][4];
    public:
    void vivodnorn()
    {
    for (int i = 0; i < 3; i++)
    {
    for (int k = 0; k < 4; k++)
    {
    arr[i][k] = rand() % 132;
    cout << arr[i][k] << "\t";

    }
    cout << endl;
    }
    }

    void vivodfuc()
    {
    for (int i = 0; i < 4; i++)
    {
    for (int k = 0; k < 3; k++)
    cout << arr[k][i] << "\t";
    cout << endl;
    }
    }
    };

    int main(int vage)
    {
    setlocale(0, "");
    srand(time(0));

    Matrix a;
    a.vivodnorn();
    cout << endl << endl;
    a.vivodfuc();

    return 0;
    }

  6. Через конструктор класса 1 задание легче сделать
    #include
    #include
    using namespace std;
    class Tiles {
    private:
    double size_h;
    double size_w;
    double price;
    string Brend;
    public:
    Tiles(double size_h1, double size_w1, double price1, string Brend1) {
    size_h = size_h1;
    size_w = size_w1;
    price = price1;
    Brend = Brend1;
    }
    void Getobject() {
    cout << size_h << " X " << size_w << endl << "$" << price << endl << "Bramnd " << Brend << endl;
    }
    };
    void main() {
    Tiles a(12,14.5,20.5,"EPTA");
    a.Getobject();
    }

  7. Второй номер
    #include
    #include
    #include
    using namespace std;
    class Children {
    private:
    int age;
    string name;
    string surname;
    public:
    void SetChildren() {
    cin >> age;
    cin >> name;
    cin >> surname;
    }
    void Print() {
    cout << "имя "<<name<<endl<<"Фамилия "<<surname<<endl<<"Возраст"<<age<<endl;
    }
    };
    void main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Children a;
    a.SetChildren();
    a.Print();
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *