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

есть матрица(см. код), как вывести только верхний ее треугольник? - C++

Восстановить пароль Регистрация
 
cornis
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 20
18.12.2012, 16:15     есть матрица(см. код), как вывести только верхний ее треугольник? #1
есть матрица(см. код), как вывести только верхний ее треугольник?
Код:
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
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <ctime>
#include <stdlib.h>
#include <iostream>
using namespace std;
 
#include <locale>
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL,"rus");
    int i,j;
    int **d;
    int **b;
    int k;
    cout<<"Введите размер матрицы: ";
    cin>>k;
    d=new int*[k];
    for( i=0; i<k; i++)
{
   d[i] = new int [k];
}
            b=new int*[k];
    for(int i=0; i<k; i++)
{
   b[i] = new int [k];
}
int l=(((1+k)*k)/2)+100;
int *c= new int[l];
 
srand(time(0));
cout<<"\nИсходные данные:\n";
for(i=0;i<((1+k)*k/2);i++)
{   
    c[i]= rand()%20 +1;
    printf("%d ",c[i]);
}
 
 
cout<<"\nПолучаемая матрица, симметричная главной диагонали:\n";
    for(i=0;i<k;i++)
{
    for(j=i;j<k;j++)
    {
        b[i][j]=c[(k-1)*i+j-i*(i-1)/2]; }}
for(i=0;i<k;i++)
{ for(j=0;j<=k;j++)
    {
    if(i<=j)
    d[i][j]=b[i][j];
    else
d[i][j]=b[j][i];
            }}
for(i=0;i<k;i++)
{ 
    for(j=0;j<k;j++)
{ 
    printf("%2.d ",d[i][j]);
                } 
    printf("\n");
}
system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 16:15     есть матрица(см. код), как вывести только верхний ее треугольник?
Посмотрите здесь:

Напечатать верхний треугольник матрицы, включая элементы главной диагонали, по строкам C++
C++ динамически выделить память под верхний треугольник квадратной матрицы
C++ Скажите пожалуйста как сделать теперь что бы треугольник который справа зарисовваный, оказался только слева зарисованным
Матрица NxM. Упорядочить. Есть код, нужна доработка. C++
C++ нужно убрать однаковые елементы в списке(есть код програмы) только нехватает удаления однаковых елементов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
18.12.2012, 19:21     есть матрица(см. код), как вывести только верхний ее треугольник? #2
Верхний треугольник это выше главной диагонали?
cornis
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 20
18.12.2012, 19:56  [ТС]     есть матрица(см. код), как вывести только верхний ее треугольник? #3
v.a.l.i.d, это верхний правый треугольник вместе с диагональю
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
18.12.2012, 20:18     есть матрица(см. код), как вывести только верхний ее треугольник? #4
Печать элементов матрицы d[][] выше главной диагонали
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int y=0; y<k; y++)
{
    // печать пробелов
    for (int probel=1; probel<=y; probel++)
        cout << " ";
 
    // печать элементов выше диагонали (включая саму диагональ)
    for (int x=y; x<k; x++)
        cout << d[y][x] << " ";
        
    cout << endl;
}
cornis
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 20
18.12.2012, 20:33  [ТС]     есть матрица(см. код), как вывести только верхний ее треугольник? #5
Спасибо большое! Очень выручил.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
18.12.2012, 20:35     есть матрица(см. код), как вывести только верхний ее треугольник? #6
Пожалуйста)
Yandex
Объявления
18.12.2012, 20:35     есть матрица(см. код), как вывести только верхний ее треугольник?
Ответ Создать тему
Опции темы

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