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

Спираль Улама C++

09.09.2011, 19:40. Показов 5843. Ответов 1
Метки нет (Все метки)

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
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int poisk(int d){
    int e;
    for (e=2;e<d/2;e++){
        if (d%2==0) return 0;
    }
    return 1;
    
 
}
 
void main(){
 int a[50][50],b[2500],p[2500];
 int i,j,m,n;
 int u,v,k,kol,t,x,y,add,dir,f,h;
 int g,r,q;
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
 printf("Введите размер матрицы");
 scanf("%d",&n);
 n--;
 m=n*n;
 g=1;
for(i=0;i<=n;i++){
    for(j=0;j<=n;j++){
        a[i][j]=g;
        g++;
    }
}
for(i=0;i<=n;i++){
    for(j=0;j<=n;j++)
        printf("%3d",a[i][j]);
    printf("\n");
}
 
    
 
k=1;
kol=1;
for(i=0;i<=n;i++){
    for(j=0;j<=n;j++){
        b[k]=a[i][j];
        k++;
        kol++;
    }
}
 
printf("\n");
for(i=0;i<=kol-1;i++){
    for(i=0;i<=kol-1;i++){
        if (b[j]<b[j+1]){
            t=b[j];
            b[j]=b[j+1];
        }
    }
}
 
x=0;
y=1;
add=n;
dir=1;
f=1;
 
while(add!=0){
    i=0;
    while (i!=add){
        x=x+dir;
        a[y][x]=b[f];
        f++;
        i++;
    }
    i=0;
    add--;
    while(i!=add){
        y=y+dir;
        a[y][x]=b[f];
        f++;
        i++;
    }
    dir=dir*(-1);
}
 
printf("\n");
for(i=0;i<n;i++){
    for(j=0;j<=n;j++){
        printf("%3d",a[i][j]);
    }
    printf("\n");
}
 
 
q=1;
for(i=0;i<n;i++){
    for(j=0;j<n;j++){
        if (poisk(a[i][j])==1) q++;
}
}
printf("\n");
printf("%d",q);
 
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2011, 19:40
Ответы с готовыми решениями:

Спираль Улама
Помогите пожалуйста, на языке си написать программу спираль Улама.Ввести рандомную матрицу и вместо...

Скатерть Улама - помогите доработать прогу :)
Есть код программы, но что-то не могу заставить его работать в Visual Studio 2008.. int...

Спираль
По введенным значениям n, m (1 ≤ n ≤ 20, 1 ≤ m ≤ 20) заполните массив размерностью n × m...

Рекурсия c ++ Спираль!
Здравствуйте! Помогите решить задачу! Используя рекурсию.... ...

1
23 / 13 / 47
Регистрация: 23.03.2013
Сообщений: 157
01.01.2015, 19:26 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
#include <stdio.h>
#include <stdlib.h>
 
 
short poisk(unsigned short d)
{
    register unsigned short i=2;
    for (; i<d/2; i++)
    {
        if (d%2==0)
            return 0;
    }
    return 1;
}
 
 
void Print_Arr(unsigned int** Arr, unsigned short n, unsigned short m)
{
    register unsigned short i=0,j;
 
    for(; i<n; i++)
    {
        for(j=0; j<m; j++)
        {
            printf("%3d",Arr[i][j]);
            printf("  ");
        }
        printf("\n\n");
    }
}
 
 
// Заполнить строку или столбец матрицы последовательными числами начиная со start_count.
// a - матрица
// is_row - true - заполнять строку, false - столбец
// col_or_row_num - номер строки или столбца, которые надо заполнить
// begin - начало строки или столбца
// end - конец строки или столбца
// start_count - с какого числа начинаем заполнение
int fill_col_or_row(int** a, short is_row, int col_or_row_num, int begin, int end, int start_count, short n)
{
    if ((start_count > n*n)||(start_count<=0))
        return start_count;
    int counter = start_count;
    end += (begin<end ? +1 : -1);
    int i;
    for(i=begin; i!=end; i+=(begin<end ? +1 : -1))
        if(is_row)
            a[col_or_row_num][i] = counter--;
        else
            a[i][col_or_row_num] = counter--;
    return counter;
}
 
// Заполнить матрицу возрастающими натуральными числами по спирали.
// Рекурсивное решение.
// a - матрица
// sphere - номер "витка" спирали в матрице (считаются от нуля), например:
//      0 0 0 0 0
//      0 1 1 1 0
//      0 1 2 1 0
//      0 1 1 1 0
//      0 0 0 0 0
// start_count - с какого числа начинать спираль
void build_spiral(int** a, int sphere, int start_count, unsigned short n)
{
    start_count = fill_col_or_row(a, 0, sphere, sphere, n-1-sphere, start_count,n);
    start_count = fill_col_or_row(a, 1, n-1-sphere, sphere+1, n-1-sphere, start_count,n);
    start_count = fill_col_or_row(a, 0, n-1-sphere, n-2-sphere, sphere, start_count,n);
    start_count = fill_col_or_row(a, 1, sphere, n-2-sphere, sphere+1, start_count,n);
    if (sphere < n/2) build_spiral(a, sphere+1, start_count,n);
    if(start_count==0)
        return;
}
 
int main()
{
    setlocale(0,"");
    register unsigned short i;
    int n;
    printf("Введите размер матрицы (установиться размер 2*n+1): ");
    scanf("%d",&n);
    n=2*n+1;
 
    int** Arr=(int**)malloc(sizeof(int*)*n);
    for(i=0; i<n; i++)
        Arr[i]=(int*)malloc(sizeof(int)*n);
 
    build_spiral(Arr,0,n*n,n);
    Print_Arr(Arr,n,n);
 
    free(Arr);
    return 0;
}
http://devwiki.beloblotskiy.co... D0%B8_2008
0
01.01.2015, 19:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2015, 19:26
Помогаю со студенческими работами здесь

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

Двойная спираль в C++
Нужно построить двумерный массив, с заполнением двойной спиралью. Самое сложное что сделать это...

Матрица-спираль
всем привет дано такое задание Написать и протестировать функцию MtrSpiral(n), формирующую...

Логарифмическая спираль
люди помогите плиз я в си++ совсем туп а мне задали в универе написать прогу которая строит...


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

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