powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Средства работы с динамической памятью
8 сообщений из 8, страница 1 из 1
Средства работы с динамической памятью
    #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
Средства работы с динамической памятью
    #40054366
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это потому что в func() ошибка. Она заполняет нулями все ячейки матрицы, а должна только
заштрихованные.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Средства работы с динамической памятью
    #40054370
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

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

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

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

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


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

Вобщем в данной задаче - искажено задание или выдано не полностью.
Надо подходить к преподу и уточнять.
...
Рейтинг: 0 / 0
Средства работы с динамической памятью
    #40055229
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, а сколько стоят такие/подобные задачи на каком-нибудь фриланс сайте? :)
...
Рейтинг: 0 / 0
Средства работы с динамической памятью
    #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
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Средства работы с динамической памятью
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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