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

Вывод элементов матрицы в заданном порядке - C++

Восстановить пароль Регистрация
 
neud
0 / 0 / 0
Регистрация: 29.11.2010
Сообщений: 9
26.12.2010, 11:59     Вывод элементов матрицы в заданном порядке #1
Сделать обход матрицы n на n, в определённом порядке и вывести все элементы матрицы в таком порядке (пример):
7 11 14 16
4 8 12 15
2 5 9 13
1 3 6 10

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 12:19     Вывод элементов матрицы в заданном порядке #2
C++
1
2
3
4
5
6
7
        int i, j;
for(i=n-1; i>=0; i--)
    for(j=0; j<n-i; j++)
        cout<<a[i+j][j]<<" ";
for(i=1; i<n; i++)
    for(j=i; j<n; j++)
        cout<<a[j-i][j]<<" ";
neud
0 / 0 / 0
Регистрация: 29.11.2010
Сообщений: 9
26.12.2010, 16:28  [ТС]     Вывод элементов матрицы в заданном порядке #3
хм, странно, в Unixe пишет
Segmentation fault (core dumped)

Добавлено через 53 секунды
кстати, программа пишется не на С++, а просто на С
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 19:44     Вывод элементов матрицы в заданном порядке #4
neud, покажите весь код.
neud
0 / 0 / 0
Регистрация: 29.11.2010
Сообщений: 9
26.12.2010, 21:37  [ТС]     Вывод элементов матрицы в заданном порядке #5
#include <stdio.h>
enum {maxn=7};
void Prt(int a[maxn][maxn],int size) //print of matrix
{
int i=0, j=0;
while(i<size)
{
while (j<size)
{
printf("%d ",a[i][j]);
j++;
if (j>=size) printf("\n");
}
i++;
j=0;
}
}
int main()
{
FILE *fp=fopen("m2.txt","r"); //GET MATRIX FROM FILE!
char c;
int size;
int a[maxn][maxn];
int i=0,j=0,element=0;
c=getc(fp);
while (c!=EOF)
{
size=(c-'0');
i=0;j=0;element=0;
c=getc(fp);
c=getc(fp);
while (i<size)
{
while((c!=' ')&&(c!='\n'))
{
element=element*10+(c-'0');
c=getc(fp);
}
a[i][j]=element;
j++;
element=0;
if (j>=size)
{
i++;
j=0;
}
c=getc(fp);
}
Prt(a,size);
putchar('\n');
//_____________________________

for(i=size-1; i>=0; i--)
for(j=0; j<size-i; j++)
printf("%d ", a[i+j][j]);
for(i=1; i<size; i++)
for(j=i; j<size; j++)
printf("%d ",a[j-i][j]);

}}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 21:58     Вывод элементов матрицы в заданном порядке #6
neud, Ужасный ввод данных, если честно.
Приведите пример, что у Вас в файле m2.txt записано, сейчас переделаем.
abyr
4 / 4 / 1
Регистрация: 23.12.2010
Сообщений: 27
26.12.2010, 22:15     Вывод элементов матрицы в заданном порядке #7
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
#include <cstdlib>
#include <cstdio>
using namespace std;
 
int main(int argc, char** argv) {
    int n, s, m = 0, t, j;
    printf( "Введите количество строк и столбцов - ");
    scanf("%d", &n);
    int **a = new int*[n];
    for (int i = 0; i < n; i++) a[i] = new int[n];
    int *b = new int[m];
    for ( int i = 0; i < n; i++ ) {
        printf("\n");
        for ( int j = 0; j < n; j++ ) {
            a[i][j] = rand()%100;               //создаем массив из случайных чисел от 0 до 100
            printf("%d ", a[i][j]);             //контрольный вывод массива
        }
    }
    for ( int i = 0; i < n; i++ ) {
        for ( int j = 0; j < n; j++ ) {
            b[m] = a[i][j];                 //записываем элементы в одномерный массив
            m++;
        }
    }
    printf("\n");
    for ( int i = 1; i < m; b[j+1] = t, i++ ) {
        for ( t = b[i], j = i - 1; ( j > -1 && t < b[j] ); b[j+1] = b[j], j-- );   //сортировка одномерного массива
    }
    printf("\n");
    for ( int i = 0; i < m; i++ ) {
            printf("%d ", b[i]);                //вывод отсортированного массива
    }
    printf("\n");
    return 0;
}
neud
0 / 0 / 0
Регистрация: 29.11.2010
Сообщений: 9
26.12.2010, 22:29  [ТС]     Вывод элементов матрицы в заданном порядке #8
valeriikozlov, если честно, то это чать задачи ( я про кошмарный ввод данных) (
m2.txt
3
1 2 3
3 4 5
1 3 6

т.е. любая матрица, 1ая строчка - размер

Добавлено через 6 минут
abyr, спасибо, но на чистом си нет таких вещей, как new int и т.д....а тут нужно почти на чистом си (это конечно глупо, но ничего не поделаешь()
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2010, 22:36     Вывод элементов матрицы в заданном порядке #9
пробуйте:
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
#include <stdio.h>
int const maxn=7;
void Prt(int a[maxn][maxn],int size) //print of matrix
{
int i=0, j=0;
while(i<size)
{
while (j<size)
{
printf("%d ",a[i][j]);
j++;
if (j>=size) printf("\n");
}
i++;
j=0;
}
}
int main()
{
freopen("m2.txt","r",stdin); //GET MATRIX FROM FILE!
int size, i, j;
int a[maxn][maxn];
scanf("%d", &size);
for(i=0; i<size; i++)
    for(j=0; j<size; j++)
        scanf("%d", &a[i][j]);
 
Prt(a,size);
putchar('\n');
//_____________________________
 
for(i=size-1; i>=0; i--)
for(j=0; j<size-i; j++)
printf("%d ", a[i+j][j]);
for(i=1; i<size; i++)
for(j=i; j<size; j++)
printf("%d ",a[j-i][j]);
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2010, 22:49     Вывод элементов матрицы в заданном порядке
Еще ссылки по теме:

Рекурсия (вычисление суммы, вывод элементов одномерного массива в обратном порядке) C++
C++ Написать и протестировать подпрограмму, которая переставляет в обратном порядке элементы главной диагонали квадратной матрицы - вывод всей матрицы
C++ Отсортировать строки матрицы в порядке возрастания суммы их элементов

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

Или воспользуйтесь поиском по форуму:
neud
0 / 0 / 0
Регистрация: 29.11.2010
Сообщений: 9
26.12.2010, 22:49  [ТС]     Вывод элементов матрицы в заданном порядке #10
спасибо!
Yandex
Объявления
26.12.2010, 22:49     Вывод элементов матрицы в заданном порядке
Ответ Создать тему
Опции темы

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