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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2014, 22:53   #1
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию Не правильный вывод символов

Нужно вывести первые 128 символов ASCII таблицы в 8 столбиков по 16 строчек. Делаю так:
Код:
int _tmain(int argc, _TCHAR* argv[])
{
    unsigned char a;
    int iter = 0, iter2 = 1;
    for (int i = 0; i < 128; i = i + 8)
    {
        a = i - iter * 7;
        cout << a << '\t';
        for (int j = 1; j < 8; ++j)
        {
            a = j + iter2 * 15 + iter;
            iter2++;
            cout << a << '\t';
            if (j == 7)
                cout << endl;
        }
        iter2 = 1;
        iter++;
    }
    _getch();
    return 0;
}
Ну, в общем, проблема состоит в том, что в каждом столбце на 10 строчке печатается символ предыдущего столбца - этого быть не должно. Посмотрите свежим взглядом, что тут не так. Спасибо.

Последний раз редактировалось Stilet; 02.11.2014 в 23:07.
Gdasar вне форума Ответить с цитированием
Старый 02.11.2014, 23:18   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

Смотрел-смотрел, так и не понял, почему такой сложный код.
Вроде, то же самое печатает:
Код:
for (int i = 0; i < 16; ++i) {
    for (int j = 0; j < 8; ++j)
        cout << (char) (16 * j + i) << '\t';
    cout << endl;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 03.11.2014, 10:38   #3
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию

BDA,да,делает тоже самое,но выводит все равно с косяком.
Изображения
Тип файла: jpg пример.jpg (19.7 Кб, 138 просмотров)
Gdasar вне форума Ответить с цитированием
Старый 03.11.2014, 11:14   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,715
По умолчанию

А косяк то где?
p51x вне форума Ответить с цитированием
Старый 03.11.2014, 11:20   #5
studentus1985
Пользователь
 
Регистрация: 21.10.2014
Сообщений: 25
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А косяк то где?
Наверное он это имел ввиду:

Цитата:
Сообщение от Gdasar Посмотреть сообщение
Ну, в общем, проблема состоит в том, что в каждом столбце на 10 строчке печатается символ предыдущего столбца - этого быть не должно.
studentus1985 вне форума Ответить с цитированием
Старый 03.11.2014, 11:25   #6
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию

p51x,присмотрись. В 9 столбце,которого вообще не должно быть,стоит y.
Gdasar вне форума Ответить с цитированием
Старый 03.11.2014, 12:11   #7
studentus1985
Пользователь
 
Регистрация: 21.10.2014
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Gdasar Посмотреть сообщение
p51x,присмотрись. В 9 столбце,которого вообще не должно быть,стоит y.
Похоже на то, что в 10 строке в 1 или втором столбце выводится непечатаемый символ табуляции, который и сдвигает всю строку на один столбец, так и появляется лишний столбец. Проверьте что там выводится и сделайте проверку на код табуляции, вместо нее можно вывести пробел, этого все равно не заметят
studentus1985 вне форума Ответить с цитированием
Старый 03.11.2014, 12:29   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,715
По умолчанию

Цитата:
Сообщение от Gdasar Посмотреть сообщение
p51x,присмотрись. В 9 столбце,которого вообще не должно быть,стоит y.
И? Там просто сдвинуты все столбцы и это правильно.

Цитата:
Сообщение от studentus1985 Посмотреть сообщение
Похоже на то, что в 10 строке в 1 или втором столбце выводится непечатаемый символ табуляции, который и сдвигает всю строку на один столбец, так и появляется лишний столбец. Проверьте что там выводится и сделайте проверку на код табуляции, вместо нее можно вывести пробел, этого все равно не заметят
Может стоит хоть что-то почитать про таблицу аски и узнать, что там не только табуляция есть, а?
p51x вне форума Ответить с цитированием
Старый 03.11.2014, 13:22   #9
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию

p51x, а почему это программа решила сдвинуть именно 10 строку?
Gdasar вне форума Ответить с цитированием
Старый 03.11.2014, 13:26   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а почему это программа решила сдвинуть именно 10 строку?
Скорее всего потому что ты пытаешься вывести в консоль символ, который она считает управляющим.
Например табулятор или перенос каретки или еще что-то.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правильный вывод вещественного числа Impuls1989 Общие вопросы по Java, Java SE, Kotlin 0 16.07.2014 12:00
Не правильный ввод/вывод dimka123 Общие вопросы C/C++ 2 03.05.2014 15:29
правильный вывод с массива AcTiV Общие вопросы C/C++ 7 03.03.2013 18:46
Вывод списка символов справа налево 5 раз подряд и исключить вывод цифр Gareek Помощь студентам 2 23.12.2011 21:41