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

Вывести массив вот так - C++

Восстановить пароль Регистрация
 
Nevado4ka
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
18.11.2011, 23:03     Вывести массив вот так #1
задан массив любой размерности, его нужно сначала мысленно разделить на две части : в нечетных строках слева будут все кроме последнего элемента строки, в четных строках только первый. затем нужно как бы эти две половинки раскрыть и перевернуть на 90 градусов. выглядеть все это должно вот так Вывести массив вот так
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
19.11.2011, 04:54     Вывести массив вот так #2
нужно две пары индексов i1, j1 и i2, j2
нужен флаг для переключения между подмассивами
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
19.11.2011, 07:42     Вывести массив вот так #3
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
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
#include <iomanip>
using std::setw;
 
int main() {
 
    int **arrPtr1, **arrPtr2;   //обьявление указателя на массив указателей типа int
    int size;           //переменная размера матрицы
    cout << "Enter size of matrix :\n>";
    cin >> size;
 
    arrPtr1 = new int*[size];   //выделение памяти для первого массива указателей
    arrPtr2 = new int*[size];   //выделение памяти для второго массива указателей
 
    for(int i = 0; i < size; ++i){  //заполнения массивов
        arrPtr1[i] = new int[size];
        arrPtr2[i] = new int[size];
    }
 
    for(int i = 0; i < size; ++i){  //инициализация матрицы (заполнение матрицы числами)
        for(int j = 0; j < size; ++j){
                arrPtr1[i][j] = i*size+j+1;
            }
    }
 
    cout << "\nafter arrays initialisation : \n";
    for(int i = 0; i < size; ++i){  //печатаем результат инициализации
        for(int j = 0; j < size; ++j){
                cout << setw(3) << arrPtr1[i][j];
        }
        cout << endl;
    }
 
    for(int i = 0; i < size; ++i){  //"расчесываем" матрицу
        for(int j = 0; j < size; ++j){
            if((i!=0 && (j+1)%2==0) || (i+1 == size)){
                arrPtr2[i][j] = arrPtr1[i][j];
                arrPtr1[i][j] = -1;
            } else {
                arrPtr2[i][j] = -1;
            }
        }
    }
 
    cout << "\n\nresult : \n";
    // следуюзие два цикла печетают две матрицы полученные в результате "расчесывания"
    for(int i = 0; i < size; ++i){
        for(int j = 0; j < size; ++j){
            if(arrPtr1[j][i] == -1) {
                cout << setw(3) << " ";
            } else {
                cout << setw(3) << arrPtr1[j][i];
            }
        }
        cout << endl;
    }
 
 
    for(int i = 0; i < size; ++i){
        for(int j = 0; j < size; ++j){
            if(arrPtr2[j][i] == -1) {
                cout << setw(3) << " ";
            } else {
                cout << setw(3) << arrPtr2[j][i];
            }
        }
        cout << endl;
    }
    cin.get();
    return 0;
}
Nevado4ka
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
19.11.2011, 10:13  [ТС]     Вывести массив вот так #4
там нужно немного по-другому, нужно чтобы две части массива как бы как книга открывались и на длинные стороны падали. ну как на рисунке я нарисовала
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
19.11.2011, 10:21     Вывести массив вот так #5
левая часть открывается и падает, а вторая должна не только открываться, но и переворачиваться
естественно, вариант с созданием ещё одной матрицы нежелателен
Nevado4ka
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
19.11.2011, 11:01  [ТС]     Вывести массив вот так #6
Цитата Сообщение от accept Посмотреть сообщение
левая часть открывается и падает, а вторая должна не только открываться, но и переворачиваться
естественно, вариант с созданием ещё одной матрицы нежелателен
на самом деле меня бы и с созданием еще одной матрицы устроило)
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
19.11.2011, 12:45     Вывести массив вот так #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
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
#include <stdio.h>
#include <stdlib.h>
 
#include <assert.h>
 
int main(void)
{
    int **matr;
    int rows, cols;
    int i, j, k;
    int j1, j2, flag;
    
    rows = 5;
    cols = 5;
    
    matr = (int **) malloc(rows * sizeof(int *));
    assert(matr && "allocation rows");
    for (i = 0; i < rows; i++) {
        matr[i] = (int *) malloc(cols * sizeof(int));
        assert(matr[i] && "allocation cols");
    }
    
    for (k = i = 0; i < rows; i++)
        for (j = 0; j < cols; j++)
            matr[i][j] = ++k;
    
    for (i = 0; i < rows; i++) {
        for (j = 0; j < cols; j++)
            printf(" %4d", matr[i][j]);
        putchar('\n');
    }
    
    putchar('\n');
    
    j1 = cols - 2;
    j2 = 1;
    flag = 0;
    while (j1 > 0 || j2 < cols - 1)
        if (flag == 0) {
            for (i = 0; i < rows; i += 2)
                printf(" %4d", matr[i][j1]);
            printf("       ");
            j1--;
            flag = 1;
        } else {
            for (i = 1; i < rows - (rows % 2); i += 2)
                printf(" %4d", matr[i][j2]);
            putchar('\n');
            j2++;
            flag = 0;
        }
    for (i = 0; i < rows; i++)
        printf(" %3d", matr[i][0]);
    printf("  ");
    for (i = 0; i < rows; i++)
        printf(" %3d", matr[i][cols - 1]);
    putchar('\n');
    
    for (i = 0; i < rows; i++)
        free(matr[i]);
    free(matr);
    return 0;
}
Код
[guest@localhost tests]$ .ansi t.c -o t
[guest@localhost tests]$ ./t
    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

    4   14   24           7   17
    3   13   23           8   18
    2   12   22           9   19
   1   6  11  16  21     5  10  15  20  25
[guest@localhost tests]$
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2011, 21:40     Вывести массив вот так
Еще ссылки по теме:

C++ Дописать программу так, чтобы в массив вводились как целые числа так и вещественные
С++ что не так? (Отсортировать массив методом выбора элементов и вывести) C++
Найти элементы, которые есть как в первом массиве так и во втором, и вывести их в третий массив C++

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

Или воспользуйтесь поиском по форуму:
Nevado4ka
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
19.11.2011, 21:40  [ТС]     Вывести массив вот так #8
Спасибо всем огромное за помощь!
можно удалить эту тему теперь?)
Yandex
Объявления
19.11.2011, 21:40     Вывести массив вот так
Ответ Создать тему
Опции темы

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