Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 28.11.2014
Сообщений: 45
1

Вывести элементы массива, заданные по приложенной формуле, в виде спирали (C++ -> C#)

13.05.2015, 21:10. Просмотров 1213. Ответов 6
Метки нет (Все метки)

Доброго времени суток! Формучане, выручайте, помогите, пожалуйста, переписать прогу, которая будет выводить элементы массива, заданные по приложенной формуле, в виде спирали.
Массив A[2*n+1, 2*n+1], начиная с 0 в центре A[n, n].
А вот и код на C++

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <iostream>
#include <iomanip>
#include <cstdlib>
void z1();
void z2();
using namespace std;
 
int main()
{
    z1();
    system("Pause");
    return 0;
}
 
void z1()
{
    int a[10][10], i, j, k(1), ii, jj, n(1), zi(1), zj(1), g(1);
    for(i=0;i<10;i++)
        for(j=0;j<10;j++)
            a[i][j]=0;
    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
            cout<<setw(3)<<a[i][j];
        cout<<endl;
    }
    j=4;
    i=5;
    while(i<=10 && j<=10)
    {
        
        switch(k)
        {
        case(1):
            {
                zi=i;
                zj=j;
                i-=n;
                break;
            }
        case(2):
            {
                zi=i;
                zj=j;
                j+=n;
                break;
            }
        case(3):
            {
                zi=i;
                zj=j;
                i+=n+1;
                break;
            }
        case(4):
            {
                zi=i;
                zj=j;
                j-=n+1;
            }
        }
        if(k==1)
            while(zi>i)
            {
                a[zi][zj]=g;
                zi--;
                g++;
            }
        else
            if(i>10 || i<0 || j<0 || j>10)
            {
                system("pause");
                break;
            }
            else
                if(k==2)
                    while(zj<j)
                    {
                        a[zi][zj]=g;
                        zj++;
                        g++;
                    }
                else
                    if(k==3)
                        while(zi<i)
                        {
                            a[zi][zj]=g;
                            zi++;
                            g++;
                        }
                    else
                        if(k==4)
                            while(zj>j)
                            {
                                a[zi][zj]=g;
                                zj--;
                                g++;
                            }
        cout<<"i= "<<i<<"j= "<<j<<"k= "<<k;
        k++;
        if(k==5)
        {
            k=1;
            n+=2;
        }
        system("pause");
        system("cls");
        for(ii=0;ii<10;ii++)
        {
            for(jj=0;jj<10;jj++)
                cout<<setw(3)<<a[ii][jj];
            cout<<endl;
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2015, 21:10
Ответы с готовыми решениями:

Как вывести элементы массива, двигаясь по спирали из центра?
Ввести квадратный массив нечетного размера и, начиная с центрального элемента, вывести все элементы...

Вывести на экран заданные элементы массива, их сумму и произведение
Одномерные массивы. Вывести на экран все элементы от 2 до 5, их сумму и произведение

Вывести все элементы массива в виде матрицы и вывести номер строки массива, в которой каждый элемент равен X.
Дан двумерный массив N=9, M=10; Вывести все элементы массива в виде матрицы и вывести номер строки...

Вывести элементы массива в виде таблицы и переставить его элементы местами
Скажите каким образом переставляется двумерный массив ? К примеру : {1,2,3,4,5} мне нужно элементы...

6
Эксперт .NET
4323 / 1984 / 386
Регистрация: 27.03.2010
Сообщений: 5,436
Записей в блоге: 1
13.05.2015, 21:52 2
Держи. Но чёт я так и не допетрил, почему она не работает так же как на плюсах. Неохота разбираться.
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsApp_Q1
{
    class Program
    {
        static void Main(string[] args)
        {
            z1();
            Console.ReadKey();
        }
 
        static void z1()
        {
            int[,] a = new int[10, 10];
 
            int i;
            int j;
            int k = 1;
            int ii;
            int jj;
            int n = 1;
            int zi = 1;
            int zj = 1;
            int g = 1;
 
            for (i = 0; i < 10; i++)
                for (j = 0; j < 10; j++)
                    a[i, j] = 0;
            for (i = 0; i < 10; i++)
            {
                for (j = 0; j < 10; j++)
                    Console.Write("{0}", a[i, j]);
                Console.WriteLine();
            }
            j = 4;
            i = 5;
            while (i <= 10 && j <= 10)
            {
 
                switch (k)
                {
                    case (1):
                        {
                            zi = i;
                            zj = j;
                            i -= n;
                            break;
                        }
                    case (2):
                        {
                            zi = i;
                            zj = j;
                            j += n;
                            break;
                        }
                    case (3):
                        {
                            zi = i;
                            zj = j;
                            i += n + 1;
                            break;
                        }
                    case (4):
                        {
                            zi = i;
                            zj = j;
                            j -= n + 1;
                        }
                        break;
                }
 
                if (k == 1)
                    while (zi > i)
                    {
                        a[zi, zj] = g;
                        zi--;
                        g++;
                    }
                else
                    if (i > 10 || i < 0 || j < 0 || j > 10)
                    {
                        Console.WriteLine("Нажмите любую клавишу");
                        Console.ReadKey();
                        break;
                    }
                    else
                        if (k == 2)
                            while (zj < j)
                            {
                                a[zi, zj] = g;
                                zj++;
                                g++;
                            }
                        else
                            if (k == 3)
                                while (zi < i)
                                {
                                    a[zi, zj] = g;
                                    zi++;
                                    g++;
                                }
                            else
                                if (k == 4)
                                    while (zj > j)
                                    {
                                        a[zi, zj] = g;
                                        zj--;
                                        g++;
                                    }
                Console.WriteLine("i= {0}; j= {1}; k= {2}", i, j, k);
                k++;
                if (k == 5)
                {
                    k = 1;
                    n += 2;
                }
                Console.WriteLine("Нажмите любую клавишу");
                Console.Clear();
 
                for (ii = 0; ii < 10; ii++)
                {
                    for (jj = 0; jj < 10; jj++)
                        Console.Write("{0:3}", a[ii, jj]);
                    Console.WriteLine();
                }
            }
        }
    }
}
0
1 / 1 / 1
Регистрация: 28.11.2014
Сообщений: 45
13.05.2015, 22:46  [ТС] 3
но она не работает(
0
Эксперт .NET
4323 / 1984 / 386
Регистрация: 27.03.2010
Сообщений: 5,436
Записей в блоге: 1
13.05.2015, 23:10 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Добавлено через 11 минут
Вот рабочая версия
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsApp_Q1
{
    class Program
    {
        static void Main(string[] args)
        {
            z1();
            Console.ReadKey();
        }
 
        static void z1()
        {
            int[,] a = new int[10, 10];
 
            int i;
            int j;
            int k = 1;
            int ii;
            int jj;
            int n = 1;
            int zi = 1;
            int zj = 1;
            int g = 1;
 
            for (i = 0; i < 10; i++)
                for (j = 0; j < 10; j++)
                    a[i, j] = 0;
            for (i = 0; i < 10; i++)
            {
                for (j = 0; j < 10; j++)
                    Console.Write("{0,3}", a[i, j]);
                Console.WriteLine();
            }
            j = 4;
            i = 5;
            while (i <= 10 && j <= 10)
            {
 
                switch (k)
                {
                    case (1):
                        {
                            zi = i;
                            zj = j;
                            i -= n;
                            break;
                        }
                    case (2):
                        {
                            zi = i;
                            zj = j;
                            j += n;
                            break;
                        }
                    case (3):
                        {
                            zi = i;
                            zj = j;
                            i += n + 1;
                            break;
                        }
                    case (4):
                        {
                            zi = i;
                            zj = j;
                            j -= n + 1;
                        }
                        break;
                }
 
                if (k == 1)
                    while (zi > i)
                    {
                        a[zi, zj] = g;
                        zi--;
                        g++;
                    }
                else
                    if (i > 10 || i < 0 || j < 0 || j > 10)
                    {
                        Console.WriteLine("Нажмите любую клавишу");
                        Console.ReadKey();
                        break;
                    }
                    else
                        if (k == 2)
                            while (zj < j)
                            {
                                a[zi, zj] = g;
                                zj++;
                                g++;
                            }
                        else
                            if (k == 3)
                                while (zi < i)
                                {
                                    a[zi, zj] = g;
                                    zi++;
                                    g++;
                                }
                            else
                                if (k == 4)
                                    while (zj > j)
                                    {
                                        a[zi, zj] = g;
                                        zj--;
                                        g++;
                                    }
                Console.WriteLine("i= {0}; j= {1}; k= {2}", i, j, k);
                k++;
                if (k == 5)
                {
                    k = 1;
                    n += 2;
                }
                Console.WriteLine("Нажмите любую клавишу");
                Console.ReadKey();
                Console.Clear();
 
                for (ii = 0; ii < 10; ii++)
                {
                    for (jj = 0; jj < 10; jj++)
                        Console.Write("{0,3}", a[ii, jj]);
                    Console.WriteLine();
                }
            }
        }
    }
}
1
Заблокирован
13.05.2015, 23:12 5
love0705, Вместо:
Цитата Сообщение от Casper-SC Посмотреть сообщение
C#
1
Console.Write("{0:3}", a[ii, jj]);
нужно:
C#
1
Console.Write("{0,3}", a[ii, jj]);
0
Эксперт .NET
4323 / 1984 / 386
Регистрация: 27.03.2010
Сообщений: 5,436
Записей в блоге: 1
13.05.2015, 23:13 6
Добавлено через 44 секунды
Ev_Hyper, да я уже нашёл. Я просто забыл как этот отступ делать. Ну и там в одном месте не было Console.ReadKey(); вот и не работало как надо.
0
407 / 309 / 237
Регистрация: 29.05.2010
Сообщений: 777
Записей в блоге: 1
13.05.2015, 23:16 7
Лучший ответ Сообщение было отмечено love0705 как решение

Решение

love0705,
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using System;
 
namespace ConsApp_Q1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            z1();
            Console.ReadKey();
        }
 
       static  void z1()
        {
            int[,] a = new int[10, 10];
            int i, j, k = 1;
            int n = 1, zi = 1, zj = 1, g = 1;
            for (i = 0; i < 10; i++)
                for (j = 0; j < 10; j++)
                    a[i, j] = 0;
            for (i = 0; i < 10; i++)
            {
                for (j = 0; j < 10; j++)
                   Console.Write("{0,3}",a[i, j]); 
                Console.WriteLine();
            }
            j = 4;
            i = 5;
            while (i <= 10 && j <= 10)
            {
 
                switch (k)
                {
                    case (1):
                    {
                        zi = i;
                        zj = j;
                        i -= n;
                        break;
                    }
                    case (2):
                    {
                        zi = i;
                        zj = j;
                        j += n;
                        break;
                    }
                    case (3):
                    {
                        zi = i;
                        zj = j;
                        i += n + 1;
                        break;
                    }
                    case (4):
                    {
                        zi = i;
                        zj = j;
                        j -= n + 1;
                        break;
                    }
                }
                if (k == 1)
                    while (zi > i)
                    {
                        a[zi, zj] = g;
                        zi--;
                        g++;
                    }
                else if (i > 10 || i < 0 || j < 0 || j > 10)
                {
                    Console.ReadKey();
                    break;
                }
                else if (k == 2)
                    while (zj < j)
                    {
                        a[zi,zj] = g;
                        zj++;
                        g++;
                    }
                else if (k == 3)
                    while (zi < i)
                    {
                        a[zi, zj] = g;
                        zi++;
                        g++;
                    }
                else if (k == 4)
                    while (zj > j)
                    {
                        a[zi, zj] = g;
                        zj--;
                        g++;
                    }
                Console.Write("i={0} j={1} k={2}", i, j, k);
                k++;
                if (k == 5)
                {
                    k = 1;
                    n += 2;
                }
                Console.ReadKey();
                Console.Clear();
                int ii;
                for (ii = 0; ii < 10; ii++)
                {
                    int jj;
                    for (jj = 0; jj < 10; jj++)
                        Console.Write("{0,3}", a[ii, jj]);
                    Console.WriteLine();
                }
            }
        }
    }
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2015, 23:16

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывести элементы массива в виде матрицы
3. Сформировать двумерный массив В размером 5*5, где элементы массива B целые случайные числа в...

Вывести квадратную матрицу на консоль в виде обратной спирали
Мне нужно вывести обратный спираль 10 11 7 6 5 9 13 14 15 16 12 8 4 3 2 1. Но я получаю нормальный...

Вывести элементы массива на лист в виде круговой диаграммы
Sub Задание_А_6 'Массив действительных чисел, размерность которого N. 'Подсчитать, сколько в нем...

Вывести все четные элементы в виде отдельного массива
задача2-Вывести все четные элементы в виде отдельного массива.

Вывести все элементы двухмерного массива в виде таблицы
Вывести все элементы двухмерного массива в виде таблицы. Входные данные: Во входном потоке в...

Ввести элементы двумерного массива с клавы С++.Нужно вывести его на экран в виде таблицы, в конце каждой строки надо вывести самый большой элемент
Вот мой код : #include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; using std::cout;...


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

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

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