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

Нарисовать параллелепипед с помощью звездочек - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.89
lesha1980
 Аватар для lesha1980
3 / 3 / 0
Регистрация: 06.01.2012
Сообщений: 42
07.01.2012, 21:39     Нарисовать параллелепипед с помощью звездочек #1
Подскажите как нарисовать параллелепипед с помощью звездочек и вывести его в консоль. Только простыми циклами без putchar и тому подобного. Я смог нарисовать лишь верхнюю и среднюю его половинки, а вот нижняя никак не хочет получаться. Когда рисую цепочку звездочек на боковой треугольник нижней части и пытаюсь после него продолжить фигуру прямоугольником, то в консоли получаю параллелограмм, который прилепился к цепочке гипотенузы треугольника, скашивающий общий вид параллелепипеда. В задаче известны параметры ширины, длины и высоты параллелепипеда. Их должен ввести пользователь, но не в этом суть, а суть в том, чтобы простыми средствами - вложенными циклами - нарисовать параллелепипед.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lesha1980
 Аватар для lesha1980
3 / 3 / 0
Регистрация: 06.01.2012
Сообщений: 42
08.01.2012, 23:55  [ТС]     Нарисовать параллелепипед с помощью звездочек #2
Странно, а что никто из 50 человек, просмотревших сообщение не знает как нарисовать параллелепипед простыми средствами? Тогда по какой причине нам задают такие задания в первый семестр обучения в академии, если даже уже состоявшиеся программисты не знают как это сделать?
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
09.01.2012, 00:43     Нарисовать параллелепипед с помощью звездочек #3
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
#include <iostream>
 
int main()
{
        for(int k = 0, space = 10; k < 10; k++, space--)
        {
                for(int i = 0; i < space; i++)
                        std::cout << ' ';
 
                if(!k || k == 9)
                        for(int i = 0; i < 20; i++)
                                std::cout << '*';
                else
                {
                        std::cout << '*';
 
                        for(int i = 0; i < 18; i++)
                                std::cout << ' ';
 
                        std::cout << '*';
                }
 
                std::cout << std::endl;
        }
 
        return 0;
}
TamTam
18 / 18 / 1
Регистрация: 28.12.2011
Сообщений: 176
09.01.2012, 01:00     Нарисовать параллелепипед с помощью звездочек #4
хах, ну и задание)) я бы вообще так сделала:
принт _**********
принт __**********
принт ___**********
lesha1980
 Аватар для lesha1980
3 / 3 / 0
Регистрация: 06.01.2012
Сообщений: 42
09.01.2012, 01:09  [ТС]     Нарисовать параллелепипед с помощью звездочек #5
Спасибо, конечно, за ответ, но параллелограмм я и сам нарисовал.

У меня так
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
#include <iostream>
using namespace std;
int main()
{
//объявляем переменную а-ширина параллелепипеда
//l-его длина, h- высота параллелепипеда
    int a,l,h,i,j,k;
//приглашаем пользователя ввести значения
    cout <<"Vedite dlinu ->";
    cin >>l;
    cout<<endl;
    cout <<"Vedite shirinu ->";
    cin >>a;
    cout <<endl;
    cout <<"Vedite visotu ->";
    cin >>h;
    cout <<endl;
//верхняя часть параллелепипеда
cout<<" ";
for(i=0;i<=l-1;i++)cout<<"*";
cout<<endl;
for(i=a-1;i>=0;i--)
{   
for(j=i;j<=a-1;j++)
{cout<<' ';
if(j==i)
{   
    cout<<"*";
   }
}
 
for(k=0;k<=l-1;k++)
{
   cout<<"*";
}
 
cout<<endl;
}
 
//средняя часть параллелепипеда
for(i=0;i<=h-a;i++)
{
  for(j=0;j<=a-1;j++)
  {
      
      if(j==1)cout<<"*";
      if((j<1)||(j>1)||(j<=a-2))cout<<" ";
  }
  for(k=0;k<=l;k++)
  {
      cout<<"*";
  }
  cout<<endl;
}
 
 
 
return 0;
}
Только вот нижней части не хватает, поэтому прошу подсказку

Добавлено через 4 минуты
Цитата Сообщение от TamTam Посмотреть сообщение
хах, ну и задание)) я бы вообще так сделала:
принт _**********
принт __**********
принт ___**********
Интересно, а это что за печать и на каком курсе академии это преподают?
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
09.01.2012, 01:16     Нарисовать параллелепипед с помощью звездочек #6
lesha1980,

Не по теме:

прошу прощения, прочитал параллелограмм вместо параллелепипеда. Долго без сна

lesha1980
 Аватар для lesha1980
3 / 3 / 0
Регистрация: 06.01.2012
Сообщений: 42
09.01.2012, 02:12  [ТС]     Нарисовать параллелепипед с помощью звездочек #7
Ага, ниче страшного....но все равно спасибо за ответ, вот только пока без результата, поэтому хотелось бы все же получить подсказку.., или на форуме взаимопомощь не в цене, а только за деньги или попросту продвинутые специ просто не в курсе как нарисовать параллелепипед?

Добавлено через 46 минут
Цитата Сообщение от R136a1 Посмотреть сообщение
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
#include <iostream>
 
int main()
{
        for(int k = 0, space = 10; k < 10; k++, space--)
        {
                for(int i = 0; i < space; i++)
                        std::cout << ' ';
 
                if(!k || k == 9)
                        for(int i = 0; i < 20; i++)
                                std::cout << '*';
                else
                {
                        std::cout << '*';
 
                        for(int i = 0; i < 18; i++)
                                std::cout << ' ';
 
                        std::cout << '*';
                }
 
                std::cout << std::endl;
        }
 
        return 0;
}

Хорошо, Просьба... У этого параллелограмма, что приведен в примере, выровняйте правую сторону - сделайте ее вертикальной, левую я и сам смогу перевернуть.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.01.2012, 11:24     Нарисовать параллелепипед с помощью звездочек #8
Как вариант можно составить формулы для расчета 3-х прямых, образующих параллелепипед. При отрисовке проверять принадлежность i и j данным прямым.
TamTam
18 / 18 / 1
Регистрация: 28.12.2011
Сообщений: 176
09.01.2012, 13:39     Нарисовать параллелепипед с помощью звездочек #9
lesha1980, Да никакая, собственно, это для примера и уже во сне)) И почему академии? Университета!))
brainfrog
 Аватар для brainfrog
4 / 4 / 0
Регистрация: 07.11.2011
Сообщений: 6
09.01.2012, 14:12     Нарисовать параллелепипед с помощью звездочек #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
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
#include <iostream>
 
int main()
{
    int height, width, length;
    std::cout << "Enter height: ";
    std::cin >> height;
    std::cout << "Enter width: ";
    std::cin >> width;
    std::cout << "Enter length: ";
    std::cin >> length;
 
    for(int i = 0; i < width/2; i++) // верхняя линия
        std::cout << ' ';
    for(int i = 0; i < length; i++)
        std::cout << '*';
 
    for(int i = 1; i < width/2; i++)
    {
        std::cout << std::endl;
        for(int j = 0; j < width/2 - i; j++)    // ширина
            std::cout << ' ';
        std::cout << '*';
        for(int j = 1; j < i; j++)      // высота
            std::cout << ' ';
        std::cout << '*';
        for(int j = 2; j < length/2; j++)   // пустота
            std::cout << ' ';
        for(int j = 0; j < length/2 - i; j++)   // ширина
            std::cout << ' ';
        std::cout << '*';
        for(int j = 1; j < i; j++)      // высота
            std::cout << ' ';
        std::cout << '*';
    }
    std::cout << std::endl;
    for(int i = 0; i < length; i++) // средняя линия
        std::cout << '*';
    for(int i = 1; i < width/2; i++)    // дорисовываем точку высоты
        std::cout << ' ';
    std::cout << '*';
 
    for(int i = 2; i < height/2; i++)
    {
        std::cout << std::endl;
        std::cout << '*';   // высота
        for(int j = 1; j < width/2; j++)    // высота
            std::cout << ' ';
        std::cout << '*';
        for(int j = 2; j < length - width/2; j++)   // высота
            std::cout << ' ';
        std::cout << '*';
        for(int j = 1; j < width/2; j++)    // высота
            std::cout << ' ';
        std::cout << '*';
    }
 
    std::cout << std::endl;
    std::cout << '*';
    for(int i = 1; i < width/2; i++)
        std::cout << ' ';
    for(int i = 0; i < length; i++) // нижняя линия
        std::cout << '*';
 
    for(int i = 0; i < width/2 - 1; i++)
    {
        std::cout << std::endl;
        std::cout << '*';   // высота
        for(int j = 2; j < width/2 - i; j++)    // ширина
            std::cout << ' ';
        std::cout << '*';
        for(int j = 1; j < length - width/2 + i; j++)   // пустота
            std::cout << ' ';
        std::cout << '*';
        for(int j = 2; j < width/2 - i; j++)   // ширина
            std::cout << ' ';
        std::cout << '*';
    }
    std::cout << std::endl;
    for(int i = 0; i < length; i++) // нижняя нижняя линия
        std::cout << '*';
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2012, 15:42     Нарисовать параллелепипед с помощью звездочек
Еще ссылки по теме:

Ввести длину и толщину креста и нарисовать его из звездочек C++
Нарисовать перевернутый треугольник из звездочек (цикл while) C++

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

Или воспользуйтесь поиском по форуму:
lesha1980
 Аватар для lesha1980
3 / 3 / 0
Регистрация: 06.01.2012
Сообщений: 42
09.01.2012, 15:42  [ТС]     Нарисовать параллелепипед с помощью звездочек #11
Цитата Сообщение от brainfrog Посмотреть сообщение
Нарисовал прямоугольный параллелепипед, искривлять лень
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
#include <iostream>
 
int main()
{
    int height, width, length;
    std::cout << "Enter height: ";
    std::cin >> height;
    std::cout << "Enter width: ";
    std::cin >> width;
    std::cout << "Enter length: ";
    std::cin >> length;
 
    for(int i = 0; i < width/2; i++) // верхняя линия
        std::cout << ' ';
    for(int i = 0; i < length; i++)
        std::cout << '*';
 
    for(int i = 1; i < width/2; i++)
    {
        std::cout << std::endl;
        for(int j = 0; j < width/2 - i; j++)    // ширина
            std::cout << ' ';
        std::cout << '*';
        for(int j = 1; j < i; j++)      // высота
            std::cout << ' ';
        std::cout << '*';
        for(int j = 2; j < length/2; j++)   // пустота
            std::cout << ' ';
        for(int j = 0; j < length/2 - i; j++)   // ширина
            std::cout << ' ';
        std::cout << '*';
        for(int j = 1; j < i; j++)      // высота
            std::cout << ' ';
        std::cout << '*';
    }
    std::cout << std::endl;
    for(int i = 0; i < length; i++) // средняя линия
        std::cout << '*';
    for(int i = 1; i < width/2; i++)    // дорисовываем точку высоты
        std::cout << ' ';
    std::cout << '*';
 
    for(int i = 2; i < height/2; i++)
    {
        std::cout << std::endl;
        std::cout << '*';   // высота
        for(int j = 1; j < width/2; j++)    // высота
            std::cout << ' ';
        std::cout << '*';
        for(int j = 2; j < length - width/2; j++)   // высота
            std::cout << ' ';
        std::cout << '*';
        for(int j = 1; j < width/2; j++)    // высота
            std::cout << ' ';
        std::cout << '*';
    }
 
    std::cout << std::endl;
    std::cout << '*';
    for(int i = 1; i < width/2; i++)
        std::cout << ' ';
    for(int i = 0; i < length; i++) // нижняя линия
        std::cout << '*';
 
    for(int i = 0; i < width/2 - 1; i++)
    {
        std::cout << std::endl;
        std::cout << '*';   // высота
        for(int j = 2; j < width/2 - i; j++)    // ширина
            std::cout << ' ';
        std::cout << '*';
        for(int j = 1; j < length - width/2 + i; j++)   // пустота
            std::cout << ' ';
        std::cout << '*';
        for(int j = 2; j < width/2 - i; j++)   // ширина
            std::cout << ' ';
        std::cout << '*';
    }
    std::cout << std::endl;
    for(int i = 0; i < length; i++) // нижняя нижняя линия
        std::cout << '*';
    return 0;
}
Да, суперкласс.... Спасибо!Попробую подойти с этой стороны, а то я прорисовывал вверху целую фигуру и вниз затем пытался тянуть в виде прямоугольника со скошенной линией в завершение параллелепипеда...

Добавлено через 2 минуты
Цитата Сообщение от TamTam Посмотреть сообщение
lesha1980, Да никакая, собственно, это для примера и уже во сне)) И почему академии? Университета!))
А так просто интересней хоть во втором университете...
Yandex
Объявления
09.01.2012, 15:42     Нарисовать параллелепипед с помощью звездочек
Ответ Создать тему
Опции темы

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