Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
#1

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

23.11.2010, 14:25. Просмотров 792. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2010, 14:25
Ответы с готовыми решениями:

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

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

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

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

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

15
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
23.11.2010, 14:42 #2
переписование ползунком:

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  [ТС] #3
мне нужно не просто ползунком, а ещё и спиралью ._.
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
23.11.2010, 14:48 #4
Цитата Сообщение от Ang_07 Посмотреть сообщение
мне нужно не просто ползунком, а ещё и спиралью ._.
Сейчас напишем, если откроете тайну, где учитесь и в каком классе, или на каком курсе?
0
Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 14:54  [ТС] #5
Первый курс ДИИТа
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
23.11.2010, 14:58 #6
Ладно для первокурсников сегодня скидка, сейчас напишу. А Вы пока напишите так Вам или не так нужно:
- ползунком я так полагаю это змейкой?
- после переписования ползунком выводим на экран и после переписования спиралью по часовой стрелке тоже выводим на экран? Для наглядности.
0
Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 15:01  [ТС] #7
нет просто переписать в 2 мерный массив, спиралью по часовой стрелке, ну.. у меня были идеи взять в общий цикл с условием выхода "i<n*k потом взять какуюто переменную чтобы подщитовать отступы тоесть с какого места начинать записывать... думал думал.. мозг вскипел О_о
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
23.11.2010, 15:11 #8
Ang_07, Так что нужно? Просто спиралью по часовой стрелке? А то у меня и змейкой и спиралью уже готово.

Добавлено через 30 секунд
Цитата Сообщение от Ang_07 Посмотреть сообщение
мозг вскипел
Это я заметил
0
Ang_07
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 15:12  [ТС] #9
да просто спиралью по часовой стрелке
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
23.11.2010, 15:14 #10
Проверяй:
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  [ТС] #11
а можно описать пожалуста чтоб коректно в программу вставить.. ато ошибок куча ._. болие 30 (О_о)

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

cout<<end<<endl; в этом матюкаеться
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
23.11.2010, 15:25 #12
Проверяй весь код:
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  [ТС] #13
СБОЙ построения.

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

пишет типа i и j не обьявленные индификаторы и неопределены
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
23.11.2010, 15:36 #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
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  [ТС] #15
если бы ещё описание было ._. ну ладно.. пойду мучать разбираться что да как, пасибо большое ^__^
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
23.11.2010, 15:43 #16
там не сложно
0
23.11.2010, 15:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2010, 15:43

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

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

Функция: заполнить матрицу по часовой стрелке, от левого верхнего края
Нужно заполнить матрицу 9 на 9 числами от 1 до 81, но заполнить нужно по...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru