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

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

Войти
Регистрация
Восстановить пароль
 
Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
#1

Задача с выводом в командную строку - C++

05.02.2013, 16:38. Просмотров 873. Ответов 14
Метки нет (Все метки)

Попросили помочь с решением задачек по С++. По одной из них возникло недопонимание. Условие задачи:

"Написать функцию, которая выводит на середину экрана созвездие Большой Медведицы (необходимо использовать 7 символов *)."

Задача для командной строки. Недопонимание на счёт вывода на середину экрана... Т.е. как бы не изменял размеры командной строки, медвидеца всегда должна быть в середине командной строки? Так можно сделать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2013, 16:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача с выводом в командную строку (C++):

Есть задача. Нужно запустить её через командную строку - C++
Люди, подскажите что нужно добавить/вписать в задачке, чтобы при открытии её в командной строке она там же и исполнялась. Если...

Как используя командную строку ввести символьную строку? - C++
Как используя командную строку ввести символьную строку?

Вставка изображений в командную строку - C++
Ребят, помогите, мне надо реализовать вставку изображений в командную строку, а также интересует вставка анимации, если такое возможно..Я...

Как запустить командную строку в VS 6? - C++
На самом деле не только про это хочу спросить, просто если бы назвал тему "помогите, есть пара вопросов", это выглядело бы глупо... ...

Считать из файла и вывести в командную строку - C++
Доброго времени суток. Бьюсь уже неделю как это сделать, так что помогите, пожалуйста. Нужно считать из файла, в котором находится таблица:...

Передача символов через командную строку - C++
Доброго времени суток! Прошу помочь мне с решением данной задачи: Через командную строку передать два символа. Распечатать символ с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Alli_Lupin
178 / 164 / 14
Регистрация: 29.01.2013
Сообщений: 1,274
Завершенные тесты: 1
05.02.2013, 17:04 #2
можно, но сильно сомневаюсь, что вам надо сделать именно это, ибо задачка нетривиальная и тянет как минимум на курсовую
0
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
05.02.2013, 17:24 #3
Цитата Сообщение от Alli_Lupin Посмотреть сообщение
задачка нетривиальная и тянет как минимум на курсовую
На "курсовую" 9-го класса максимум. Только в C++ стандартных функций для таких целей нет. Вот, например, для Windows.
0
Alli_Lupin
178 / 164 / 14
Регистрация: 29.01.2013
Сообщений: 1,274
Завершенные тесты: 1
05.02.2013, 17:30 #4
Somebody, видимо, мы поразному видим решение этой задачи. я планировал через WinAPI, а вы?
0
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
05.02.2013, 17:40 #5
Цитата Сообщение от Alli_Lupin Посмотреть сообщение
я планировал через WinAPI, а вы?
Я тоже.
0
Alli_Lupin
05.02.2013, 17:44
  #6

Не по теме:

Somebody, вы действительно считаете, что снятие параметров с консольного окна и перестроение картинки в консоли - задача школьного уровня? (не новичка в программировании, а именно школьника)

0
Catstail
Модератор
22616 / 10977 / 1779
Регистрация: 12.02.2012
Сообщений: 18,121
05.02.2013, 17:53 #7
Зачем winApi? Рассмотрим экран, как массив символов 80*25. Чистим экран, в нужные позиции выводим звездочки. Все.
0
Alli_Lupin
178 / 164 / 14
Регистрация: 29.01.2013
Сообщений: 1,274
Завершенные тесты: 1
05.02.2013, 17:55 #8
Цитата Сообщение от Catstail Посмотреть сообщение
Зачем winApi? Рассмотрим экран, как массив символов 80*25. Чистим экран, в нужные позиции выводим звездочки. Все.
именно это, мне кажется, и требуется
0
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
05.02.2013, 18:00 #9

Не по теме:

Цитата Сообщение от Alli_Lupin Посмотреть сообщение
Somebody, вы действительно считаете, что снятие параметров с консольного окна и перестроение картинки в консоли - задача школьного уровня? (не новичка в программировании, а именно школьника)
Может быть и нет... Просто у нас в школе с информатикой и программированием всё было хорошо, так что у меня понятия "новичок в программировании" и "школьник" воспринимаются как нечто общее.



Добавлено через 44 секунды
Цитата Сообщение от Catstail Посмотреть сообщение
Рассмотрим экран, как массив символов 80*25.
Так по условию размер окна вроде может изменяться.
0
Alli_Lupin
178 / 164 / 14
Регистрация: 29.01.2013
Сообщений: 1,274
Завершенные тесты: 1
05.02.2013, 18:02 #10
Fooly, требуется описание ситуации: это ДЗ, лабораторная, курсовая? Школа, Колледж, ВУЗ?
0
Catstail
Модератор
22616 / 10977 / 1779
Регистрация: 12.02.2012
Сообщений: 18,121
05.02.2013, 18:58 #11
Цитата Сообщение от Somebody Посмотреть сообщение
Так по условию размер окна вроде может изменяться.
- но меньше он вряд ли будет...
0
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
05.02.2013, 20:57 #12
Цитата Сообщение от Catstail Посмотреть сообщение
- но меньше он вряд ли будет...
Так вывести надо в центре, а центр может в разных местах, в зависимости от размера.
0
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
06.02.2013, 10:14 #13
Цитата Сообщение от Somebody Посмотреть сообщение
Так вывести надо в центре, а центр может в разных местах, в зависимости от размера.
Ну так есть же GetConsoleScreenBufferInfo (в windows)
пересчитываем координаты и всё.

Добавлено через 2 минуты
Цитата Сообщение от Alli_Lupin Посмотреть сообщение
ибо задачка нетривиальная и тянет как минимум на курсовую
каким образом? Из-за двух, трех формул, две из которых bufx/2 и bufy/2 ?
1
Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
06.02.2013, 10:47  [ТС] #14
Цитата Сообщение от Alli_Lupin Посмотреть сообщение
Fooly, требуется описание ситуации: это ДЗ, лабораторная, курсовая? Школа, Колледж, ВУЗ?
Задачка из ВУЗа.

На счёт изменения экрана - возможно я ошибаюсь. Условие я вначале написал, и вероятно, что я просто сам напридумывал и усложнил задачу. Вообще в задачках условия непонятные, т.е у меня возникает много вопросов, спросить и учточнить не получилось.
Просто осуществить вывод в середину экрана труда большого не составило, думаю так хватит =) Если же не понравится задача преподу и окажется, что надо подкорректировать под изменения размеров командной строки, тогда уже разбираться буду. Спасибо всем =)
0
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
06.02.2013, 11:16 #15
Криворукий код:
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
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <cstdlib>
#include <ctime>
int main(){
    srand(time(NULL));
    RECT rw;
    GetWindowRect(GetConsoleWindow(),&rw);
    MoveWindow(GetConsoleWindow(),0,0,rw.right-rw.left,rw.bottom-rw.top,true);
    HANDLE hConsoleOut=GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO csbf;    
    COORD newcoord;
    SMALL_RECT sr;
    CONSOLE_CURSOR_INFO cci;
    cci.bVisible=false;
    cci.dwSize=1;
    newcoord=GetLargestConsoleWindowSize(hConsoleOut);
    SetConsoleScreenBufferSize(hConsoleOut,newcoord);
    int minx=80;
    int maxx=newcoord.X;
    int miny=25;
    int maxy=newcoord.Y;
    DWORD count;
    SetConsoleCursorInfo(hConsoleOut,&cci);
    int i=0;
    while(i<10){
        GetConsoleScreenBufferInfo(hConsoleOut,&csbf);
        csbf.dwCursorPosition.X=(csbf.srWindow.Right-csbf.srWindow.Left)/2;
        csbf.dwCursorPosition.Y=(csbf.srWindow.Bottom-csbf.srWindow.Top)/2;
        SetConsoleCursorPosition(hConsoleOut,csbf.dwCursorPosition);
        WriteConsole(hConsoleOut,"*",(DWORD)1,&count,NULL);
        Sleep(1000);
        newcoord.X=rand()%(maxx-minx)+minx;
        newcoord.Y=rand()%(maxy-miny)+miny;     
        sr.Top=sr.Left=0;
        sr.Bottom=newcoord.Y;
        sr.Right=newcoord.X;
        SetConsoleWindowInfo(hConsoleOut,true,&sr);
        SetConsoleCursorPosition(hConsoleOut,csbf.dwCursorPosition);
        WriteConsole(hConsoleOut," ",(DWORD)1,&count,NULL);
        ++i;
    }
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2013, 11:16
Привет! Вот еще темы с ответами:

Запуск Gnu через командную строку - C++
Здравствуйте, у меня возникла проблема такая интересная (лично для меня :D), вобщем до недавнего времени я занимался паскалем и решил...

Запуск через командную строку с параметрами - C++
Помогите плиз!!! void main(int argc, char *argv) { int k,N; clrscr(); LIST *lst; FILE *fi,*fo; if (( fi = fopen(argv,&quot;r&quot;)) ==...

Написание текста в обратном порядке через командную строку - C++
Помогите написать прогу которая после ввода текста пишет его в обратном порядке.До завтра нужно сделать.Пжл

Не выходит открыть текстовый файл через командную строку - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; using namespace std; int main(int argc, char*argv) { fstream fout(argv); ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.02.2013, 11:16
Ответ Создать тему
Опции темы

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