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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегрузка operator new http://www.cyberforum.ru/cpp-beginners/thread991510.html
Столькнулся с такой проблемой: Есть класс Array, в его конструкторе создается массив int Array::Array(const size_t size):_size(size) { printf("Array::Array(const size_t size)\n"); if (_size>0 && _size<UINT_MAX){ if ( (_data = new int) == 0) printf("error no memory"); }
C++ Вычисление значения функции на отрезке Составить программу для вычисления значений функции F(x) на отрезке с шагом h.Результат представить в виде таблицы, первый столбец который - значения аргумента,второй - соответствующие значения функции. F(x)=2tg x/2+1 - (c++).Заранее благодарен! :) http://www.cyberforum.ru/cpp-beginners/thread991492.html
C++ Перероботать прогу
Нужно перероботать прогу под функцию 0,5 х в кубе #include "stdafx.h" #include "iostream" #include <cmath> using namespace std; //_____________________________________________________ float Trapezodial(int min, int max, int kilkist)
Рекурсивная программа C++
Напишите рекурсивную программу для сортировки массива методом "пузырька". Как сделать из простого кода пузырька рекурсивную программу? Как понимаю нужно запихать ее в какую-то функцию, но явно не просто так... #include <iostream> #include<time.h> int rekurs () { for (i=0;i<n-1;i++) for (j=n-2;j>=i;j--) if (A>A) {
C++ Определение цифры http://www.cyberforum.ru/cpp-beginners/thread991472.html
Для натурального числа N, вводимого с клавиатуры, определите третью справа его цифру, и замените её на 8 Может мне кто-нибудь объяснить, что нужно сделать?
C++ Совет по проекту Здравствуйте. Столкнулся с такой ситуацией. Скачал готовый проект С++(небольшая задачка с матрицей), но при открытии проекта через visual studio 2008 express edition нет кода программы. Сам код можно посмотреть только через блокнот. Как сделать так, чтобы можно было редактировать проект? подробнее

Показать сообщение отдельно
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
29.10.2013, 16:56     Программа, которая зануляет элементы выше и ниже главной и побочной диагонали
Код для 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;
            }
        }
    
    }
}
 
Текущее время: 14:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru