Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / C++ |
![]() ![]() |
tet2 Member Откуда: Сообщений: 5 |
Задано квадратную матрицу, все элементы которой равны единице. Написать функцию void func (int ** arr, int n), которая заполняет заштрихованную область матрицы (согласно варианту) нулями. Размер массива вводится с клавиатуры. Здесь матрица полностью заполняется нулями, а нужно чтобы только заштрихованная область #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; }
К сообщению приложен файл. Размер - 745bytes Сообщение было отредактировано: 17 мар 21, 01:37 |
|
16 мар 21, 22:30 [22295888] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52921 |
Это потому что в func() ошибка. Она заполняет нулями все ячейки матрицы, а должна только заштрихованные. Posted via ActualForum NNTP Server 1.5 |
16 мар 21, 23:10 [22295902] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
А следующая ошибка в твоём посте. :) Ты должен был написать: сейчас я исправлю ошибку. Вот такая трагическая последовательность (совокупность) ошибок. |
||||
16 мар 21, 23:22 [22295908] Ответить | Цитировать Сообщить модератору |
tet2 Member Откуда: Сообщений: 5 |
Dimitry Sibiryakov, Не подскажите как исправить? |
16 мар 21, 23:59 [22295922] Ответить | Цитировать Сообщить модератору |
Aklin Member Откуда: Прямо сейчас меня здесь нет Сообщений: 61625 |
Не понятно, как имея массив и его размер, что из этого нужно заштриховывать. И как это относится к "динамической памяти" ? |
19 мар 21, 12:42 [22297235] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51019 |
Не хватает исходных данных. Задано N. Order Of Matrix. Порядок матрицы. Это я так понимаю ее размер. А чтобы что-то заштриховать - нам нужен размер бордюра или внутреннего прямоугольника. И непонятно - где штриховка. Где серое? Или белое? И непонятно чем штриховать? Нулями? По смыслу использования памяти, считается хорошей практикой предварительно заполнять нулями в новых стандартах языка. new int[n](); Но чем тогда заполнять если всё и так уже покрашено нулями? Абсурд? Вобщем в данной задаче - искажено задание или выдано не полностью. Надо подходить к преподу и уточнять. |
19 мар 21, 13:34 [22297265] Ответить | Цитировать Сообщить модератору |
petrav Member Откуда: Сообщений: 2861 |
Интересно, а сколько стоят такие/подобные задачи на каком-нибудь фриланс сайте? :) |
19 мар 21, 13:59 [22297281] Ответить | Цитировать Сообщить модератору |
Пётр Седов Member Откуда: Санкт-Петербург Сообщений: 700 |
tet2, если не заморачиваться на скорость заполнения матрицы, то можно так: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; } } } ... } |
21 мар 21, 03:34 [22297829] Ответить | Цитировать Сообщить модератору |
Все форумы / C++ | ![]() |