Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / Средства работы с динамической памятью / 8 сообщений из 8, страница 1 из 1
16.03.2021, 22:30
    #40054352
tet2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Средства работы с динамической памятью
Задано квадратную матрицу, все элементы которой равны единице. Написать функцию void func (int ** arr, int n), которая заполняет заштрихованную область матрицы (согласно варианту) нулями. Размер массива вводится с клавиатуры.
Здесь матрица полностью заполняется нулями, а нужно чтобы только заштрихованная область
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
#include<iostream>
#include<stdio.h>
#include<iomanip>

using namespace std;
void func(int ** arr, int n) {
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      arr[i][j] = 0;
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++)
      cout << setw(4) << arr[i][j];
    cout << endl;
  }
}
int main() {
  int ** arr, n;
  cout << "Enter order of matrix:";
  cin >> n;
  cout << "-----------------------------------------------------" << endl;
  arr = new int * [n];
  for (int i = 0; i < n; i++) {
    arr[i] = new int[n];
  }
  func(arr, n);
  for (int i = 0; i < n; i++) {
    delete[] arr[i];
  }
  delete[] arr;
  return 0;
}



Модератор: Дружище. Пользуйся тегами форматирования сорцов
...
Рейтинг: 0 / 0
16.03.2021, 23:10
    #40054366
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Средства работы с динамической памятью
Это потому что в func() ошибка. Она заполняет нулями все ячейки матрицы, а должна только
заштрихованные.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.03.2021, 23:22
    #40054370
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Средства работы с динамической памятью
Dimitry Sibiryakov

Это потому что в func() ошибка. Она заполняет нулями все ячейки матрицы, а должна только
заштрихованные.

А следующая ошибка в твоём посте. :) Ты должен был написать: сейчас я исправлю ошибку.

Вот такая трагическая последовательность (совокупность) ошибок.
...
Рейтинг: 0 / 0
16.03.2021, 23:59
    #40054383
tet2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Средства работы с динамической памятью
Dimitry Sibiryakov,

Не подскажите как исправить?
...
Рейтинг: 0 / 0
19.03.2021, 12:42
    #40055199
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Средства работы с динамической памятью
Не понятно, как имея массив и его размер, что из этого нужно заштриховывать.
И как это относится к "динамической памяти" ?
...
Рейтинг: 0 / 0
19.03.2021, 13:34
    #40055219
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Средства работы с динамической памятью
Не хватает исходных данных. Задано N. Order Of Matrix. Порядок матрицы.
Это я так понимаю ее размер. А чтобы что-то заштриховать - нам нужен
размер бордюра или внутреннего прямоугольника. И непонятно - где
штриховка. Где серое? Или белое? И непонятно чем штриховать? Нулями?
По смыслу использования памяти, считается хорошей практикой предварительно
заполнять нулями в новых стандартах языка.
Код: plaintext
1.
new int[n]();


Но чем тогда заполнять если всё и так уже покрашено нулями? Абсурд?

Вобщем в данной задаче - искажено задание или выдано не полностью.
Надо подходить к преподу и уточнять.
...
Рейтинг: 0 / 0
19.03.2021, 13:59
    #40055229
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Средства работы с динамической памятью
Интересно, а сколько стоят такие/подобные задачи на каком-нибудь фриланс сайте? :)
...
Рейтинг: 0 / 0
21.03.2021, 03:34
    #40055578
Пётр Седов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Средства работы с динамической памятью
tet2, если не заморачиваться на скорость заполнения матрицы, то можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
void func(int** arr, int n) {
  const int border_thickness = 2; // толщина границы
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if ((border_thickness <= i) && (i < n - border_thickness)
        && (border_thickness <= j) && (j < n - border_thickness)) {
        // внутренняя часть
        arr[i][j] = 1;
      } else {
        // граница
        arr[i][j] = 0;
      }
    }
  }
  ...
}
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Средства работы с динамической памятью / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]