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

Построить Х из * - C++

Восстановить пароль Регистрация
 
Джирайя
3 / 3 / 0
Регистрация: 20.04.2010
Сообщений: 64
01.05.2010, 14:20     Построить Х из * #1
Добый день господа программисты! Пожалуста, помогите решить задачу... у меня нет даже малейшей идеи как ее решить
Собственно, задача такая: Необходимо построить из * букву Х, причем если введена цифра 1, то просто построить из * Х, если 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
Ввод: 1
Вывод:
* *
 * 
* *
 
Ввод: 2
Вывод:
* *     * *
 *       *
* *     * *
    * *
     *
    * *
* *    * *
 *      *
* *    * *
 
Ввод: 3
Вывод:
* *     * *              * *     * *
 *       *                *       *
* *     * *              * *     * *
    * *                      * *
     *                        *
    * *                      * *
* *    * *               * *     * *
 *      *                 *       *
* *    * *               * *     * *
            * *     * *
             *       *
            * *     * *
                * *
                 *
                * *
            * *     * *
             *       *
            * *     * *
* *     * *              * *     * *
 *       *                *       *
* *     * *              * *     * *
    * *                      * *
     *                        *
    * *                      * *
* *    * *               * *     * *
 *      *                 *       *
* *    * *               * *     * *
На 4 думаю уже не хватит монитора)) надеюсь понятно объяснил
Помогите пожалуста решить эту задачу! 3ий день сижу никаких идей нет
Программа должна быть на языке Си и решатся с помощью рекурсии!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2010, 14:20     Построить Х из *
Посмотрите здесь:

Построить сечение C++
Построить граф C++
C++ Построить рисунок
C++ Построить последовательность
C++ Построить график
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
01.05.2010, 14:25     Построить Х из * #2
думаю енто с рекурсией связанно.....но как звездочку писать....ээ...если только по таблице символов....хм...нинаю прям)
Джирайя
3 / 3 / 0
Регистрация: 20.04.2010
Сообщений: 64
02.05.2010, 12:10  [ТС]     Построить Х из * #3
Нам сказали что можно делать с рекурсией, можно и без. У меня ни так ни сяк не получается

Добавлено через 21 час 29 минут
Неужели никто не знает как это решить? это задачка первого курса (((
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
02.05.2010, 12:22     Построить Х из * #4
Цитата Сообщение от Джирайя Посмотреть сообщение
Неужели никто не знает как это решить?
знаем.
поскольку задачка первого курса, то решалась на этом форуме неоднократно.
воспользуйтесь кнопкой "поиск".
Джирайя
3 / 3 / 0
Регистрация: 20.04.2010
Сообщений: 64
02.05.2010, 15:54  [ТС]     Построить Х из * #5
Я конешноже искал!! Но ничего не нашел! Как видите я задание то струдом сформулировал)
Если вы знаете что была уже такая тема, не могли бы дать ссылку на нее, или хотябы ключевые слова для поиска!
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
02.05.2010, 16:01     Построить Х из * #6
да я и искать не буду.
мне-то подумать не лень, если что...

ты что, цикл не можешь сделать?
перебрать числа от 1 до 9; для всех нечетных вывести '*', для четных - ' '; для каждого третьего - сделать перевод строки.
и будет тебе 'X' из '*'.
Джирайя
3 / 3 / 0
Регистрация: 20.04.2010
Сообщений: 64
02.05.2010, 16:27  [ТС]     Построить Х из * #7
Это то понятно, но это самый простой случай, который построит просто Х... но как сделать чтобы он строил более большие, как я показывал, и чтобы велечина зависила только от введеного числа... вот чего я никак не могу понять... как сделать такой цикл... у меня нет никаких идей даже(((
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
Ввод: 1
Вывод:
* *
 * 
* *
 
Ввод: 2
Вывод:
* *     * *
 *       *
* *     * *
    * *
     *
    * *
* *    * *
 *      *
* *    * *
 
Ввод: 3
Вывод:
* *     * *              * *     * *
 *       *                *       *
* *     * *              * *     * *
    * *                      * *
     *                        *
    * *                      * *
* *    * *               * *     * *
 *      *                 *       *
* *    * *               * *     * *
            * *     * *
             *       *
            * *     * *
                * *
                 *
                * *
            * *     * *
             *       *
            * *     * *
* *     * *              * *     * *
 *       *                *       *
* *     * *              * *     * *
    * *                      * *
     *                        *
    * *                      * *
* *    * *               * *     * *
 *      *                 *       *
* *    * *               * *     * *
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
02.05.2010, 16:43     Построить Х из * #8
Цитата Сообщение от Джирайя Посмотреть сообщение
но как сделать чтобы он строил более большие, как я показывал, и чтобы велечина зависила только от введеного числа... вот чего я никак не могу понять... как сделать такой цикл...
а цикл тот-же самый. это-же рекурсия.
оформляешь алгоритм рисования звездочки в виде функции,
делаешь вывод данные не сразу на экран, а в специальный массив строк(или символов),
в качестве одного из параметров передаешь функции уровень вложенности(то самое N, которое вводится)
и после определения четное число или нет проверяешь, равен ли уровень вложенности 1.
если равен - выводишь данные в массив, если не равен - вызываешь рекурсивно функцию с N = N-1

а по последнему выходу из этой функции, выводишь массив на экран.
Джирайя
3 / 3 / 0
Регистрация: 20.04.2010
Сообщений: 64
02.05.2010, 20:18  [ТС]     Построить Х из * #9
Спасибо за подсказки! но они не помогли весь день сижу ничего не получается... я на грани истерики завтра сдавать
Извините что прошу, не мог бы ктонить написать эту программу?( я сам наверно никада не смогу..(((
Alip
53 / 32 / 3
Регистрация: 10.03.2010
Сообщений: 85
02.05.2010, 20:45     Построить Х из * #10
Джирайя, отставить истерику. Вот решение твоей задачки.
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
void draw(char * mas, int level, int x, int y, int len)
{
    int i;
    if (level==1)
    {
        mas[y*len+x]=mas[y*len+x+2]=mas[(y+1)*len+x+1]=mas[(y+2)*len+x]=mas[(y+2)*len+x+2]='*';
    }
    else
    {
        for (i=0; i<5; i++)
            switch (i)
            {
                case 0: draw(mas, level-1, x, y, len);
                break;
                case 1: draw(mas, level-1, x+2*pow(3, level-1), y, len);
                break;
                case 2: draw(mas, level-1, x+pow(3, level-1), y+pow(3, level-1), len);
                break;
                case 3: draw(mas, level-1, x, y+2*pow(3, level-1), len);
                break;
                case 4: draw(mas, level-1, x+2*pow(3, level-1), y+2*pow(3, level-1), len);
                break;
            }
    }
}
 
int main()
{
    char * zvez;
    int num, raz, len;
    cout << "Input number: ";
    cin >> num;
    len=pow(3, num);
    raz=len*len;
    zvez=new char[raz];
    for (int i=0; i<raz; i++)
        zvez[i]=' ';
    draw(zvez, num, 0, 0, len);
    for (int i=0; i<len; i++)
    {
        for (int j=0; j<len; j++)
            cout << zvez[j*len+i];
        cout << endl;
    }
}
Джирайя
3 / 3 / 0
Регистрация: 20.04.2010
Сообщений: 64
02.05.2010, 21:22  [ТС]     Построить Х из * #11
Спасибо большое! Ты меня очень выручил!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2010, 21:23     Построить Х из *
Еще ссылки по теме:

Построить график C++
Построить график C++
C++ Построить график в С++

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

Или воспользуйтесь поиском по форуму:
Alip
53 / 32 / 3
Регистрация: 10.03.2010
Сообщений: 85
02.05.2010, 21:23     Построить Х из * #12
Прошу прощения. Не заметил, что на Си. Чуток исправлений и вот она уже на Си.
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>
#include <math.h>
 
void draw(char * mas, int level, int x, int y, int len)
{
    int i;
    if (level==1)
    {
        mas[y*len+x]=mas[y*len+x+2]=mas[(y+1)*len+x+1]=mas[(y+2)*len+x]=mas[(y+2)*len+x+2]='*';
    }
    else
    {
        for (i=0; i<5; i++)
            switch (i)
            {
                case 0: draw(mas, level-1, x, y, len);
                break;
                case 1: draw(mas, level-1, x+2*pow(3, level-1), y, len);
                break;
                case 2: draw(mas, level-1, x+pow(3, level-1), y+pow(3, level-1), len);
                break;
                case 3: draw(mas, level-1, x, y+2*pow(3, level-1), len);
                break;
                case 4: draw(mas, level-1, x+2*pow(3, level-1), y+2*pow(3, level-1), len);
                break;
            }
    }
}
 
int main()
{
    char * zvez;
    int num, raz, len;
    int i, j;
    printf("Input number: ");
    scanf("%d", &num);
    len=pow(3, num);
    raz=len*len;
    zvez=malloc(sizeof(char)*raz);
    for (i=0; i<raz; i++)
        zvez[i]=' ';
    draw(zvez, num, 0, 0, len);
    for (i=0; i<len; i++)
    {
        for (j=0; j<len; j++)
            printf("%c", zvez[j*len+i]);
        printf("\n");
    }
    return 0;
}
Yandex
Объявления
02.05.2010, 21:23     Построить Х из *
Ответ Создать тему
Опции темы

Текущее время: 11:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru