Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2013, 18:32   #1
gremory
 
Регистрация: 09.12.2013
Сообщений: 3
Вопрос нужна помощь с программкой (псевдографика С++)

Народ нужна помощь
от задача

Создать программу, которая выводит псевдографичиское изображения указанной буквы заданным с клавиатуры символом несколько раз. При каждом выводе буквы выполнить ее масштабирование (увеличение или уменьшение в размере). Использовать вложенные циклы.

Буква "W"

я с ней уже 3 дня вожуся зделать не могу((
gremory вне форума Ответить с цитированием
Старый 09.12.2013, 19:09   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,152
По умолчанию

То есть надо получить шрифт окна консоли, чтобы узнать собственно форму символа?
Smogg вне форума Ответить с цитированием
Старый 09.12.2013, 19:13   #3
gremory
 
Регистрация: 09.12.2013
Сообщений: 3
По умолчанию

не необходимо просто с помощью циклов и одного символа который может повторятся написать букву W которая каждый раз уменьшает свой ​​размер
gremory вне форума Ответить с цитированием
Старый 09.12.2013, 19:44   #4
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,152
По умолчанию

И что смущает? Т.е., как думаете решать задачку?
Smogg вне форума Ответить с цитированием
Старый 09.12.2013, 19:47   #5
gremory
 
Регистрация: 09.12.2013
Сообщений: 3
По умолчанию

у меня есть код на букву Z можете помочь переделать его на букву W
вот код
Цитата:
#include<iostream>
using namespace std;

void main()
{
int const M=20,N=20,K=3;
int i,j,k;
for (k=1;k<=K;k++)
{
for (i=1;i<=N/k;i++)
{
for (j=1;j<=M/k;j++)
{
if ((i==1) || (i==N/k) || (j==M/k-i+1))
cout <<'Z';
else
cout << ' ';
}
cout << endl;
}
cout << endl;
}
}
gremory вне форума Ответить с цитированием
Старый 09.12.2013, 20:55   #6
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,152
По умолчанию

Цитата:
Сообщение от gremory Посмотреть сообщение
у меня есть код на букву Z можете помочь переделать его на букву W
вот код
Поверю, что этот код работает. Но направление мысли не верно.
Вам нужно делать через матрицы. Потому што масштабирование!

В прикрепленном файле заданы начальные значения для одномерного charового массива, длиной в 4700, т.е. 47 строк по 100 букво-пикселей. (вы проверьте, может я где потерял пару байтов при конверсиях. )

Но учтите, что там W - перевернутая, потому что получен из bmp формата. А он, мне так и не понятно с чего, хранит строчки в обратном порядке.

Схема пока такая:

1. создаете одномерный массив, инициированный данными значениями.
2. создаете матрицу 47строкХ100 столбцов
3. последовательно ее заполняете
Код:
char startArr[4700] = {___сюда вставляете W_input_array.txt____};

	char * mainMtrx[47];
	int z = 0;
	for (int i = 0; i < 47 ; i++)
	{
		mainMtrx[i] = new char[100];
		for (int j = 0; j < 100 ; j++)
		{
			mainMtrx[i][j] = startArr[z];
			++z;
		}
	}
4. переставляете строки в mainMtrx в обратном порядке
5. оформляете ввод масштабирующего коэффициента:
6. конструируете новую матрицу с соответствующим размером newMtrx
7. копируете из главной в новую данные
8. выводите на экран

// хотя можно обойтись и без промежуточной матрицы, а сразу выводить на экран, но тогда дебажить станет не удобно.
________

Потом покажите, что получилось. Я тож хочу поиграться)

// а еще все таки можно и ваш вариант использовать, но это мне не интересно) С шрифтами поиграться забавнее
Вложения
Тип файла: txt W_input_array.txt (18.4 Кб, 113 просмотров)

Последний раз редактировалось Smogg; 09.12.2013 в 21:05.
Smogg вне форума Ответить с цитированием
Старый 09.12.2013, 23:16   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Какие матрицы?!?! Выглядит все примерно так:
Код:
^00<--n-->00<--n-->00
| 00     0000     00
|  00   00  00   00
m   00 00    00 00
|    000      000
v     0        0
находите m и n (ничего сложного, щас просто лень самому считать), для каждой строчки рисуете куски четырех линий, сдвигая их на 1 позицию влево/вправо. Уверен, толщину линий менять не надо, а если и надо, то толщина тоже легко меняется пропорционально высоте.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 10.12.2013, 01:00   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
#include <iostream>
#include <iomanip>

using namespace std;

int
main()
{
    for (int n = 5; n > 1; cout << endl, --n)
        for (int i = 0; i < n; cout << endl, ++i) {
            cout << setw(i + 1) << 'w';
            int k = n - i - 1;
            if (k) cout << setw(2 * k) << 'w';
            if (i) cout << setw(2 * i) << 'w';
            if (k) cout << setw(2 * k) << 'w';
        }
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 10.12.2013 в 01:02.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень нужна таблица кодов символов/кнопок в Pascal ABC (псевдографика) CnpuHTep Помощь студентам 30 15.05.2012 23:20
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12
Нужна помощь KpeHDeJIb Помощь студентам 4 04.07.2008 11:52