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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
kazseo
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
#1

Рекурсия c ++ Спираль! - C++

25.10.2011, 20:26. Просмотров 1265. Ответов 6
Метки нет (Все метки)

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

[img]http://s003.***********/i202/1110/9f/cbca2e936243.jpg[/img]
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2011, 20:26     Рекурсия c ++ Спираль!
Посмотрите здесь:

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

Спираль Улама C++ - C++
Помогите найти ошибку. Пытаюсь заставить программу выводить числа по спирали, замену простых чисел на значки не делал. #include...

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
6960 / 4131 / 586
Регистрация: 29.11.2010
Сообщений: 10,956
25.10.2011, 20:42     Рекурсия c ++ Спираль! #2
Делал это спустя 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
//Ïîëó÷èòü öåëî÷èñëåГ*Г*ГіГѕ ГЄГўГ*äðГ*ГІГ*ГіГѕ Г¬Г*òðèöó Г°Г*çìåðГ*îñòüþ NГµN, 
//ýëåìåГ*ГІГ*ìè êîòîðîé ÿâëÿþòñÿ Г·ГЁГ±Г«Г* 1, 2, … N^2, 
//Г°Г*ñïîëîæåГ*Г*ûå Гў Г¬Г*òðèöå ГЇГ® Г±ГЇГЁГ°Г*ëè.
#include<iostream>
#include<conio.h>
#include<clocale>
#include<iomanip>
#include<math.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int m[100][100],x=0,y=0,n=1,N,N1,i=1,j=1,nach=1,qwerty;
    cout<<"Ââåäèòå N: ";
    cin>>N;
    N1=N;
    // ГЁГ*èöèГ*ëèçГ*öèÿ
    if(N==1) // åñëè Г°Г*çìåð Г¬Г*òðèöû 1 - âûâåñòè ГҐГЈГ® (ГЁГ*Г*Г·ГҐ N=0)
    cout<<N;
    else {   
    for(;N>1;N--,nach++)
    {
                        if(m[x][y]==0){ // öåГ*ГІГ° (ГґГЁГЄГ± ГЎГ*ГЈГ* Г± 0)
                        m[x][y]=n;
                        }
                        if(x==nach-1&&y==nach-1) // äâèæåìñÿ ------------>>>>>
                        {
                        for(i=nach,x=nach,y=nach;i<N;i++)
                        {
                        m[x][y]=n;
                        x++;
                        n++;
                        }
                  }           
            if(x==N&&y==nach) // äâèæåìñÿ ГўГ*ГЁГ§
            {
                    for(j=nach;j<N;j++)
                    {
                    m[x][y]=n;
                    y++;
                    n++;                
                    }
            }
            if(x==N&&y==N) // äâèæåìñÿ <<<<---------------
            {
                          for(i=N;i>nach;i--)
                          {
                          m[x][y]=n;
                          x--;
                          n++;
                          }
            }
            if(x==nach&&y==N) // äâèæåìñÿ ââåðõ, Г*ГҐ äîõîäÿ ГЇГ® y 1, 
            {                 // Г¤Г*ГЎГ» Г*ГҐ ïðèéòè Гў ïðîøëóþ òî÷êó
                    for(j=N;j>nach;j--)
                    {
                    m[x][y]=n;
                    y--;
                    n++;
                   }
            } 
    }
    if(n<=99&&n>=9) // ÷òîáû áûëî ГЄГ°Г*Г±ГЁГўГ® (setw)
    qwerty=2;
    else if(n>=99) 
    qwerty=3;
    
    for(x=1,y=1;y<=N1;x++){ // âûâîä Г*Г* ГЅГЄГ°Г*Г*
    cout<<setw(qwerty)<<m[x][y]<<" ";
    if(x==N1){
              cout<<endl;
              x=0;
              y++;
              }
        }
    }
    getch();
    return 0;
}
kazseo
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 13
25.10.2011, 20:48  [ТС]     Рекурсия c ++ Спираль! #3
через какую книгу учили чтобы так быстро научиться кодить посоветуйте!
Navern
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
25.10.2011, 20:52     Рекурсия c ++ Спираль! #4
Цитата Сообщение от kazseo Посмотреть сообщение
через какую книгу учили чтобы так быстро научиться кодить посоветуйте!
Я предполагаю, что человек уже до этого учил какой-то язык. А может и не один. Тогда по аналогии новый язык гораздо быстрее учится. Особенно если не затрагивать как таковую реализацию ООП.

Кстати его вариант ни разу не рекурсивный, что является условием задачи.
MrGluck
Модератор
Эксперт CЭксперт С++
6960 / 4131 / 586
Регистрация: 29.11.2010
Сообщений: 10,956
25.10.2011, 20:58     Рекурсия c ++ Спираль! #5
Цитата Сообщение от Navern Посмотреть сообщение
Я предполагаю, что человек уже до этого учил какой-то язык. А может и не один. Тогда по аналогии новый язык гораздо быстрее учится. Особенно если не затрагивать как таковую реализацию ООП.

Кстати его вариант ни разу не рекурсивный, что является условием задачи.
Языков программирования я до этого не проходил. Просто когда появилась возможность изучать, стал посвещать этому все свое время.
Да, вы правы, мой вариант к сожалению не рекурсивный, я не до конца прочитал условие.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
26.10.2011, 00:03     Рекурсия c ++ Спираль! #6
с рекурсией
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
#include <stdio.h>
#include <stdlib.h>
 
void recursive(int **arr, int order,
    int pos, int val);
 
int main()
{
    int **arr, order = 1;
    int i, j;
 
    while (printf("\nenter an order or 0 to exit: ") && scanf("%d", &order)
            && order > 0) 
    {
        arr = (int **) malloc(order * sizeof(int *));
        for (i = 0; i < order; i++)
            arr[i] = (int *) malloc(order * sizeof(int));
 
        recursive(arr, order, 0, 1);
 
        putchar('\n');
        for (i = 0; i < order; i++) {
            for (j = 0; j < order; j++)
                printf("%3d", arr[i][j]);
            putchar('\n');
            free(arr[i]);
        }
        free(arr);
    }
    return 0;
}
 
void recursive(int **arr, int ord, int pos, int val)
{
    int i, j;
 
    if (pos < ord / 2 + (ord & 1 ? 1 : 0)) {
        for (j = pos; j < ord - pos; j++) 
            arr[pos][j] = val++;
        j -= 2;
        for (i = pos + 1; i < ord - pos; i++)
            arr[i][ord - pos - 1] = val++;
        i--;
        for ( ; j >= pos; j--)
            arr[i][j] = val++;
        j++;
        for (i--; i >= pos + 1; i--)
            arr[i][j] = val++;
        recursive(arr, ord, pos + 1, val);
    } 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2011, 00:16     Рекурсия c ++ Спираль!
Еще ссылки по теме:

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

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

Развернуть матрицу, как спираль, в линейный массив - C++
Дана квадратная матрица, она заполняется рандомно и выносится на экран. Требуется преобразовать эту матрицу в линейный массив, начиная...

Прототип графического редактора, как переделать спираль с переменным шагом - C++
struct TSpiral: public TPoint { double a,da,r,a3;// а - кол-во витков; da - скорость закручивания; r - радиус TSpiral (int...

)Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2<=N<=100).Не допускается начинать спираль в ином,кроме верхнего - C++
1)Вывести квадрат,состоящий из N x N клеток, заполненных числами от до N^2 по спирали(2&lt;=N&lt;=100).Не допускается начинать спираль в...


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

Или воспользуйтесь поиском по форуму:
Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
26.10.2011, 00:16     Рекурсия c ++ Спираль! #7
Цитата Сообщение от kazseo Посмотреть сообщение
через какую книгу учили чтобы так быстро научиться кодить посоветуйте!
Тут не только книги, но и опыт нужен
Yandex
Объявления
26.10.2011, 00:16     Рекурсия c ++ Спираль!
Ответ Создать тему
Опции темы

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