Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Можно ли с помощью fstream создать папку https://www.cyberforum.ru/ cpp-beginners/ thread1704929.html
Можно ли с помощью fstream создать папку с каким-то файлом? Заранее спасибо
Доступ к членам одного класса с другого C++
Есть три файла: A.cpp: #include "B.cpp" class AA { int A; public: AA(int a) { A = a;
C++ Перевод числа из десятичной системы счисления в систему с любым другим основанием https://www.cyberforum.ru/ cpp-beginners/ thread1704907.html
(не знаю к какому разделу это относится) Перевод числа из десятичной системы счисления в систему с любым другим основанием и перевод в десятичную систему. Система предназначена для школьников и...
C++ Определить третью справа цифру натурального числа N https://www.cyberforum.ru/ cpp-beginners/ thread1704903.html
#include <iostream> using namespace std; // Определить третью справа цифру натурального числа N int main() { int i = 0; char *b= new char; cout<<"Enter number: "; cin >> i; if (i>=1000)
C++ Разделить монеты между заданным количеством людей
(Уже который день бьюсь над этой казалось - бы элементарной задачей, помогите найти ошибку) Входные данные: В первой строке число n (1 <= n <= 200.000) - количество человек. Во второй строке n...
C++ Упорядочить строки матрицы по неубыванию количества одинаковых элементов в строке https://www.cyberforum.ru/ cpp-beginners/ thread1704899.html
3.Упорядочить строки матрицы по неубыванию количества одинаковых элементов в строке. как нибудь так ... похоже на правду (не тестил логику) #include <iostream> #include <cstdlib> using namespace...
C++ Построчно занести матрицу в списки и из списка вывести каждую строку в отдельный одномерный массив дан двумерный массив.его нужно построчно занести в списки и из списка вывести каждую строку в отдельный одномерный массив.я не совсем понимаю как записать в список двумерный массив. помогите... https://www.cyberforum.ru/ cpp-beginners/ thread1704884.html C++ Получение двумерного массива из "чистого" QR кода
Доброго времени суток! Пишу программу для обнаружения и декодирования QR кодов. На данный момент получаю бинарное изображение кода, однако не могу придумать как правильно следует считать биты...
C++ Вывести определенную сторону треугольника в зависимости от его площади https://www.cyberforum.ru/ cpp-beginners/ thread1704863.html
Здравствуйте, выручите пожалуйста ! Условие: Даны длины трех сторон треугольника x,y,z. Если площадь этого треугольника больше 100,вывести на экран длину наибольшей стороны, иначе вывести длину...
C++ Является ли заданная строка правильным IP-адресом В сети интернет каждому компьютеру присваивается четырехбайтовый код, который принято записывать в виде четырех чисел, каждое из которых может принимать значения от 0 до 255, разделенных точками. Вот... https://www.cyberforum.ru/ cpp-beginners/ thread1704862.html
C++ Для каждого символа алфавита определить сколько раз он встречается в последовательности
Здравствуйте, помогите пожалуйста! Условие: Вводится последовательность символов,заканчивающаяся точкой. Для каждого символа латинского алфавита определить сколько раз он встречается в...
C++ Ускорить проверку числа на простоту https://www.cyberforum.ru/ cpp-beginners/ thread1704823.html
Задача заключается в том ,что нужно представить какое-либо число в виде произведения простых чисел (например , вводим 30,выводим 2*3*5).TIME LIMIT 1 СЕК.Мне кажется,моя прога работает долго из-за...
4 / 3 / 3
Регистрация: 15.07.2014
Сообщений: 77
0

Заполнить матрицу штриховкой по диагонали - C++ - Ответ 8987635

06.04.2016, 19:26. Показов 851. Ответов 0
Метки (Все метки)

Программа заполняет матрицу штриховкой по диагонали (вдоль побочной диагонали матрицы).Штриховка "наносится" заданным значением, остальные элементы матрицы не изменяются.Заполнение начинается с левого верхнего угла. Первая линия отстоит от угла на полшага штриховки (округляется до меньшего значения).

Я написал следующий код:
C++
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
    
// Lab4_Soplyakov.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int matr[10][10];   // Заполняемый массив
int height;         // Кол-во строк в массиве
int width;          // Кол-во столбцов в массиве
int interval;       // Промежуток между диагоналями
int val;            // Значение штриховки
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, "");   // Подключение Русского языка
 
    // Ввод данных
    printf("Введите кол-во строк массива:\n");
    scanf("%d", &height);
 
    printf("Введите кол-во столбцов массива:\n");
    scanf("%d", &width);
 
    printf("Заполните массив:\n");
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            scanf("%d", &matr[i][j]);
        }
    }
 
    printf("Вы ввели следующий массив:\n");
    for (int i = 0; i < height; i++)
    {
        for (int j =0; j < width; j++)
        {
            printf("%d", matr[i][j]);
        }
 
        printf("\n");
    }
 
    printf("Введите значение промежутка между диагоналями:\n");
    scanf("%d", &interval);
 
    printf("Введите значение штриховки:\n");
    scanf("%d", &val);
 
    // Штриховка
    for (int i = 0; i < height; i++)
    {
        for (int j = (interval / 2) - i; j < width; j += (interval + 1))
        {
            matr[i][j] = val;
        }
    }
 
    // Вывод ответа
    printf("\nОтвет:\n");
    for (int i = 0; i < height; i++)
    {
        for (int j =0; j < width; j++)
        {
            printf("%d", matr[i][j]);
        }
 
        printf("\n");
    }
 
 
    system("pause");
    return 0;
}
В большинстве случаев всё работает правильно, но не всегда.
Например при:
матрица 5x10
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
шаг = 6
значение = 1

Получается:
0 0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1 0 1
0 0 0 0 0 0 1 0 0 0

(4 строка, 10 элемент не должен заменяться на 1)

Помогите понять, в чём проблема)

Добавлено через 1 час 0 минут
Нашёл)
При расчёте позиции элемента в строке иногда получаются отрицательные числа и вся эта "шняга" происходит из-за них.

Добавил "костыль":
C++
1
2
3
4
5
6
7
8
9
10
for (int i = 0; i < height; i++)
{
    for (int j = (interval / 2) - i; j < width; j += (interval + 1))
    {
        if (j >= 0)
        {
            matr[i][j] = val;
        }
    }
}
Можно закрывать)

Вернуться к обсуждению:
Заполнить матрицу штриховкой по диагонали C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2016, 19:26
Готовые ответы и решения:

Заполнить матрицу 9x9 случайными числами. Отобразить матрицу симметрично относительно главной диагонали
Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно главной диагонали

Заполнить матрицу по диагонали
Нужно заполнить двумерный массив n-го порядка справа-налево снизу числами (от min к max) 25 23...

Заполнить матрицу числами по диагонали
За данными числам n и m заполнить двумерный массив размером n × m числами от 1 до n × m...

Заполнить матрицу натуральными числами змейкой по диагонали
Помогите с задачей :( Входные данные Входная строка содержит числа N и M , разделённые пробелом ...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2016, 19:26
Помогаю со студенческими работами здесь

Заполнить матрицу по диагонали от правого верхного угла
хелп диагональ

Заполнить матрицу от левого верхнего угла по диагонали
Заполнить матрицу А(9,9), от левого верхнего угла по диагонали: вправо - вверх.

Заполнить матрицу ЛП, от левого нижнего угла по диагонали: влево - вверх
Здравствуйте! Помогите с кодом. Заполнить матрицу ЛП, от левого нижнего угла по диагонали: влево -...

Заполнить матрицу ЛП, от левого верхнего угла по диагонали вправо — вверх
Помогите пожалуйста с лабораторной . 1. Создать квадратную матрицу целых чисел размером 9х9. В...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru