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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
Drek88
0 / 0 / 0
Регистрация: 27.02.2010
Сообщений: 4
#1

Квадратная матрица в виде одномерного массива - C++

30.09.2010, 22:09. Просмотров 2763. Ответов 9
Метки нет (Все метки)

Вообщем дали задание не как не пойму что нужно сделать.
Квадратная матрица размером nxn задана в виде одномерного массива (вектора) по столбцам.
Сформировать двумерный массив и вывести на экран саму матрицу и ее верхний треугольник включая элементы побочной диагонали.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2010, 22:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Квадратная матрица в виде одномерного массива (C++):

Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива.Восстановить исходную матрицу - C++
Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить...

Объясните пожалуйста (Матрица задана в виде одномерного массива. Восстановить исходную) - C++
# include<stdio.h> # include<conio.h> # include<math.h> # include<stdlib.h> # define k 5 # define m ((1+k)*k)/2 void main() {...

Найти столбец массива с наибольшей суммой элементов и записатьегох в виде одномерного массива - C++
1 Для произвольного двумерного массива найти столбец с наибольшей суммой элементов и записать их в виде одномерного массива.

Матрица из одномерного массива - C++
Здравствуйте форумчане! Нужна небольшая помощь по задачке в С. Нужно из одномерного массива из м^2 элементов построить матрицу размером...

Протабулировать и вывести функцию y=sin(x)+1 в виде одномерного массива - C++
Прошу подскажите! Как протабулировать и вывести функцию y=sin(x)+1 в виде одномерного масива?

Написать программу на языке С++, в которой алгоритм сортировки одномерного массива оформить в виде - C++
Задание: Написать программу на языке С++, в которой алгоритм сортировки одномерного массива оформить в виде: макроопределения шаблона...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.10.2010, 00:39 #2
Наверное так:

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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    double *vector = NULL;
    double **matrix = NULL;
    int n;
    int i, j, k, t;
 
    cout << "Input n: ";
    cin >> n;
 
    vector = new double [n * n];
 
    matrix = new double * [n];
 
    if (vector == NULL || matrix == NULL)
    {
        cout << "Error!";
        return -1;
    }
 
    for (i = 0; i < n; i++)
    {
        matrix[i] = new double [n];
 
        if (matrix[i] == NULL)
        {
            cout << "Error!";
            return -1;
        }
    }
 
    for (i = 0; i < n * n; i++)
    {
        cout << "Input vector[" << i << "]: ";
        cin >> vector[i];
    }
 
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            matrix[j][i] = vector[i * n + j];
 
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
            cout << matrix[i][j] << "  ";
 
        cout << endl;
    }
 
    cout << endl << endl;
 
    for (i = 0, j = 0, k = 0; i < n; i++, k++)
    {
        j = 0;
        t = k;
 
        while (t-- > 0)
        {
            cout << "   ";
            j++;
        }
 
        for ( ; j < n; j++)
        {
            cout << matrix[i][j] << "  ";
        }
 
        cout << endl;
    }
 
    for (i = 0; i < n; i++)
        delete [] matrix[i];
 
    delete [] matrix;
 
    delete [] vector;
 
    cout << endl;
 
    system("pause");
    return 0;
}
Только не очень понятно "вывести верхний треугольник, включая элементы побочной диагонали"... Имеется ввиду, что должно получиться нечто вроде стрелочки? Так:

Код
1 2 3
  5 6
7   9
Ввиду непоняток я вывел просто верхний треугольник...
fasked
Эксперт С++
4935 / 2515 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
01.10.2010, 00:44 #3
silent_1991, я думаю представление матрицы в виде одномерного массива подразумевает примерно следующий подход:
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
#include <stdio.h>
 
#define ROWS 5
#define COLS 5
 
int main()
{   
    int matrix[ROWS * COLS];
    int i = 0;
    int j = 0;
    
    for(i = 0; i < ROWS; ++i)
        for(j = 0; j < COLS; ++j)
            matrix[ROWS * i + j] = rand() % 9;
        
    for(i = 0; i < ROWS; ++i) {
        for(j = 0; j < COLS; ++j)
            printf("%d ", matrix[ROWS * i + j]);
        printf("\n");
    }
    
    printf("\n");
    for(i = 0; i < ROWS; ++i) {
        for(j = 0; j < COLS - i; ++j)
            printf("%d ", matrix[ROWS * i + j]);
        printf("\n");
    }
}
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.10.2010, 00:57 #4
fasked,
Вообще в задании сказано, что матрица задана в виде одномерного массива по столбцам (так я её ввожу). Далее в задании сказано "Сформировать двумерный массив". Я формирую. Ну и далее вывожу что надо.
fasked
01.10.2010, 08:30
  #5

Не по теме:

silent_1991, и правда, моя вина, недочитал

Drek88
0 / 0 / 0
Регистрация: 27.02.2010
Сообщений: 4
01.10.2010, 09:08  [ТС] #6
Спасибо ребят Вам. Сам задание не понял что хотят =))
Drek88
0 / 0 / 0
Регистрация: 27.02.2010
Сообщений: 4
03.10.2010, 13:06  [ТС] #7
Цитата Сообщение от silent_1991 Посмотреть сообщение
Наверное так:

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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    double *vector = NULL;
    double **matrix = NULL;
    int n;
    int i, j, k, t;
 
    cout << "Input n: ";
    cin >> n;
 
    vector = new double [n * n];
 
    matrix = new double * [n];
 
    if (vector == NULL || matrix == NULL)
    {
        cout << "Error!";
        return -1;
    }
 
    for (i = 0; i < n; i++)
    {
        matrix[i] = new double [n];
 
        if (matrix[i] == NULL)
        {
            cout << "Error!";
            return -1;
        }
    }
 
    for (i = 0; i < n * n; i++)
    {
        cout << "Input vector[" << i << "]: ";
        cin >> vector[i];
    }
 
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            matrix[j][i] = vector[i * n + j];
 
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
            cout << matrix[i][j] << "  ";
 
        cout << endl;
    }
 
    cout << endl << endl;
 
    for (i = 0, j = 0, k = 0; i < n; i++, k++)
    {
        j = 0;
        t = k;
 
        while (t-- > 0)
        {
            cout << "   ";
            j++;
        }
 
        for ( ; j < n; j++)
        {
            cout << matrix[i][j] << "  ";
        }
 
        cout << endl;
    }
 
    for (i = 0; i < n; i++)
        delete [] matrix[i];
 
    delete [] matrix;
 
    delete [] vector;
 
    cout << endl;
 
    system("pause");
    return 0;
}
Только не очень понятно "вывести верхний треугольник, включая элементы побочной диагонали"... Имеется ввиду, что должно получиться нечто вроде стрелочки? Так:

Код
1 2 3
  5 6
7   9
Ввиду непоняток я вывел просто верхний треугольник...
а в какой среде можно проверить?
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
03.10.2010, 15:55 #8
Drek88,
Я лично писал в Code::Blocks. Но работать, по идее, должно в любой...
Drek88
0 / 0 / 0
Регистрация: 27.02.2010
Сообщений: 4
03.10.2010, 18:55  [ТС] #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
Drek88,
Я лично писал в Code::Blocks. Но работать, по идее, должно в любой...
чегото борланд у меня ошибки находит с библиотекой #include <cstdlib>
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
03.10.2010, 19:03 #10
Попробуйте вместо неё #include <stdlib.h>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2010, 19:03
Привет! Вот еще темы с ответами:

Найти минимальные элементы в каждом столбце произвольного двумерного массива и записать их в виде одномерного - C++
Найти минимальные элементы в каждом столбце произвольного двумерного массива и записать их в виде одномерного массива есть код в c#,...

Найти столбец матрицы с наименьшей суммой элементов и записать его в виде одномерного массива - C++
Для произвольного двумерного массива найти столбец с наименьшей суммой элементов и записать его в виде одномерного массива.

Класс матрица (осуществить вывод матриц в виде массива 3х3) - C++
Здравствуйте. Помогите пожалуйста осуществить вывод матриц в виде массива 3х3, а также выбор метода класса по желанию пользователя. ...

квадратная матрица - C++
Доброе время суток! &quot;дано действительгое число х.получить квадратную матрицу порядка n+1,результат записать в файл?&quot; обьясните хоть...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.10.2010, 19:03
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru