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

Вывести в консоль круг звездочками - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.81
kowandser
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 50
06.12.2010, 23:02     Вывести в консоль круг звездочками #1
Как создать круг и вывести его в консоли (звёздочками)?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
06.12.2010, 23:07     Вывести в консоль круг звездочками #2
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main(){
  std::cout << "         ***        \n";
  std::cout << "       *******      \n";
  std::cout << "      *********     \n";
  std::cout << "      *********     \n";
  std::cout << "       *******      \n";
  std::cout << "         ***        \n";
}
kowandser
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 50
06.12.2010, 23:11  [ТС]     Вывести в консоль круг звездочками #3
Цитата Сообщение от alex_x_x Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main(){
  std::cout << "         ***        \n";
  std::cout << "       *******      \n";
  std::cout << "      *********     \n";
  std::cout << "      *********     \n";
  std::cout << "       *******      \n";
  std::cout << "         ***        \n";
}
Я ввожу радиус круга, а в консоли выводиться круг (звёздочками по контуру).
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
06.12.2010, 23:52     Вывести в консоль круг звездочками #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstdlib>
#include <cmath>
 
int main(){
  unsigned n;
  size_t R;
  size_t N;
  double di;
  std::cout << "Enter R: ";
  std::cin >> R;
  N = 2*R;
  di = 1.0/R;
  for( int i=int(R);i>=-int(R);--i ){
    n = static_cast<int>(cos(asin(di*abs(int(i))))*R);
    for( unsigned j=0;j<=R-n;++j ) std::cout << "*";
    for( unsigned j=0;j<=2*n;++j ) std::cout << " ";
    for( unsigned j=0;j<=R-n;++j ) std::cout << "*";
    std::cout << std::endl;
  }
}
kowandser
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 50
06.12.2010, 23:58  [ТС]     Вывести в консоль круг звездочками #5
Цитата Сообщение от alex_x_x Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstdlib>
#include <cmath>
 
int main(){
  unsigned n;
  size_t R;
  size_t N;
  double di;
  std::cout << "Enter R: ";
  std::cin >> R;
  N = 2*R;
  di = 1.0/R;
  for( int i=int(R);i>=-int(R);--i ){
    n = static_cast<int>(cos(asin(di*abs(int(i))))*R);
    for( unsigned j=0;j<=R-n;++j ) std::cout << "*";
    for( unsigned j=0;j<=2*n;++j ) std::cout << " ";
    for( unsigned j=0;j<=R-n;++j ) std::cout << "*";
    std::cout << std::endl;
  }
}
конечно спасибо, но слишком много звёздочек. Надо чтобы они просто по контуру были
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
06.12.2010, 23:59     Вывести в консоль круг звездочками #6
кароче, сразу задание надо было нормально ставить
может кто приделает, а то лень
kowandser
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 50
07.12.2010, 00:02  [ТС]     Вывести в консоль круг звездочками #7
Цитата Сообщение от alex_x_x Посмотреть сообщение
кароче, сразу задание надо было нормально ставить
может кто приделает, а то лень
В цитате было указано - ПО КОНТУРУ
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
07.12.2010, 00:08     Вывести в консоль круг звездочками #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstdlib>
#include <cmath>
 
int main(){
  unsigned n;
  size_t R;
  size_t N;
  double di;
  std::cout << "Enter R: \n";
  std::cin >> R;
  N = 2*R;
  di = 1.0/R;
  for( int i=int(R);i>=-int(R);--i ){
    n = static_cast<int>(cos(asin(di*abs(int(i))))*R);
    for( unsigned j=0;j<=R-n;++j ) std::cout << " ";
    std::cout << "*";
    for( unsigned j=0;j<2*n;++j ) std::cout << " ";
    std::cout << "*\n";
  }
}
kowandser
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 50
07.12.2010, 00:15  [ТС]     Вывести в консоль круг звездочками #9
Цитата Сообщение от alex_x_x Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstdlib>
#include <cmath>
 
int main(){
  unsigned n;
  size_t R;
  size_t N;
  double di;
  std::cout << "Enter R: \n";
  std::cin >> R;
  N = 2*R;
  di = 1.0/R;
  for( int i=int(R);i>=-int(R);--i ){
    n = static_cast<int>(cos(asin(di*abs(int(i))))*R);
    for( unsigned j=0;j<=R-n;++j ) std::cout << " ";
    std::cout << "*";
    for( unsigned j=0;j<2*n;++j ) std::cout << " ";
    std::cout << "*\n";
  }
}
Объясни, если не сложно, 15-ю строчку (подробнее если можно). Спасибо.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
07.12.2010, 00:19     Вывести в консоль круг звездочками #10
Цитата Сообщение от kowandser Посмотреть сообщение
n = static_cast<int>(cos(asin(di*abs(int(i))))*R);
волшебство, не меньше, ок
di * i - велечина по y, берем от него arcsin, чтобы узнать на каком углу относительно pi/2 точка окружности, берем от него cos, чтобы узнать значение точки по x
abs просто прикрутка, чтобы два раза цикл не писать
kowandser
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 50
07.12.2010, 00:25  [ТС]     Вывести в консоль круг звездочками #11
Цитата Сообщение от kowandser Посмотреть сообщение
static_cast<int>
Для чего ето?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
07.12.2010, 00:29     Вывести в консоль круг звездочками #12
преобразование к инту
artprooo
Сообщений: n/a
28.02.2013, 18:17     Вывести в консоль круг звездочками #13
блин это не круг ты пробывал ввести R=50

Добавлено через 12 минут
блин и это круг как бутто ДЦПешник какойто рисовал
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11840 / 6819 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
01.03.2013, 09:52     Вывести в консоль круг звездочками #14
Цитата Сообщение от artprooo Посмотреть сообщение
блин это не круг ты пробывал ввести R=50
блин, это ширины консоли не хватает. Буфер расширить не пробовали?
Цитата Сообщение от artprooo Посмотреть сообщение
блин и это круг как бутто ДЦПешник какойто рисовал
Тоже самое будет, если деревянный дом из кирпичей собирать. пробовали так делать?
Это же символы в консоли, а не точки в Paint.
Нужен более точный круг - учитывайте при выводе соотношение метрики шрифта.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2013, 14:57     Вывести в консоль круг звездочками
Еще ссылки по теме:

Вывести звездочками заданное изображение C++
Вывести дерево в консоль C++
C++ Вывести числа из потоков в консоль

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

Или воспользуйтесь поиском по форуму:
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
01.03.2013, 14:57     Вывести в консоль круг звездочками #15
Цитата Сообщение от Croessmah Посмотреть сообщение
учитывайте при выводе соотношение метрики шрифта.
да, думаю это изза соотношения ширина/высота символа моноширинного шрифта
вообще лень смотреть, теме третий год
Yandex
Объявления
01.03.2013, 14:57     Вывести в консоль круг звездочками
Ответ Создать тему
Опции темы

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