Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> хорирование, перевод чисел из разных систем, упражнение из книги Страуструпа 
:(
    Опции темы
powerfox
Дата 1.10.2005, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



У Страуструпа есть интересное упражнение - только не пойму метод шифрования:
Программа читает из cin и записывает в cout, кодом соответствующему 'c' будет c^ket[i], где key - строка, переданная в качестве аргумента ком. стр. Программа циклически перебирает символы из key, пока есть ввод.

Приблизительно:
Код

#include<iostream>
int main()
{
char q;
char c1 = 'X';
char c2 = 'W';
q = c1 ^ c2;
q = q ^ c2;
std::cout<< q;
}

Получается непечатаемый символ smile

smile
У меня есть символ c типа char, представление его в таблице будет int( с ). А как представить в двоичном и двоичном виде? Может хорировать надо двоичные представления?


--------------------
user posted image
PM WWW   Вверх
Void
Дата 1.10.2005, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(powerfox @ 1.10.2005, 21:53)
Получается непечатаемый символ

Ну и правильно smile Кто-то давал гарантию, что результат операции будет попадать в алфавитно-цифровую область?


Цитата(powerfox @ 1.10.2005, 21:53)
А как представить в двоичном и двоичном виде? Может хорировать надо двоичные представления?

XOR всегда оперирует с побитовым представлением.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
powerfox
Дата 1.10.2005, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Для чего программа шифрования, создающая пустоту?
smile А как вывести какой-нибудь символ в шестнадцатиричном виде?
Не нашёл в разделе лит-ры: упражнения для С++(сборник задач в электронном виде)


--------------------
user posted image
PM WWW   Вверх
Void
Дата 1.10.2005, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(powerfox @ 1.10.2005, 22:45)
А как вывести какой-нибудь символ в шестнадцатиричном виде?

Например, так:
Код

#include <iostream>
#include <iomanip>

int main() {
    char c = 'X' ^ 'W';
    std::cout << std::hex << std::setw(2) << std::setfill('0');
    std::cout << int(c);
}



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
powerfox
Дата 1.10.2005, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Вы, не могли бы пояснить шестую строку.


--------------------
user posted image
PM WWW   Вверх
Void
Дата 1.10.2005, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



powerfox
hex, setw и setfill - это так называемые манипуляторы. Среди перегруженных вариантов оператора << класса std::ostream есть такой, который принимает ф-цию, модифицирующую состояние потока. Применение манипулятора выглядит как ввод/вывод какого-то значения, но на деле устанавливает некие флаги.
Эта строчка указывает, что целые числа будут выводиться в шестандцатеричном формате, причем вывод должен занимать не менее двух символов, и при необходимости дополняться слева символом '0'. Поэтому программа выведет "0f".
Коль скоро ты читаешь Страуструпа, все это подробно описано в главе 21.4 (3-е издание).


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
powerfox
Дата 2.10.2005, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Спасибо Void. Просто я до той главы не дошёл, а в упражнении потребовалось.


--------------------
user posted image
PM WWW   Вверх
megabist
Дата 10.10.2006, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Mart Slaaf
**


Профиль
Группа: Участник
Сообщений: 455
Регистрация: 3.4.2006
Где: Мск

Репутация: нет
Всего: 31



А нельзя ли пояснить как тоже самое для билдера...
тоесть вывести 
char *ch="hello";
Label1->Caption="ch[0]";   // ну или что-то типа того, здесь он должен выводить ASCI значение данного символа.


--------------------
Don't panic!

Жди, и Фатум тебя приведёт...
PM MAIL ICQ Skype GTalk   Вверх
Earnest
Дата 10.10.2006, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Билдер - это тоже C++, и та же стандартная библиотека.


--------------------
...
PM   Вверх
megabist
Дата 10.10.2006, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Mart Slaaf
**


Профиль
Группа: Участник
Сообщений: 455
Регистрация: 3.4.2006
Где: Мск

Репутация: нет
Всего: 31



в основном непонятно, куда тут приписывать хекс и тому подобное.


--------------------
Don't panic!

Жди, и Фатум тебя приведёт...
PM MAIL ICQ Skype GTalk   Вверх
likehood
Дата 10.10.2006, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 8
Всего: 24



можно так:
Код

#include <stdio.h>
char c = 'V';
char s[20];
sprintf(s, "%x", int(c));
Label1->Caption = s; // а в Билдере законно такое присваивание?


Это сообщение отредактировал(а) baronp - 10.10.2006, 09:53
PM MAIL   Вверх
megabist
Дата 10.10.2006, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Mart Slaaf
**


Профиль
Группа: Участник
Сообщений: 455
Регистрация: 3.4.2006
Где: Мск

Репутация: нет
Всего: 31



[C++ Error] Unit1.cpp(165): E2268 Call to undefined function 'sprintf'




--------------------
Don't panic!

Жди, и Фатум тебя приведёт...
PM MAIL ICQ Skype GTalk   Вверх
bsa
Дата 10.10.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Код
char c = 'V';
Label1->Caption = AnsiString().sprintf("%02X", (int)c);

PM   Вверх
megabist
Дата 10.10.2006, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Mart Slaaf
**


Профиль
Группа: Участник
Сообщений: 455
Регистрация: 3.4.2006
Где: Мск

Репутация: нет
Всего: 31



Так и последнее, несмотря и на что не могу онять, как ограничить размер строки до двух??


--------------------
Don't panic!

Жди, и Фатум тебя приведёт...
PM MAIL ICQ Skype GTalk   Вверх
bsa
Дата 10.10.2006, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Чего?!? Что значит "ограничить размер"? Уменьшить? У класса AnsiString есть метод SetLength, который изменяет размер строки.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0807 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.