1 / 1 / 2
Регистрация: 23.01.2017
Сообщений: 25
1

Как задать произвольный размер массива

16.04.2017, 02:09. Показов 3612. Ответов 1
Метки нет (Все метки)

В общем проблема такая, есть задание (написанное каким то недалеким человеком). В нем не указано половины информации, то есть, делай как считаешь нужным... Например, тип матрицы: целочисленная/вещественная, максимальное количество строк и столбцов, как задавать значения вручную/рандомно. Вопрос заключается в том, как мне сделать задаваемый размер массива? Пожалуйста не предлагайте варианты типа:

C++
1
2
3
4
int i,j;
cin >> i;
cin >> j;
float mas[i][j];
Само задание - Даны две квадратные матрицы А и В порядка N. Умножить все элементы матрицы А на соответствующие элементы матрицы В.

Задание я решил, из ситуация вышел очень глупо, просто забив массивы по 99. Сам код:

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include "stdafx.h"
#include "iostream"
#include "time.h"
#include "windows.h"
 
int main()
{
    HANDLE hCon;
    COORD cPos;
    system("color F0");
    hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    int x = 6, y = 0, i, j, cc = 0, sum = 0, A, B, Strk = 0, Strk2 = 0,rast=0;
    float masA[99][99], masB[99][99], masC[99][99], n1, n2;
    srand(time(0));
    std::cout << "Vvedite poradok matric A & B =  ";
    std::cin >> A;
    B = A;
    std::cout << "Vvesti znachenya vrychnyu - 1 \n";
    std::cout << "Vvesti znachenya randomno - 2 \n";
    std::cout << "Vvod = ";
    std::cin >> cc;
    std::cout << "\n";
    if (cc>2) { std::cout << "takogo pynkata net!"; return 0; }
    std::cout.precision(1);
    std::cout.setf(std::cout.fixed);
    switch (cc) {
    case 1: {
        for (i = 0; i < A; ++i) {
            for (j = 0; j < A; ++j) {
                if (rast > 18) rast = 18;
                rast++;
                if (y >= 18) { y = 1; x = x + 19; }
                else y++;
                cPos.Y = y + 6;
                cPos.X = x - 4;
                SetConsoleCursorPosition(hCon, cPos);
                std::cout << "masA [" << i << "]" << "[" << j << "] = ";
                std::cin >> masA[i][j];
                std::cout << "\n";
            }
        }
        x = 6;
        y = 0;
        for (i = 0; i < A; ++i) {
            for (j = 0; j < A; ++j) {
                if (y >= 18) { y = 1; x = x + 19; }
                else y++;
                cPos.Y = y + 5 + A + rast;
                cPos.X = x - 4;
                SetConsoleCursorPosition(hCon, cPos);
                std::cout << "masA [" << i << "]" << "[" << j << "] = ";
                std::cin >> masB[i][j];
                std::cout << "\n";
            }
        }
        break;
    }
    case 2: {
        for (i = 0; i < A; ++i) {
            Strk++;
            for (j = 0; j < A; ++j) {
                masA[i][j] = (((rand() % 150) - 70) / 10.0);
            }
        }
        break;
    }
    }
    for (i = 0; i < A; ++i)
    {
        Strk++;
        if (y >= A)  y = 0;
        for (j = 0; j < A; ++j) {
            cPos.Y = 9 + rast * 2;
            cPos.X = 5;
            SetConsoleCursorPosition(hCon, cPos);
            std::cout << "Matrica A:";
            cPos.Y = 10 + i + rast*2;
            cPos.X = 5 + (j * 6);
            SetConsoleCursorPosition(hCon, cPos);
            std::cout << masA[i][j];
 
        }
    }
 
    for (i = 0; i < B; ++i) {
        Strk2++;
        for (j = 0; j < B; ++j) {
            masB[i][j] = (((rand() % 150) - 70) / 10.0);
        }
    }
    for (i = 0; i < B; ++i)
    {
        if (y >= B)  y = 0;
        for (j = 0; j < B; ++j) {
            cPos.Y = 10 + Strk + rast * 2;
            cPos.X = 5;
            SetConsoleCursorPosition(hCon, cPos);
            std::cout << "Matrica B:";
            cPos.Y = 11 + i + Strk + rast * 2;
            cPos.X = 5 + (j * 6);
            SetConsoleCursorPosition(hCon, cPos);
            std::cout << masB[i][j];
 
        }
    }
 
    for (int i = 0; i<B; i++)
    {
        for (int j = 0; j<B; j++)
        {
            masC[i][j] = 0;
            for (int k = 0; k < B; k++) {
                masC[i][j] += masA[i][k] * masB[k][j];
            }
        }
    }
    for (i = 0; i < A; ++i)
    {
        if (y >= A)  y = 0;
        for (j = 0; j < A; ++j) {
            cPos.Y = 12 + Strk2 + Strk + rast * 2;
            cPos.X = 5;
            SetConsoleCursorPosition(hCon, cPos);
            std::cout << "Proizvedenye matric A & B:";
            cPos.Y = 13 + i + Strk + Strk2 + rast * 2;
            cPos.X = 5 + (j * 9);
            SetConsoleCursorPosition(hCon, cPos);
            std::cout << masC[i][j];
 
        }
    }
 
 
    system("pause>>null");
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2017, 02:09
Ответы с готовыми решениями:

Не получается задать произвольный размер массива в struct
Добрый вечер. Возникла проблема с лабараторной в универе. Не могу задать произвольный размер...

Как задать переменный размер массива
Как задать переменный размер массива?

Как задать рандомно размер массива (в диапазоне от 50 до 200)?
Как задать рандомно размер массива, так чтобы размер был в диапазоне от 50 до 200? Вот то что я...

Как задать размер массива равным значению входного аргумента
Создаю массив длины, вводимой пользователем (динамические массивы не предлагать). Выдается ошибка:...

1
nd2
3431 / 2810 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
16.04.2017, 03:04 2
Цитата Сообщение от CrazyArtemkO Посмотреть сообщение
как мне сделать задаваемый размер массива?
Динамическое создание матрицы
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2017, 03:04
Помогаю со студенческими работами здесь

Задать размер динамического массива через переменную, обявленную как extern
Привет народ, скажите, почему не компилирует: #include&quot;stdafx.h&quot; #include&quot;iostream&quot; using...

Как задать размер массива, который является членом класса, через конструктор?
Почему так? И как же тогда задать размер этого массива? class Test { public: Test(int...

Задать размер массива
Доброго времени суток. Делаю программу, которая шифрует перестановкой с ключем. Суть алгоритма:...

Задать размер двумерного массива
по форуму искал, но находил только для одномерных либо, немного не понятные. Можете написать и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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