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

Переписать данные из массива в матрицу ползунком, и спиралью по часовой стрелке

23.11.2010, 14:25. Показов 1546. Ответов 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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
 
 
void main()
{
 
setlocale (LC_ALL, "Russian");
 
        int m[100],arr[10][10],n,k,f=0;//m[100]-одномерный масив в который переписую 2 мерный для сортировки,n-количество строк,k-столбцов;
        cout<<"Введите количе4ство строк,столбцов"<<endl;
        cin>>n;
        cin>>k;
        //цыкл ввода матрицы
        for(int i=0;i<n;i++)
                for(int j=0;j<k;j++)
                {
                        cout<<"Введите элемент матрици М["<<i+1<<"]["<<j+1<<"]"<<endl;
                        cin>>arr[i][j];
                }
        //переписование в одноменрый масив
        for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                        {
                        m[f]=arr[i][j];
                        f++;
                        }
        //сортировка по возростанию
         int trash = 0,count=n*k; 
 for (int i=0;i<count;i++)
  for (int j=0;j<count-i-1;j++) 
   if (m[j] > m[j+1])
    {
     trash=m[j]; 
     m[j]=m[j+1];
     m[j+1]=trash;
    }
   //вывод отсортированого одномерного масива
         for(int i=0;i<count;i++)
                 cout<<m[i]<<",";
                 cout<<endl;
вот полученый отсортерованый масив нужно переписать ползунком и спиралью по часовой стрелке, всё что находил, само создаёт и все числа от 1 до 9 в матрицу вносит ._. помогите пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2010, 14:25
Ответы с готовыми решениями:

Получить целочисленную матрицу, элементами которой являются числа 1,2,3….n*n, расположенные в ней спиралью по часовой стрелке
Получить целочисленную матрицу порядка n , элементами которой являются числа 1,2,3….n*n, расположенные в ней спиралью по часовой стрелке.

Заполнить матрицу спиралью против часовой стрелки
Заполнить матрицу n*n по стрелке. Для того чтобы увидеть правильность алгоритма, заполняйте матрицу числами от 1 до n. Под буквой Г

Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке.

15
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
23.11.2010, 14:42
переписование ползунком:

C++
1
2
3
4
5
6
7
8
9
10
11
12
f=0;
for(i=0; i<n; i++)
if(i%2==0)
{
for(j=0; j<n; j++)
arr[i][j]=m[f++];
}
else
{
for(j=n-1; j>=0; j--)
arr[i][j]=m[f++];
}
0
 Аватар для Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 14:45  [ТС]
мне нужно не просто ползунком, а ещё и спиралью ._.
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
23.11.2010, 14:48
Цитата Сообщение от Ang_07 Посмотреть сообщение
мне нужно не просто ползунком, а ещё и спиралью ._.
Сейчас напишем, если откроете тайну, где учитесь и в каком классе, или на каком курсе?
0
 Аватар для Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 14:54  [ТС]
Первый курс ДИИТа
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
23.11.2010, 14:58
Ладно для первокурсников сегодня скидка, сейчас напишу. А Вы пока напишите так Вам или не так нужно:
- ползунком я так полагаю это змейкой?
- после переписования ползунком выводим на экран и после переписования спиралью по часовой стрелке тоже выводим на экран? Для наглядности.
0
 Аватар для Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 15:01  [ТС]
нет просто переписать в 2 мерный массив, спиралью по часовой стрелке, ну.. у меня были идеи взять в общий цикл с условием выхода "i<n*k потом взять какуюто переменную чтобы подщитовать отступы тоесть с какого места начинать записывать... думал думал.. мозг вскипел О_о
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
23.11.2010, 15:11
Ang_07, Так что нужно? Просто спиралью по часовой стрелке? А то у меня и змейкой и спиралью уже готово.

Добавлено через 30 секунд
Цитата Сообщение от Ang_07 Посмотреть сообщение
мозг вскипел
Это я заметил
0
 Аватар для Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 15:12  [ТС]
да просто спиралью по часовой стрелке
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
23.11.2010, 15:14
Проверяй:
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
f=0;
int n_i=n, n_j=n, ii=0, jj=0;
while(f<n*n)
{
    for(j=jj; j<n_j; j++)
        arr[ii][j]=m[f++];
    ii++;
    for(i=ii; i<n_i; i++)
        arr[i][n_j-1]=m[f++];
    n_j--;
    for(j=n_j-1; j>=jj; j--)
        arr[n_i-1][j]=m[f++];
    n_i--;
    for(i=n_i-1; i>=ii; i--)
        arr[i][jj]=m[f++];
    jj++;
}
cout<<end<<endl;
for(i=0; i<n; i++)
{
    for(j=0; j<n; j++)
        cout<<arr[i][j]<<" ";
    cout<<endl;
}
0
 Аватар для Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 15:18  [ТС]
а можно описать пожалуста чтоб коректно в программу вставить.. ато ошибок куча ._. болие 30 (О_о)

пишет типа j,i необьявлен

cout<<end<<endl; в этом матюкаеться
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
23.11.2010, 15:25
Проверяй весь код:
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
 
 
void main()
{
 
setlocale (LC_ALL, "Russian");
 
        int m[100],arr[10][10],n,k,f=0;//m[100]-îäíîìåðíûé ìàñèâ â êîòîðûé ïåðåïèñóþ 2 ìåðíûé äëÿ ñîðòèðîâêè,n-êîëè÷åñòâî ñòðîê,k-ñòîëáöîâ;
        cout<<"Ââåäèòå êîëè÷å4ñòâî ñòðîê,ñòîëáöîâ"<<endl;
        cin>>n;
        cin>>k;
        //öûêë ââîäà ìàòðèöû
        for(int i=0;i<n;i++)
                for(int j=0;j<k;j++)
                {
                        cout<<"Ââåäèòå ýëåìåíò ìàòðèöè Ì["<<i+1<<"]["<<j+1<<"]"<<endl;
                        cin>>arr[i][j];
                }
        //ïåðåïèñîâàíèå â îäíîìåíðûé ìàñèâ
        for( i=0;i<n;i++)
                for(int j=0;j<k;j++)
                        {
                        m[f]=arr[i][j];
                        f++;
                        }
        //ñîðòèðîâêà ïî âîçðîñòàíèþ
         int trash = 0,count=n*k; 
 for (i=0;i<count;i++)
  for (int j=0;j<count-i-1;j++) 
   if (m[j] > m[j+1])
    {
     trash=m[j]; 
     m[j]=m[j+1];
     m[j+1]=trash;
    }
   //âûâîä îòñîðòèðîâàíîãî îäíîìåðíîãî ìàñèâà
         for( i=0;i<count;i++)
                 cout<<m[i]<<",";
                 cout<<endl;
    //
                 f=0;
int n_i=n, n_j=k, ii=0, jj=0;
while(f<count)
{
        for(int j=jj; j<n_j; j++)
                arr[ii][j]=m[f++];
        ii++;
        for(i=ii; i<n_i; i++)
                arr[i][n_j-1]=m[f++];
        n_j--;
        for(j=n_j-1; j>=jj; j--)
                arr[n_i-1][j]=m[f++];
        n_i--;
        for(i=n_i-1; i>=ii; i--)
                arr[i][jj]=m[f++];
        jj++;
}
cout<<endl<<endl;
for(i=0; i<n; i++)
{
        for(int j=0; j<k; j++)
                cout<<arr[i][j]<<" ";
        cout<<endl;
}
}
0
 Аватар для Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 15:32  [ТС]
СБОЙ построения.

Затраченное время: 00:00:01.96
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

пишет типа i и j не обьявленные индификаторы и неопределены
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
23.11.2010, 15:36
Давай так:
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
 
 
void main()
{
 
setlocale (LC_ALL, "Russian");
 
        int m[100],arr[10][10],n,k,f=0;//m[100]-îäíîìåðíûé ìàñèâ â êîòîðûé ïåðåïèñóþ 2 ìåðíûé äëÿ ñîðòèðîâêè,n-êîëè÷åñòâî ñòðîê,k-ñòîëáöîâ;
        cout<<"Ââåäèòå êîëè÷å4ñòâî ñòðîê,ñòîëáöîâ"<<endl;
        cin>>n;
        cin>>k;
        //öûêë ââîäà ìàòðèöû
        for(int i=0;i<n;i++)
                for(int j=0;j<k;j++)
                {
                        cout<<"Ââåäèòå ýëåìåíò ìàòðèöè Ì["<<i+1<<"]["<<j+1<<"]"<<endl;
                        cin>>arr[i][j];
                }
        //ïåðåïèñîâàíèå â îäíîìåíðûé ìàñèâ
        for(int i=0;i<n;i++)
                for(int j=0;j<k;j++)
                        {
                        m[f]=arr[i][j];
                        f++;
                        }
        //ñîðòèðîâêà ïî âîçðîñòàíèþ
         int trash = 0,count=n*k; 
 for (int i=0;i<count;i++)
  for (int j=0;j<count-i-1;j++) 
   if (m[j] > m[j+1])
    {
     trash=m[j]; 
     m[j]=m[j+1];
     m[j+1]=trash;
    }
   //âûâîä îòñîðòèðîâàíîãî îäíîìåðíîãî ìàñèâà
         for(int i=0;i<count;i++)
                 cout<<m[i]<<",";
                 cout<<endl;
        //
                                 f=0;
int n_i=n, n_j=k, ii=0, jj=0;
while(f<count)
{
        for(int j=jj; j<n_j; j++)
                arr[ii][j]=m[f++];
        ii++;
        for(int i=ii; i<n_i; i++)
                arr[i][n_j-1]=m[f++];
        n_j--;
        for(int j=n_j-1; j>=jj; j--)
                arr[n_i-1][j]=m[f++];
        n_i--;
        for(int i=n_i-1; i>=ii; i--)
                arr[i][jj]=m[f++];
        jj++;
}
cout<<endl<<endl;
for(int i=0; i<n; i++)
{
        for(int j=0; j<k; j++)
                cout<<arr[i][j]<<" ";
        cout<<endl;
}
}
1
 Аватар для Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 15:41  [ТС]
если бы ещё описание было ._. ну ладно.. пойду мучать разбираться что да как, пасибо большое ^__^
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
23.11.2010, 15:43
там не сложно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2010, 15:43
Помогаю со студенческими работами здесь

Не используя дополнительную матрицу, повернуть квадратную матрицу по часовой стрелке на 180 градусов
Не используя дополнительную матрицу,повернуть квадратную матрицу по часовой стрелке на 180 градусов. Подскажите решение. Заранее ...

Повернуть матрицу по часовой стрелке
Что нужно сделать, чтобы повернуть матрицу по часовой стрелке?? если меняешь i и j местами, но она повернется против часовой на 90...

Заполнить матрицу по часовой стрелке
Ввести массив B, что состоит с элементов А(10;10), начиная с правого верхнего угла по часовой стрелке.

Повернуть матрицу на 90 градусов по часовой стрелке.
Сформировать матрицу 7х7 элементов, заполненную рандомно. Вывести ее на экран, развернув на 90 градусов по часовой стрелке.

Матрицу повернуть на 90 градусов по часовой стрелке на C++
Содержимое квадратной матрицы A(n,n) повернуть на 90 градусов по часовой стрелке, считая центром поворота центр симметрии матрицы.


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru