Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
nik-nak
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 12
#1

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

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

Помогите найти ошибку.
Пытаюсь заставить программу выводить числа по спирали, замену простых чисел на значки не делал.
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 19:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Спираль Улама C++ (C++):

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

Скатерть Улама - помогите доработать прогу :) - C++
Есть код программы, но что-то не могу заставить его работать в Visual Studio 2008.. int simple(int n) { int i; int ret=1; ...

Рекурсия c ++ Спираль! - C++
Здравствуйте! Помогите решить задачу! Используя рекурсию.... http://s003.***********/i202/1110/9f/cbca2e936243.jpg

спираль архимеда - C++
Наткнулся на задачку, битый час голову ломаю, суть задачи такова, с++ построить спираль архимена из чисел формата 30 29 28 27 26 25 31...

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

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

1
Mycola
22 / 12 / 13
Регистрация: 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.com/inde...%BB%D0%B8_2008
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2015, 19:26
Привет! Вот еще темы с ответами:

Задачка, в c++, спираль архимеда - C++
пользователь вводит число n, необходимо построить спираль архимеда, квадратную, вот такого вида, через двухмерный массив. .. .. 9 2 1 8...

Построить гиперболическую спираль - C++
Здравствуйте. Задание следующее - построить гиперболическую спираль (r = a × j1/2 + d) в полярной системе координат. Дело в том, что я...

Спираль-Перевод(ОТЛАДКА) - C++
Здрасьте. не могу понять , почему при запуске проги на Codelite &gt; выводит ошибки постоянно . Суть программы , вывод квадратной матрицы...

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


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

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

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