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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
alexelev
1 / 1 / 0
Регистрация: 28.06.2012
Сообщений: 6
#1

Рисование кодами ASCII - C++

14.07.2012, 21:28. Просмотров 1534. Ответов 15
Метки нет (Все метки)

*очередной новичок входит в великий мир С++
Итак, проблема собственно проста. Идея заключается в отрисовке прямоугольничка с использованием ASCII кодов символов. Код следующий:
C++
1
2
3
4
char ch1[]={218,196,196,196,196,196,196,196,196,191};
char ch2[]={179,255,255,255,255,255,255,255,255,179};
char ch3[]={192,196,196,196,196,196,196,196,196,217};
cout<<ch1[10]<<"\n"<<ch2[10]<<"\n"<<ch3[10]<<"\n";
Результат виден на 1-ом скрине. Хотя при выводе кодов по отдельности правильные символы - уголки, черточки, палочки - скрин 2. Где закралась ошибка? Или что-то нужно подключить для корректного отображения символов?
1
Миниатюры
Рисование кодами ASCII   Рисование кодами ASCII  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2012, 21:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рисование кодами ASCII (C++):

Рисование ASCII кодами и русский текст в консоли - C++
Всем добрый вечер. И вот такой вопрос есть. Сначала печатаю в консоли текст а под ним горизонтальную линию. Только вместо линии...

Нарисовать изображение ASCII кодами - C++
Написать программу, которая рисует изображение, используя ASCII таблицы (ASCII код). Заранее благодарен

Сформировать строку, считая числа начальной строки соответствующими ASCII-кодами символов результирующей строки - C++
Доброго времени суток! Прошу помощи. Дана строка в виде последовательности разделенных запятыми натуральных чисел 32 ... 255....

Подключить ASCII кодировку (рисование рамок в консоли) - C++
Добрый день! Пишу в VS'13. Проект: Консольное приложение Win32 Есть такая проблема. Хочется использовать символы для рисования рамок...

Не могу разобраться с кодами к заданиям. - C++
1.Дано натуральное число n. Bычислить n! (произведение 1*2*...*n) 2.Задан массив L из N элементов (N не больше 30). Определить...

Сравнение русских букв с их кодами - C++
Всем доброго времени суток. Имеется проблема ввода русского языка в консоле(!), при выполнении программы. Суть задания: пользователь...

15
HappyAndRu
13 / 13 / 2
Регистрация: 19.05.2012
Сообщений: 46
14.07.2012, 22:22 #2
Ну ты же выводишь только последние элементы массивов.

Добавлено через 21 минуту
Блин не заметил сначала, нумерация массивов с 0 начинается
C++
1
cout<<ch1[9]<<"\n"<<ch2[9]<<"\n"<<ch3[9]<<"\n";
1
alexelev
1 / 1 / 0
Регистрация: 28.06.2012
Сообщений: 6
14.07.2012, 22:28  [ТС] #3
Благодарю, исправился. Результат все равно немного не тот, чего я ожидал.
C++
1
cout<<ch1<<"\n"<<ch2<<"\n"<<ch3<<"\n"
0
Миниатюры
Рисование кодами ASCII  
HappyAndRu
13 / 13 / 2
Регистрация: 19.05.2012
Сообщений: 46
14.07.2012, 22:38 #4
а полный код можешь выложить?
0
alexelev
1 / 1 / 0
Регистрация: 28.06.2012
Сообщений: 6
14.07.2012, 22:46  [ТС] #5
Да это собственно и есть весь код
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <time.h>
#include <Windows.h>
#include <stdlib.h>
using namespace std;
void main()         
{
    char ch1[]={218,196,196,196,196,196,196,196,196,196,191};
    char ch2[]={179,255,255,255,255,255,255,255,255,255,179};
    char ch3[]={192,196,196,196,196,196,196,196,196,196,217};
    cout<<ch1<<"\n"<<ch2<<"\n"<<ch3<<"\n";
}
0
HappyAndRu
13 / 13 / 2
Регистрация: 19.05.2012
Сообщений: 46
14.07.2012, 22:57 #6
Странно у меня нормально выводит. Что за компилятор?
0
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
14.07.2012, 22:59 #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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    char ch1[]={218,196,196,196,196,196,196,196,196,191};
    char ch2[]={179,255,255,255,255,255,255,255,255,179};
    char ch3[]={192,196,196,196,196,196,196,196,196,217};
    int i;
 
    for (i=0; i<9; i++)
        cout << ch1[i];
    cout << endl;
 
    for (i=0; i<9; i++)
        cout << ch2[i];
    cout << endl;
 
 
    for (i=0; i<9; i++)
        cout << ch3[i];
    cout << endl;
 
 
    cout << endl << endl;
    system("pause");
    return 0;
}
Или вот еще что. В конце каждого массива поставьте нолик.
C++
1
2
3
    char ch1[]={218,196,196,196,196,196,196,196,196,191,0};
    char ch2[]={179,255,255,255,255,255,255,255,255,179,0};
    char ch3[]={192,196,196,196,196,196,196,196,196,217,0};
1
Миниатюры
Рисование кодами ASCII  
HappyAndRu
13 / 13 / 2
Регистрация: 19.05.2012
Сообщений: 46
14.07.2012, 23:01 #8
В данном случае не обязательно массив из "char" -это строка по сути.
1
alexelev
1 / 1 / 0
Регистрация: 28.06.2012
Сообщений: 6
14.07.2012, 23:06  [ТС] #9
MS Visual Studio 11. Массивом-то да, но я хотел как можно проще и меньше кода =) По идее все правильно и должно бы работать, но не работает, поэтому собсно и пишу тут )
0
HappyAndRu
13 / 13 / 2
Регистрация: 19.05.2012
Сообщений: 46
14.07.2012, 23:09 #10
Вот у меня твой код:
0
Миниатюры
Рисование кодами ASCII  
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
14.07.2012, 23:11 #11
alexelev, Попробуй в каждом массиве в конце поставить нули. У меня тоже без них не работала. А когда поставил то все нормально стало. Четырехугольник печатает
1
Миниатюры
Рисование кодами ASCII  
alexelev
1 / 1 / 0
Регистрация: 28.06.2012
Сообщений: 6
14.07.2012, 23:13  [ТС] #12
значит, проблема не в коде, спс
да, 0 в конце каждой строки решил проблему, прямоугольничек ровненький вышел
0
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
14.07.2012, 23:32 #13
Еще можно сделать что внутри этого прямоугольника какое-нибудь слово будет написано.
C++
1
2
3
4
5
6
7
    char ch1[]={218,196,196,196,196,196,196,196,196,196,196,196,196,191,0};
    char ch2[]={179,'H','e','l','l','o',',',' ','W','o','r','l','d',179,0};
    char ch3[]={192,196,196,196,196,196,196,196,196,196,196,196,196,217,0};
 
   cout << ch1 << endl
        << ch2 << endl
        << ch3 << endl;
0
alexelev
1 / 1 / 0
Регистрация: 28.06.2012
Сообщений: 6
16.07.2012, 18:09  [ТС] #14
дабы не плодить одинаковых тем продолжу сюда.
Следующий животрепещущий вопрос: как полученный прямоугольник закрасить цветом? Т.е как изменить цвет ячейки, в моем случае элемента массива?
0
QWAN
58 / 57 / 1
Регистрация: 02.09.2008
Сообщений: 181
17.07.2012, 10:05 #15
Функция SetConsoleTextAttribute устанавливает атрибуты символов, записанных в экранный буфер консоли
http://www.vsokovikov.narod.ru/New_M...tattribute.htm
0
17.07.2012, 10:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2012, 10:05
Привет! Вот еще темы с ответами:

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

Заполнение строкового массива кодами символов - C++
Как сделать, чтобы не было предупреждений? warning C4309: инициализация: усечение константного значения char dictionary = {...

Объясните отличия между двумя кодами - C++
Всем привет ! Чем отличается такой код for(...){ ... ... } от такого for(...)

Как связать два файла с кодами? - C++
В одном файле вычисляется константа, которая используется при расчете функции в другом файле. Какой элементарный способ можно использовать,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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