Форум программистов, компьютерный форум CyberForum.ru

Программа, которая зануляет элементы выше и ниже главной и побочной диагонали - C++

Восстановить пароль Регистрация
 
Kings_ton
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 43
29.10.2013, 14:18     Программа, которая зануляет элементы выше и ниже главной и побочной диагонали #1
Ребята, помогите срочно нужно, как написать программу которая зануляет элементы выше и ниже главной и побочной диагонали, типа такого чтоб получилось :
1 0 0 0 1
1 1 0 1 1
1 1 1 1 1
1 1 0 1 1
1 0 0 0 1
.... пожалуйста)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2013, 14:18     Программа, которая зануляет элементы выше и ниже главной и побочной диагонали
Посмотрите здесь:

C++ Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и выше побочной диаго-нали.
C++ как обнулить в квадратной матрице элементы, лежащие выше главной и ниже побочной диагонали. условный оператор не использовать!
Найти минимальный из элементов ниже главной и выше побочной диагонали и поменять его местами с первым элементом матрицы C++
C++ В двумерном массиве вывести все элементы выше главной диагонали и ниже побочной
Найти число отрицательных элементов в области выше главной и ниже побочной диагонали C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GoldenChild
28 / 28 / 4
Регистрация: 12.06.2013
Сообщений: 65
29.10.2013, 14:27     Программа, которая зануляет элементы выше и ниже главной и побочной диагонали #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
#define N 5
 
int main() {
    int A[N][N] = {0}; //Заполняем матрицу нулями
    
    for (int i = 0; i < N; i++) { // Ставим "1" на диагоналях
        A[i][i] = 1;
        A[i][N-i-1] = 1;
    }
    for (int i = 0; i < N; i++) { // Выводим матрицу
        for (int j = 0; j < N; j++) {
            cout << A[i][j] << " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}
Kings_ton
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 43
29.10.2013, 15:27  [ТС]     Программа, которая зануляет элементы выше и ниже главной и побочной диагонали #3
Я взял код вот отсюда: Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и выше побочной диаго-нали. как его изменить чтобы он делал туже фигню и снизу?
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 687
29.10.2013, 15:37     Программа, которая зануляет элементы выше и ниже главной и побочной диагонали #4
Вам надо просто надо обнулять числа, которые не принадлежат диагоналям и середине матрицы.
Kings_ton
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 43
29.10.2013, 15:39  [ТС]     Программа, которая зануляет элементы выше и ниже главной и побочной диагонали #5
Я понимаю) подскажите пожалуйста как изменить код и что добавить чтобы обнуляло и снизу тоже...
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
29.10.2013, 16:56     Программа, которая зануляет элементы выше и ниже главной и побочной диагонали #6
Код для Microsoft Visual C++ 2010 Express

Код заголовочного файла stdafx.h

C#
1
2
3
4
5
6
7
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <iostream>
Код программы
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
#include "stdafx.h"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    int n;
    cout << "Введите n = ";
    cin >> n;
 
    int ** arr = new int*[n];
    for (int i = 0; i < n; ++i)
    {
        arr[i] = new int[n];
    }
 
    cout << "Исходный массив: " << endl;
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            arr[i][j] = 1;
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
    
    int temp1 = (n%2 == 0) ? n/2 - 1 : (int) n/2;
    int temp2 = (n%2 == 0) ? temp1 : temp1 - 1;
 
    int k = 1;
    for (int i = 0; i < n; ++i)
    {
        if (i < temp1)
        {
            for (int j = k; j < n - k; ++j)
            {
                arr[i][j] = 0;
            }
            k += 1;
        }
        else 
        {       
            if (i > temp2)
            {
                for (int j = k; j < n - k; ++j)
                {
                    arr[i][j] = 0;
                }
                k -= 1;
            }
        }
    
    }
 
    cout << "Преобразованный массив: " << endl;
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
    
    for (int i = 0; i < n; ++i)
    {
        delete [] arr[i];
    }
    delete [] arr;
 
    system("PAUSE");
    return 0;
}

Либо тоже самое с использованием функций

Заголовочный файл stdafx.h
C++
1
2
3
4
5
6
7
8
9
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
#include <Windows.h>
Программа
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
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
using namespace std;
void CreateArray (int **, int);
void ShowArray (int **, int, string);
void ChangeArray (int **, int);
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    int n;
    cout << "Введите n = ";
    cin >> n;
 
    int ** arr = new int*[n];
    for (int i = 0; i < n; ++i)
    {
        arr[i] = new int[n];
    }
 
    CreateArray (arr, n);
    ShowArray (arr, n, "Исходный массив: ");
    ChangeArray (arr, n);
    ShowArray (arr, n, "Преобразованный массив: ");
    
    for (int i = 0; i < n; ++i)
    {
        delete [] arr[i];
    }
    delete [] arr;
 
    system("PAUSE");
    return 0;
}
 
void CreateArray (int **arr, int n)
{
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            arr[i][j] = 1;
        }
    }
}
 
void ShowArray (int **arr, int n, string title)
{
    cout << title << endl;
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
}
 
void ChangeArray (int **arr, int n)
{
    int temp1 = (n%2 == 0) ? n/2 - 1 : (int) n/2;
    int temp2 = (n%2 == 0) ? temp1 : temp1 - 1;
 
    int k = 1;
    for (int i = 0; i < n; ++i)
    {
        if (i < temp1)
        {
            for (int j = k; j < n - k; ++j)
            {
                arr[i][j] = 0;
            }
            k += 1;
        }
        else 
        {       
            if (i > temp2)
            {
                for (int j = k; j < n - k; ++j)
                {
                    arr[i][j] = 0;
                }
                k -= 1;
            }
        }
    
    }
}
Yandex
Объявления
29.10.2013, 16:56     Программа, которая зануляет элементы выше и ниже главной и побочной диагонали
Ответ Создать тему
Опции темы

Текущее время: 05:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru