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

Ang_07

Здравствуйте, у меня задание есть, не как не могу придумать решение проблемы, вот у меня есть программа
#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 в матрицу вносит ._. помогите пожалуйста.
14 ответов

Ang_07

переписование ползунком:
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

мне нужно не просто ползунком, а ещё и спиралью ._.


Ang_07

мне нужно не просто ползунком, а ещё и спиралью ._.
Сейчас напишем, если откроете тайну, где учитесь и в каком классе, или на каком курсе?


Ang_07

Первый курс ДИИТа


Ang_07

Ладно для первокурсников сегодня скидка, сейчас напишу. А Вы пока напишите так Вам или не так нужно: - ползунком я так полагаю это змейкой? - после переписования ползунком выводим на экран и после переписования спиралью по часовой стрелке тоже выводим на экран? Для наглядности.


Ang_07

нет просто переписать в 2 мерный массив, спиралью по часовой стрелке, ну.. у меня были идеи взять в общий цикл с условием выхода "i


Ang_07

Ang_07, Так что нужно? Просто спиралью по часовой стрелке? А то у меня и змейкой и спиралью уже готово.
мозг вскипел
Это я заметил


Ang_07

да просто спиралью по часовой стрелке


Ang_07

Проверяй:
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

а можно описать пожалуста чтоб коректно в программу вставить.. ато ошибок куча ._. болие 30 (О_о)пишет типа j,i необьявленcout<


Ang_07

Проверяй весь код:
#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

СБОЙ построения.Затраченное время: 00:00:01.96 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========пишет типа i и j не обьявленные индификаторы и неопределены


Ang_07

Давай так:
#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

если бы ещё описание было ._. ну ладно.. пойду мучать разбираться что да как, пасибо большое ^__^