Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 19.10.2016
Сообщений: 2
1

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

19.10.2016, 20:55. Показов 426. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Суть такова, надо написать программу для вывода квадратной матрицы заполненную простыми числами по спирали(что-то на подобии спирали Улама) и размер матрицы вводится с клавиатуры. Код работает со статическим двумерным массивом. Была попытка сделать динамический, но что-то не получается. Буду признателен за помощь


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
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
//#define quantity 3
int prime_numbers(int cycle)
{
    int number=3;
    int divisor;
    int indicator;
    int counter_of_division=1;
    for (number; counter_of_division<=cycle;)
    {
        number ++;
        indicator = 0;
        for (divisor = 1; divisor <= number; divisor ++)
        {   
            if (number % divisor == 0)
            { 
                indicator ++;
            }
        }
        if (indicator == 2) 
        {
            counter_of_division++;
        }
    }
    return number;
}
 
int main()
{ 
    int j;
    int j1;
    int j2;
    int cycle=-1;
    int i;
    int number=3;
    int i1,w=-1;
    int i2;
    int quantity;
    int counter_of_iteration=0;
    int* mt;
    scanf("%d",& quantity);
    mt=(int*)malloc(quantity*quantity*sizeof(int));
    for(i=0;i<quantity;i++)
        for(j=0;j<quantity;j++)
            *(mt + i * quantity + j)=2;
    i1=i2=j1=j2=quantity/2; //центр
    *(mt + i * quantity + j)=2;
    int size=2;
    while(size<quantity*quantity)
    {
        switch (counter_of_iteration)
        {
        case 0:     //вправо движение
        if(j2<(quantity-1))
            j2++;   //сдвигаем правую границу
        for(j=j1+1;j<=j2;j++)
        {       
                cycle++;
                if(*(mt + i1 * quantity + j)==0)
                    {
                        for(w;w<=cycle;w++)
                            *(mt + i1 * quantity + j)=prime_numbers(cycle);             
                        size++;
                    }
        }
            counter_of_iteration=1;
            break;
        case 1:     //вниз
            if(i2<(quantity-1))
                i2++;   //сдвигаем нижнюю границу
            for(i=i1+1;i<=i2;i++)
            { 
                cycle++;    
                if(*(mt + i * quantity + j2)==0)
                {   
                        for(w;w<=cycle;w++)
                            *(mt + i * quantity + j2)=prime_numbers(cycle);     
                        size++;
                }
            }
            counter_of_iteration=2;
            break;
        case 2:     //влево
            if(j1>0)
                j1--;   //сдвигаем левую границу
            for(j=j2-1;j>=j1;j--)
            { 
                cycle++;    
                if(*(mt + i2 * quantity + j)==0)
                {
                    for(w;w<=cycle;w++)
                        *(mt + i2 * quantity + j)=prime_numbers(cycle); 
                    size++;
                }
            }
                counter_of_iteration=3;
                break;
        case 3:     //вверх
            if(i1>0)
                i1--;   //сдвигаем верхнюю границу
            for(i=i2-1;i>=i1;i--)
            {
                    cycle++;
                    if(*(mt + i * quantity + j1)==0)
                        {
                            for(w;w<=cycle;w++)
                                *(mt + i * quantity + j1)=prime_numbers(cycle); 
                            size++;
                        }
            }
                counter_of_iteration=0;
                break;
        }
    }
    printf("matrica\n");
    for(i=0;i<quantity;i++)
    {
        printf(" \n|"); 
        for(j=0;j<quantity; j++)
        {       
            printf("%6d",*(mt + i * quantity + j));
            
        }
            printf("  |");
    }
    free(mt);
    _getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.10.2016, 20:55
Ответы с готовыми решениями:

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

Написать программу для вывода квадратной матрицы на экран
Вот моя программа: CLS RANDOMIZE TIMER INPUT n DIM a(n, n) FOR i = 1 TO n FOR j = 1 TO...

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

Процедура вывода элементов квадратной матрицы по спирали по часовой стрелке.
Собственно сабж...

0
19.10.2016, 20:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2016, 20:55
Помогаю со студенческими работами здесь

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

Задача, написать программу для транспонирования квадратной матрицы
Сделал эту задачу одномерными массивами, оказалось нужно динамическими, поможете? #include &quot;pch.h&quot;...

Написать программу для преобразования заданной квадратной матрицы...
Написать программу для преобразования заданной квадратной матрицы следующим образом: все элементы...

Написать программу для вывода матрицы
Помогите написать программу для вывода матрицы чтобы, можно было ее транспонировать и пользователю...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru