Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Описать функцию MIN (x) для определения минимального элемента вектора http://www.cyberforum.ru/cpp-beginners/thread349766.html
Есть такое задание:Описать функцию MIN(x) для определения минимального элемента вектора X, введя дополнительную рекурсивную функциюMIN1(X),находящую минимум среди последних элементов вектора X,начиная с К-го.Кто понял о чем речь?поясните плиз
C++ Вместо введенных пользователем чисел выводить звездочки Привет всем, вообще такая проблема:нужно написать программу которая будет вместо введенных пользователем чисел, выводить* 5=***** что то типа того! http://www.cyberforum.ru/cpp-beginners/thread349759.html
C++ Find из string.h
Расскажите про функцию find из библиотеки строк. Не получается использовать, и какое значение она выдает, если в строке подстроки не оказалось? Не посылайте на другие сайты
C++ Класс "Атлет"
Правильно ли так записывать класс? *.cpp #include <iostream.h> #include <fstream.h> #include <string.h> #include <stdlib.h> #include <iomanip.h> #include <conio.h> #include <structf.h>
C++ Чтение файла с нестандартным расширнием http://www.cyberforum.ru/cpp-beginners/thread349735.html
Допустим, у меня есть файл с некоторым расширением .xyz В файле записаны числа, много (около семи тысяч) Мне нужно их считать и вывести на экран или в текстовый файл (.txt) в определенном формате (таблица) Формат строки вывода: short x3; short x3; short x3; short x3; short x1; long x1; bool x1 Проблема заключается в том что компилятор не дает мне считать переменную типа bool. А так же в...
C++ Посимвольное сравнений чисел. Здравствуйте! Подскажите, как решить следующую задачу. Требуется посимвольно сравнить символы. Подсчитать в строке количество нулей и единиц. Заранее благодарен, за помощь. #include <iostream> #include <conio.h> #include <cstring> #include <cstdio> подробнее

Показать сообщение отдельно
Mycola
22 / 12 / 13
Регистрация: 23.03.2013
Сообщений: 157
01.01.2015, 19:26     Спираль Улама 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
#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
 
Текущее время: 22:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru