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

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

09.09.2011, 19:40. Показов 6172. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.09.2011, 19:40
Ответы с готовыми решениями:

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

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

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

1
23 / 13 / 47
Регистрация: 23.03.2013
Сообщений: 157
01.01.2015, 19:26
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.01.2015, 19:26
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru