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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Ang_07
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 47
#1

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

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

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

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

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

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

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

Заполнить квадратную матрицу по спирали по часовой стрелке - C++
Нужно составить программу, которая заполняет квадратную матрицу порядка n натуральными числами 1, 2, 3, ... n, записывая их в нее &quot;по...

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

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

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

cout<<end<<endl; в этом матюкаеться
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 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;
}
}
Ang_07
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 15:32  [ТС] #13
СБОЙ построения.

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

пишет типа i и j не обьявленные индификаторы и неопределены
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 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;
}
}
Ang_07
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 47
23.11.2010, 15:41  [ТС] #15
если бы ещё описание было ._. ну ладно.. пойду мучать разбираться что да как, пасибо большое ^__^
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2010, 15:41
Привет! Вот еще темы с ответами:

Получить вторую матрицу путем поворота первой по часовой стрелке - C++
Дана двумерная матрица действительных чисел А. Необходимо получить двумерный масив В путем поворота первого по часовой стрелке. Вводить...

Проблема с выводом массива спиралью против часовой стрелки - C++
Здравствуйте, недавно была задача, создать массив 10х10 рандомных чисел и вывести спиралью против часовой стрелки. В паскале задачу я...

Поворот массива на 90 градусов по часовой стрелке - C++
Всем привет! Помогите найти ошибку, программа должна поворачивать целочисленный массив на 90 градусов по часовой стрелке Пример 1 2 3 ...

Дан двумерный массив.Получить последовательность чисел, получающуюся при чтение этого массива по спирали,по часовой стрелке начиная с середины массива - C++
Не понимаю, как написать программу, выполняющую данную задачу, а вот понять хочется. Дан двумерный массив 9х9. Получить последовательность...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.11.2010, 15:41
Ответ Создать тему
Опции темы

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