Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2018, 16:28   #1
IVashik
 
Регистрация: 28.02.2018
Сообщений: 3
По умолчанию Программирование на СИ

напишите пожалуйста, что означает каждый элемент программы!
double **create_matr(int n)
{
double **matr = new double*[n];
for (int i = 0; i < n; i++) {
matr[i] = new double[n];
}
return matr;
}
double **del_matr(double **matr, int n)
{
for (int i = 0; i < n; i++) {
delete[] matr[i];
}
delete[] matr;
return NULL;
}
double** create_e_matr(int n) {
double** unit_matrix = create_matr(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) {
unit_matrix[i][j] = 1;
}
else {
unit_matrix[i][j] = 0;
}
}
}
return unit_matrix;
IVashik вне форума Ответить с цитированием
Старый 04.03.2018, 16:53   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Молодец, код вы скопи-пастили с инета. Сколько вы готовы заплатить, чтобы и дальше не думать и не работать?
p51x вне форума Ответить с цитированием
Старый 04.03.2018, 22:42   #3
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Здесь каждый элемент программы означает то что ТС надо оставить область инженерной разработки ПО и пойти в манагеры или продавцы или в грузчики.. или еще 100500 профессий где не нужно думать.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 05.03.2018, 12:12   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Цитата:
Сообщение от IVashik Посмотреть сообщение
напишите пожалуйста, что означает каждый элемент программы!
В языке C классов нет, то есть это программа на языке C++. В языке C память выделяется функцией malloc, а в C++ оператором new.
Функция (или метод класса) создаёт квадратную матрицу размерности n, динамически выделяя память под неё оператором new. Возвращаемое значение - адрес в памяти, где хранится матрица. Размер в памяти зависит от типа данных. int вроде бы хранит 4 байта на 32 разрядных системах. double - 8 байт на 32 разрядной системе. Параметр (аргумент) функции - размерность матрицы (или многомерного массива)
Цитата:
double **create_matr(int n)
{
double **matr = new double*[n]; // выделение памяти по первой размерности
for (int i = 0; i < n; i++) { // счётчик i имеет локальное для цикла время жизни
matr[i] = new double[n]; // выделение памяти по второй размерности
}
return matr; // возвращение из функции матрицы
}

Удаление матрицы (сборка мусора). Обратите внимание, что указатель в конце получает значение NULL, что очень важно, чтобы программа не упала при обращении по не нулевому указателю к запретной части памяти. Указатель содержит адрес в памяти, где хранится матрица.
Цитата:
double **del_matr(double **matr, int n)
{
for (int i = 0; i < n; i++) {
delete[] matr[i];
}
delete[] matr;
return NULL;
}
Создание единичной матрицы
Цитата:
double** create_e_matr(int n) {
double** unit_matrix = create_matr(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) { // единичная матрица
unit_matrix[i][j] = 1;
}
else {
unit_matrix[i][j] = 0;
}
}
}
return unit_matrix;
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 05.03.2018, 12:23   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
сборка мусора
Решили вставить где-то услышанный термин, не потрудившись узнать его значение?

Цитата:
Сообщение от challengerr Посмотреть сообщение
указатель в конце получает значение NULL
Какой?
Цитата:
Сообщение от challengerr Посмотреть сообщение
В языке C классов нет
Так и тут нет.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.03.2018, 12:30   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
В языке C классов нет, то есть это программа на языке C++.
А где вы увидели здесь классы?

Цитата:
Сообщение от challengerr Посмотреть сообщение
В языке C память выделяется функцией malloc, а в C++ оператором new.
А маллок не работает в плюсах?

Цитата:
Сообщение от challengerr Посмотреть сообщение
(или метод класса)
Где здесь метод? Где хотя бы одно ::?

Цитата:
Сообщение от challengerr Посмотреть сообщение
Удаление матрицы (сборка мусора).
Под сборкой мусора, обычно, подразумевают более общий процесс.

Цитата:
Сообщение от challengerr Посмотреть сообщение
что очень важно, чтобы программа не упала при обращении по не нулевому указателю к запретной части памяти.
Учитывая, что память не очищается и перераспределяется не так быстро (при небольшой загрузке), то вероятность падения по нуллптр в таком случае намного выше. И именно для этого он и возвращается, чтобы упала быстрее, желательно при тестировании.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в 1С __Alex__ Помощь студентам 0 08.03.2012 18:40
Программирование на С++ №_1 Помощь студентам 0 07.12.2011 23:03
Программирование или web-программирование? Дмитрий Батогов Помощь студентам 3 23.06.2011 14:14
Программирование на С# okfx Фриланс 1 04.09.2010 13:11