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

Заполнить квадратную матрицу двумя указанными способами

15.01.2016, 00:12. Показов 6446. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите разобраться в задании.

Задана квадратная матрица с числами вещественного типа. Необходимо

1. Написать функцию для ввода текущего размера массива.

2. Сформировать двумерный массив вещественных чисел одним из способов, выбранного пользователем:
*с помощью датчика случайных чисел, диапазон значений вводится с клавиатуры
*путем ввода значений с клавиатуры
*заполнения из файла.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2016, 00:12
Ответы с готовыми решениями:

Заполнить квадратную матрицу по спирали
Одномерный: В заданном целочисленном массиве R(9) определить индекс наибольшего из нечетных по...

Заполнить квадратную матрицу змейкой
Задано число N. Заполните квадратную матрицу NxN числами от 1 до N^2 “змейкой”, как показано в...

Заполнить квадратную матрицу 10 на 10 змейкой
заполнить квадратную матрицу 10 на 10 змейкой С++ вот так: 91 92 93 94...98 99 100 90 89 88...

Заполнить квадратную матрицу змейкой
заполнить квадратную матрицу NxN змейкой С++ вот так: 25 24 23 22 21 16 17 18 19 20 15 14 13...

3
☆ Форумчанин(FSC)☆
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10
15.01.2016, 00:59 2
Лучший ответ Сообщение было отмечено Azaz888 как решение

Решение

Цитата Сообщение от Azaz888 Посмотреть сообщение
1. Написать функцию для ввода текущего размера массива.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    int size;
    int *matre;
    cout << "enter a size of array " << endl;
    cin >> size;
    matre = new int[size];
    matre[0] = 1;
    cout << matre[0];
    cin.get();
    cin.get();
    return 0;
}
как-то так

Добавлено через 8 минут
Цитата Сообщение от Azaz888 Посмотреть сообщение
Сформировать двумерный массив вещественных чисел одним из способов, выбранного пользователем:
*с помощью датчика случайных чисел, диапазон значений вводится с клавиатуры
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
#include <iostream>
using namespace std;
 
int main()
{
    int size;
    int **matre;
    int from, to;
    cout << "enter a size of array " << endl;
    cin >> size;
    matre = new int*[size];
    cout << "Numbers from: ";
    cin >> from;
    cout << " \nto: ";
    cin >> to;
    for (int i = 0; i < size; i++)
    {
        for (int k = 0; k < size; k++)
        {
            matre[i] = new int[size];
            matre[i][k] = rand() % to + from;
            cout << matre[i][k] << endl;
        }
 
    }
 
    cin.get();
    cin.get();
    return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от Azaz888 Посмотреть сообщение
*путем ввода значений с клавиатуры
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
#include <iostream>
using namespace std;
 
int main()
{
    int size;
    int **matre;
    int from, to;
    cout << "enter a size of array " << endl;
    cin >> size;
    matre = new int*[size];
 
    for (int i = 0; i < size; i++)
    {
        for (int k = 0; k < size; k++)
        {
            cout << "Enter num: ";
            matre[i] = new int[size];
            cin >> matre[i][k];
            if (matre[i][k] == 555)
            {
                return 0;
            }
        }
 
    }
 
    cin.get();
    cin.get();
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от Azaz888 Посмотреть сообщение
*заполнения из файла.
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
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream in("input.txt");
    if (in == 0)
    {
        std::cout << "Error! File not found!" << std::endl;
        system("pause");
        return 1;
    }
    int size;
    in >> size;
 
    int** arr = new int*[size];
    for (int i = 0; i < size; i++)
    {
        arr[i] = new int[size];
    }
 
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            in >> arr[i][j];
        }
    }
 
    std::cout << "size = " << size << std::endl;
 
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }
 
    system("pause");
    return 0;
}
1
17 / 17 / 14
Регистрация: 11.04.2015
Сообщений: 53
15.01.2016, 12:42 3
Лучший ответ Сообщение было отмечено Azaz888 как решение

Решение

Вот все в одном файле:
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
138
139
140
#include <iostream>
#include <fstream>
#include <iomanip>
#include <ctime>
#include <windows.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian"); //русификатор консоли
 
    int N, i, j, s;
    char z;
    int min, max;
    int **mass=new int *[N]; //создаем массив указателей на элементы
    
    cout << "Введите размерность матрицы: ";
    cin >> N;
    cout << endl; 
    cout << "Выберите способ формирования матрицы" << endl;
    cout << "r - рандомно, k - с клавиатуры, f - из файла: " << endl;
    cin >> z;
    
    switch (z)
    {
/*   ---РАНДОМНОЕ ЗАПОЛНЕНИЕ МАТРИЦЫ---  */
        case 'r':
        {
            srand(time(NULL)); //инициализация генератора случайных чисел
            cout << "Введите минимальный элемент: " << endl;
            cin >> min;
            cout << "Введите максимальный элемент: " << endl;
            cin >> max;
            for (i = 0; i < N; i++)
            {
                mass[i]=new int[N]; //создаем массив элементов
            }
            for (i = 0; i < N; i++)
            {
                for (j = 0; j < N; j++)
                {
                    mass[i][j] = rand() % max + min; //рандомное заполнение массива
                }
 
            }
            cout << "Полученная матрица: " << endl;
            for (i=0; i < N; i++)
            {
                for (j=0; j < N; j++)               
                cout << setw(4) << mass[i][j]; //вывод матрицы с шагом в 4 символа
                cout << endl;   
            }
            for (int i = 0; i < N; i++)
            {
                delete[]mass[i]; //очистка одномерного массива
            }
            delete [] mass; //очистка массива массивов
            
        break;  
        }
/*  ---ЗАПОЛНЕНИЕ МАТРИЦЫ С КЛАВИАТУРЫ---  */
        case 'k':
        {
            cout << "Заполните матрицу " << N << 'х' << N << endl;
            for (i = 0; i < N; i++)
            {
                mass[i]=new int[N]; //создаем массив элементов
            }
            for (i = 0; i < N; i++)
            {
                for (j = 0; j < N; j++)
                {
                    cout << "Введите число: ";
                    cin >> mass[i][j];
                
                }
            }
            cout << "Полученная матрица: " << endl;
            for (i=0; i < N; i++)
            {
                for (j=0; j < N; j++)               
                cout << setw(4) << mass[i][j];
                cout << endl;   
            }
            for (int i = 0; i < N; i++)
            {
                delete[]mass[i];
            }
            delete [] mass;
            
        break;
        }
/*  ---ЗАПОЛНЕНИЕ МАТРИЦЫ ИЗ ВНЕШНЕГО ФАЙЛА---  */
        case 'f':
        {
            ifstream in("input.txt"); //подключаемся к файлу
            if (in == 0)
            {
                cout << "Ахтунг! А файла то нет на месте!" << endl;
                system("pause");
                return 1;
            }
            
            for (i = 0; i < N; i++)
            {
                mass[i] = new int[N]; //создаем массив элементов
            }
 
            for (i = 0; i < N; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    in >> mass[i][j]; вписываем элементы из файла в массив
                }
            }
 
            cout << "Полученная матрица: " << endl;
            for (i=0; i < N; i++)
            {
                for (j=0; j < N; j++)               
                cout << setw(4) << mass[i][j];
                cout << endl;   
            }
            for (int i = 0; i < N; i++)
            {
                delete[]mass[i];
            }
            delete [] mass;
            
        break;  
        }
        default:
        cout << "Ввод неверен!" << endl;
    }
    
    cout << endl;
    system ("PAUSE");
    return 0;
}
В одной директории с экзешником надо положить файлик с именем input.txt, в котором в строку через пробелы написаны числа для заполнения матрицы из файла (50 чисел хватит для матрицы 7х7).
1
Любитель чаепитий
3741 / 1798 / 565
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
15.01.2016, 12:55 4
Лучший ответ Сообщение было отмечено Azaz888 как решение

Решение

Azaz888,
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
#include <iostream>
#include <random>
#include <ctime>
 
using namespace std;
 
int main() {
    int n,m;
    mt19937 gen(time(nullptr));
    cin >> n >> m;
    double arr[n][m];
    int choose;
    switch(choose) {
        case 1:
            double s,e;
            cin >> s >> e; 
            uniform_real_distribution<double> dist(s,e);
            for( int i = 0; i < n; i++ ) {
                for( int j = 0; j < m; j++ )
                    arr[i][j] = dist(gen);
            }
            break;
        case 2:
            for( int i = 0; i < n; i++ ) {
                for( int j = 0; j < m; j++ )
                    cin >> arr[i][j];
            }
            break;
        case 3:
            ifstream f("filename.txt");
            for( int i = 0; i < n; i++ ) {
                for( int j = 0; j < m; j++ )
                    f >> arr[i][j];
            }
            break;
        default: break;
    }
    for( int i = 0; i < n; i++ ) {
        for( int j = 0; j < m; j++ )
            cout << arr[i][j] << " ";
        cout << endl;
    }
    cin.get();
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2016, 12:55
Помогаю со студенческими работами здесь

Заполнить квадратную матрицу следующим способом
Нужно заполнить матрицу вот таким способом Y\X 0 1 2 3 4 5 6 7 8 ...

Заполнить квадратную матрицу числами по периметру
Уважаемые форумчане такой вопрос нужно вывести и заполнить квадрат 5x5 цифрами. По середине должны...

Заполнить квадратную матрицу размером N x N по спирали
Заполнить квадратную матрицу размером N x N по спирали (N – нечётное число). Число 1 ставится в...

Заполнить целочисленную квадратную матрицу по спирали
Получить целочисленную квадратную матрицу порядка 2n+1, элементами которой являются числа 1, 2,...


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

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

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