#include <iostream>
using namespace std;
class Matrix
{
int ** matrixInClass;
public:
void setMatrix(int rowAmount, int colAmount);
void changeRowAndColumn(int rowAmount, int colAmount);
};
//==============================================================
void Matrix::setMatrix(int rowAmount, int colAmount) // заполнение массива данными
{
matrixInClass = new int*[rowAmount]; // выделяем память для матрицы
for (int i = 0; i < rowAmount; i++)
{
matrixInClass[i] = new int[colAmount];
}
for (int i = 0; i < rowAmount; i++) // записываем значения в массив
{
cout << " | ";
for (int j = 0; j < colAmount; j++)
{
matrixInClass[i][j] = i + j;
cout << matrixInClass[i][j] << " ";
}
cout << " | " << endl;
}
}
//==============================================================
void Matrix::changeRowAndColumn(int rowAmount, int colAmount)
{
int** tempMatrix = new int*[colAmount]; // выделяем память для временной матрицы
for (int i = 0; i < colAmount; i++)
{
tempMatrix[i] = new int[rowAmount];
}
for (int i = 0; i < colAmount; i++) // копируем столбцы в строки, а строки в столбцы
{
for (int j = 0; j < rowAmount; j++)
{
tempMatrix[i][j] = matrixInClass[j][i];
}
cout << endl;
}
for (int i = 0; i < rowAmount; i++) // Освобождаем память перед выделением новой
{
delete[] matrixInClass[i];
}
delete[] matrixInClass;
matrixInClass = new int*[colAmount]; // выделяем новую память
for (int i = 0; i < colAmount; i++)
{
matrixInClass[i] = new int[rowAmount];
}
for (int i = 0; i < colAmount; i++) // копируем из временной матрицы
{
cout << "|";
for (int j = 0; j < rowAmount; j++)
{
matrixInClass[i][j] = tempMatrix[i][j];
cout << matrixInClass[i][j] << " ";
}
cout << "|" << endl;
}
for (int i = 0; i < colAmount; i++) // Освобождаем память временной матрицы
{
delete[] tempMatrix[i];
}
delete[] tempMatrix;
}
int main()
{
setlocale(LC_ALL, "rus");
int rowAmount;
int colAmount;
cout << "Введите количество строк двумерного массива: ";
cin >> rowAmount;
cout << "Введите количество столбцов двумерного массива: ";
cin >> colAmount;
Matrix Object;
Object.setMatrix(rowAmount, colAmount);
cout << "\nЗамена значений строк на значения столбцов: ";
Object.changeRowAndColumn(rowAmount, colAmount);
return 0;
}
я по начому зробив 2 задачу
#include
#include”windows.h”
#include
using namespace std;
class Children{
private:
string name;
string fleam;
float vik;
public:
Children(): vik(0)
{ }
Children(string r1,string w2,float w3): name(r1),fleam(w2),vik(w3)
{ }
void foma();
void dota();
};
void Children::foma(){
cout<<"Добрий день "<<endl<<"Ведіть імя фімілію і рік"<>vik;
// cout<<"Імя "<<name<<endl<<"Фамілія "<<fleam<<endl<<"Рік"<<vik<<endl;
}
void Children::dota(){
cout<<"Імя "<<name<<endl<<"Фамілія "<<fleam<<endl<<"Рік "<<vik<<endl;
}
int main(){
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout<<"Привіт !1!";
Children ee1;
ee1.foma();
ee1.dota();
return 0;
}
Саша, не нужно сюда, в комментарии, писать этот мусор – свой код!
У меня вопрос, уважаемые знатоки!
В примере решения третьей задачи мы создали временную матрицу tempMatrix новой конфигурации, скопировали в неё поочередно все элементы, после чего освободили память, занимаемую матрицей matrixInClass, выделили новую память для matrixInClass, поочередно скопировали все элементы и освободили память, занимаемую временной матрицей.
Я пошёл немного другим путем, более коротким. Все работает без ошибок, но хочется знать, может я что-то упускаю(зря сократил). Свой код залил на codepad –> http://codepad.org/vAuUf5pO
Делал так:
Создал временную матрицу tempMatrix новой конфигурации, скопировал в неё элементы из матрицы matrixInClass, освободил память, занимаемую matrixInClass.
До этого момента все точно так же.
А теперь я просто указателю matrixInClass присвоил значение tempMatrix таким образом:
matrixInClass = tempMatrix;
tempMatrix = 0;
После чего matrixInClass начал указывать на участок памяти, занимаемый tempMatrix. То есть теперь нам не нужно перевыделять память для matrixInClass, как в примере, потом поэлементно копировать матрицу и освобождать память.
Вопрос у меня следующий: может неспроста вы сделали так, как сделали, а я где-то допускаю утечки памяти??? Заранее спасибо за ответ!
Помогите решить задачу!
Задача на взаимодействие между классами. Разработать систему «Автобаза». Диспетчер распределяет заявки на Рейсы между Водителями и назначает для этого Автомобиль. Водитель может сделать заявку на ремонт. Диспетчер может отстранить Водителя от работы. Водитель делает отметку о выполнении Рейса и состоянии Автомобиля.
У меня во второй задаче при вводе данных для второго ребенка пропускает ввод имени, сразу к фамилии. Почему? Код абсолютно такой же, но вместо “char” – “string”.
Тоже самое..Хотя я использую char..
в строке 39 cin.get();
это написал?
Это делается для того, чтобы очистить буфер ввода вывода с клавиатуры. Иногда в этом буфере могут сохраниться какие то данные.
в строке 39
это написал?
Это делается для того, чтобы очистить буфер ввода вывода с клавиатуры. Иногда в этом буфере могут сохраниться какие то данные.
В третьей задаче в строке 25 массив неправильно заполняется
я в своей задаче заполнил массив примерно так
В строке 25 – это конструктор матрицы, которая заполняется по любым своим правилам.
А 11, 22, 33 … в условии показано как “например”.
Задача – на транспонирование матрицы. Возможно, она написана не лучшим образом, но всё показанное – правильно.
помогите решить задачу:
Описать класс «ЕГЭ».
Каждая запись содержит номер бланка, фамилия и инициалы ученика, год сдачи, наименование предметов и оценки.
Предусмотреть возможность формирования: списка с клавиатуры и из файла, печати всего списка; списка документов, где средний бал по ЕГЭ ниже (выше) среднего; списка документов, максимальными баллами по заданной дисциплине
Мне очень понравилось задание 3. Интересное!!
Задача номер 2
#include
#include
using namespace std;
класс MyClass
{
char name[32];
голец SourceName[32];
int age;
public:
недействительный Set_MyClass()
{
cout <> this->name;
cout <> this->SourceName;
cout <> this->age;
}
недействительный Get_MyClass()
{
cout << "Name " << name << endl;
cout << "Source " << SourceName << endl;
cout << "Age " << age << endl;
}
};
int main()
{
setlocale(LC_ALL, "Ukrainian");
system("color A");
MyClass первым;
MyClass второй;
cout << "Enter your date" << endl;
first.Set_MyClass();
second.Set_MyClass();
cout << "\tYour date" << endl;
first.Get_MyClass();
second.Get_MyClass();
_getch();
return 0;
}
Там метод должен быть такой. Почему когда забросил какая-то фигня отразилась
недействительный Set_MyClass()
{
cout <> this->name;
cout <> this->SourceName;
cout <> this->age;
}