Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 16.07.2015
Сообщений: 2

Правую часть выстроить змейкой с конечного верхнего элемента

23.04.2018, 03:53. Показов 565. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется задачка, суть которой состоит в том, чтобы разделить введенную квадратную матрицу на 4 части (диагоналями) и правую часть выстроить змейкой с конечного верхнего элемента.
Вот мои наброски:
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
#include <iostream.h> 
#include <conio.h> 
#include <windows.h> 
#include <iomanip.h> 
int a[5][5]={1,2,3,4,5,6,7,8,9,10,11,15,13,14,15,16,17,18,19,20,21,22,23,24,25}; 
int m,n,i,j,k; 
void main() { 
clrscr(); 
for (i = 0; i < 5; i++) { 
for (j = 0; j < 5; j++) 
cout<<setw(7)<<setprecision(4)<<*(*(a+i)+j); 
cout<<endl; 
 
} 
cout<<endl; 
cout<<endl; 
for (j = 4; j >= 0; j--) 
for (i = 0; i < 5; i++) 
if (i<=j && (i+j)>=5-1) { 
cout<<setw(7)<<setprecision(4)<<*(*(a+i)+j); 
cout<<endl; 
} 
getch(); 
}
Задание в виде картинки -
Изображения
 
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.04.2018, 03:53
Ответы с готовыми решениями:

Отсортировать массив и выстроить его змейкой
Такая вот задача. дан натуральный целочисленный массив матрица(рандом). Нужно отсортировать массив и выстроить его змейкой вот так: 1 5...

Заполнить матрицу змейкой из верхнего левого угла
долгое время мучаюсь с задачей,нужно создать змейку вида: 0 1 5 6 2 4 7 12 3 8 11 13 9 10 14 15 не получается...

Заполнить матрицу змейкой, начиная с правого верхнего угла
2)Заполнить двумерный массив m на n (m и n вводятся с клавиатуры, оба числа не больше 10) змейкой последовательно натуральными числами,...

1
0 / 0 / 1
Регистрация: 16.07.2015
Сообщений: 2
23.04.2018, 12:24  [ТС]
Задача была решена следующим способом :
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
// Алгоритм работы программы, если n - нечетное
if (n%2!=0) {
for (j = n-1; j >= 0; j--)
if (j%2==0) {
for (i = 0; i < n; i++)
if (i<=j && (i+j)>=(n-1)) {
cout<<setw(7)<<setprecision(4)<<*(*(a+i)+j);
cout<<endl;
}
}
else  for (i = n-1; i >= 0; i--)
if (i<=j && (i+j)>=(n-1)) {
cout<<setw(7)<<setprecision(4)<<*(*(a+i)+j);
cout<<endl;
}
}
// Алгоритм работы программы, если n - четное
else
for (j = n-1; j >= 0; j--)
if (j%2!=0) {
for (i = 0; i < n; i++)
if (i<=j && (i+j)>=(n-1)) {
cout<<setw(7)<<setprecision(4)<<*(*(a+i)+j);
cout<<endl;
}
}
else  for (i = n-1; i >= 0; i--)
if (i<=j && (i+j)>=(n-1)) {
cout<<setw(7)<<setprecision(4)<<*(*(a+i)+j);
cout<<endl;
}
Добавлено через 15 минут
Полный код, если кому интересно. Комментарии на украинском, палками не бейте
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
#include <iostream.h>
#include <conio.h>
#include <windows.h>
#include <iomanip.h>
int a[10][10];
float b[10];
int n,i,j;
void Inp(int a[10][10]);       // Підпрограма вводу двомірного масиву
void Out(int a[10][10]);       // Підпрограма виводу заданого масиву
void Find(int a[10][10], int n, float b[10]);      // Оголошення пiдпрограми для
                                      // знаходження та виводу
                                      // потрiбних елементiв матрицi
void main () {
    clrscr();
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    // Звернення до підпрограми вводу
    Inp(a);
    // Звернення до підпрограми виводу
    Out(a);
    // Звернення до підпрограми знаходження та виводу потрiбних елементiв матрицi
    Find(a,n,b);
    getch();
    }
//----------------------------------------------------------------------------\\
//             Підпрограма вводу елементів заданого масиву                    \\
void Inp(int a[10][10]){
    // Введення числа стрічок та стовпців матриці а:
    cout<<"\n Введіть кількість рядків та стовпчикiв матриці а: ";
    cin>>n;
    // Введення значення матриці а:
    cout<<"\n Введення значень елементів масиву a:\n";
    for (i = 0; i < n; i++)
       for (j = 0; j < n; j++) {
           cout<<" Введіть a["<<i<<"] ["<<j<<"]=";
           cin>>*(*(a+i)+j);
 
       }
cout<<endl;
clrscr();
}
//----------------------------------------------------------------------------\\
//             Підпрограма виводу елементів заданого масиву                   \\
void Out(int a[10][10]) {
cout<<" Задана матриця: "<<endl<<endl;
        for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++)
        cout<<setw(7)<<setprecision(3)<<*(*(a+i)+j);
        cout<<endl;
 
    }
cout<<endl;
}
//----------------------------------------------------------------------------\\
//            Підпрограма знаходження потрібних елементів матриці             \\
void Find(int a[10][10], int n, float b[10]) {
cout<<"Елементи правої частини матрицi, розділеної діагоналями, ";
cout<<"впорядковані змійкою, починаючи з правого верхнього елементу: "<<endl;
// Алгоритм роботи програми за умови, якщо n - непарне
if (n%2!=0) {
for (j = n-1; j >= 0; j--)
if (j%2==0) {
for (i = 0; i < n; i++)
if (i<=j && (i+j)>=(n-1)) {
*(b+i)=*(*(a+i)+j);
cout<<setw(7)<<setprecision(4)<<*(b+i);
cout<<endl;
}
}
else  for (i = n-1; i >= 0; i--)
if (i<=j && (i+j)>=(n-1)) {
*(b+i)=*(*(a+i)+j);
cout<<setw(7)<<setprecision(4)<<*(b+i);
cout<<endl;
}
}
// Алгоритм роботи програми за умови, якщо n - парне
else
for (j = n-1; j >= 0; j--)
if (j%2!=0) {
for (i = 0; i < n; i++)
if (i<=j && (i+j)>=(n-1)) {
*(b+i)=*(*(a+i)+j);
cout<<setw(7)<<setprecision(4)<<*(b+i);
cout<<endl;
}
}
else  for (i = n-1; i >= 0; i--)
if (i<=j && (i+j)>=(n-1)) {
*(b+i)=*(*(a+i)+j);
cout<<setw(7)<<setprecision(4)<<*(b+i);
cout<<endl;
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2018, 12:24
Помогаю со студенческими работами здесь

Сжать массив, переместив все ненулевые элементы в левую часть списка, а все нули-в правую часть
Дан список целых чисел. Требуется “сжать” его, переместив все ненулевые элементы в левую часть списка, не меняя их порядок, а все нули - в...

“Сжать” список, переместив все ненулевые элементы в левую часть списка, не меняя их порядок, а все нули - в правую часть
Дан список целых чисел. Требуется “сжать” его, переместив все ненулевые элементы в левую часть списка, не меняя их порядок, а все нули - в...

Нужно продифференцировать правую часть
Хорошего всем дня! Мне нужно продифференцировать правую часть по d , приравнять результат дифференцированию к нулю, найти решения...

Часть сайта сдвинулась в правую сторону
Сдвинулась центральная часть сайта в правую сторону. Помогите пожалуйста. Шапка сайта и нижняя часть не сдвинулась.

Поменять местами правую и левую часть массива
Сформировал двумерный массив A(10,8). Как поменять местами правую и левую часть этого массива?


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru