Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: hda0
Дата сообщения: 29.01.2010 11:41
ValidolX
не совем понял.. убрать этот брейк?


Код:

Цитата:
*user_msg = "Password Has Expired\r\n";
break;
} else {


Автор: ValidolX
Дата сообщения: 29.01.2010 12:03
hda0
Да,
но чтоб было 100% вам надо самому сначала понять логику етого цикла.
Из того что я понял - нашли атрибут PW_EXPIRATION. проанализировали дату, брейк.
Автор: bobby_UA
Дата сообщения: 01.02.2010 16:25
Добрый день.

У меня есть иерархия классов.

class A: B

{
...
operator const char* () const;
...
}

эта перегрузка оператора нужна, чтобы сделать что-то типа
cout<<A;

как мне в теле этого оператора вызвать такой же оператор, но базового класса B?

Спасибо!
Автор: Qraizer
Дата сообщения: 02.02.2010 04:51

Код: return static_cast<const char*>(static_cast<const B*>(this));
Автор: mrherbrooks
Дата сообщения: 02.02.2010 08:34

Цитата:
эта перегрузка оператора нужна, чтобы сделать что-то типа
cout<<A;


а не проще ли организовать перегрузку операторов << и >>?
Автор: 707707
Дата сообщения: 02.02.2010 15:04
Помогите решить.
Определить сколько существует различных паролей, не превосходящих длины 12, состоящих из больших и маленьких латинских букв и цифр.
Автор: KChernov
Дата сообщения: 02.02.2010 15:31
707707
А причём тут программирование? Это чистая математика - комбинаторика: (число_цифр + 2 * число_латинских_букв + 1)^12 .
Автор: 707707
Дата сообщения: 02.02.2010 15:59
Понятно, что математика. Мне нужно чтобы это рассчитывалось в C++.
Автор: akaGM
Дата сообщения: 02.02.2010 17:00
KChernov
а почему +1 -то?

707707

Цитата:
Мне нужно чтобы это рассчитывалось в C++

Код:
int main() {
cout << pow(62, 12);
return 0;
}
Автор: Prober
Дата сообщения: 02.02.2010 17:29
707707
Мне кажется, как-то так:

Код: double d=0.0;
for (int i=1; i<=12; i++) d+=pow(62,i);
Автор: KChernov
Дата сообщения: 02.02.2010 18:40
akaGM

Цитата:
а почему +1 -то?

Потому что
Цитата:
не превосходящих длины 12
!
То есть имеет место "число_цифр + 2 * число_латинских_букв + 1"-ричная система счисления, число всех возможных вариантов которой рассчитывается элементарно (степенью основания==максимально представимое число + 1).
Кстати если пустые слова не допускаются, то надо из всего этого безобразия вычесть 1
Автор: deman_ru
Дата сообщения: 02.02.2010 19:57
УважаемыйValidolX, снова обращаюсь к вам за помощью, а так же к другим форумчанам.
Есть у меня база данных, она же база знаний для экспертной системы, она имеет структуру:



Для механизма вывода решил использовать алгоритм обратного логического вывода, вот его описание:

Код:
функция Доказана_Цель(Цель): boolean;
| Поместить Цель в стек целей.
| пока стек целей не пуст
| цикл
| | Выбор цели из стека целей и назначение ее текущей.
| | Поиск множества правил, в правой части которых
| | находится текущая цель (множества подходящих правил).
| | Считать, что Цель не доказана.
| | пока множество походящих правил не пусто
| | и Цель не доказана
| | цикл
| | | Выбор из этого множества одного текущего правила
| | | с использованием определенной стратегии.
| | | Считать текущим элементарным условием первое.
| | | пока не проверены все элементарные условия правила
| | | и не надо прервать проверку условия
| | | цикл
| | | | если в текущем элементарном условии
| | | | | участвует факт,
| | | | | встречающийся в правой части
| | | | | какого-то правила
| | | | | то
| | | | | если не Доказана_Цель(Этот факт)
| | | | | | то
| | | | | | Надо прервать проверку условия
| | | | | конец_если
| | | | иначе
| | | | | Запросить информацию о факте.
| | | | | Проверить элементарное условие.
| | | | | если элементарное условие истинно
| | | | | | то
| | | | | | Добавить факт в базу данных.
| | | | | | Перейти к следующему элементарному
| | | | | | Условию.
| | | | | иначе
| | | | | | Надо прервать проверку условия.
| | | | | конец_если
| | | | конец_если
| | | конец_цикла
| | | если условие правила истинно
| | | | то
| | | | Выполнить заключение.
| | | | Исключить Цель из стека целей.
| | | | Считать, что Цель доказана.
| | | конец_если
| | конец_цикла
| конец_цикла
конец_функции.
Автор: akaGM
Дата сообщения: 02.02.2010 20:23
KChernov
ну может быть, всегда был слаб в комбинаторике...
Автор: sysxxx
Дата сообщения: 02.02.2010 21:09
срочный вопрос по Си


int c=0, d;
d =1 || --c;
printf(" %d", c);


почему с=0.
Автор: deman_ru
Дата сообщения: 02.02.2010 21:32
sysxxx
c--;
попробуй так, должно быть так а не наоборот
Автор: sysxxx
Дата сообщения: 02.02.2010 21:36
меня принципиально интересует почему в итоге с=0, а не -1

см. отличие между префиксной и постфиксной формой декремента
Автор: Abs62
Дата сообщения: 02.02.2010 21:41
sysxxx
По Стандарту C, п. 6.5.14

Цитата:
4 Unlike the bitwise | operator, the || operator guarantees left-to-right evaluation; there is
a sequence point after the evaluation of the first operand. If the first operand compares
unequal to 0, the second operand is not evaluated.
Автор: KChernov
Дата сообщения: 02.02.2010 21:42
akaGM

Цитата:
ну может быть, всегда был слаб в комбинаторике...

Это даже не совсем комбинаторика - достаточно знаний по системам счисления, которые вроде всем читают как вводный курс программирования.
Автор: sysxxx
Дата сообщения: 02.02.2010 21:45
Abs62

век живи, век учись
Автор: ValidolX
Дата сообщения: 02.02.2010 21:53

Цитата:
меня принципиально интересует почему в итоге с=0, а не -1

см. отличие между префиксной и постфиксной формой декремента


потому что нету присваивания нового значения c назад (сам себе)

--с сделали, а рез - никуда
Автор: Abs62
Дата сообщения: 02.02.2010 22:27
ValidolX
Тот же Стандарт C, п. 6.5.3.1

Цитата:
Constraints
1 The operand of the prefix increment or decrement operator shall have qualified or
unqualified real or pointer type and shall be a modifiable lvalue.
Semantics
2 The value of the operand of the prefix ++ operator is incremented. The result is the new
value of the operand after incrementation. The expression ++E is equivalent to (E+=1).
See the discussions of additive operators and compound assignment for information on
constraints, types, side effects, and conversions and the effects of operations on pointers.
3 The prefix -- operator is analogous to the prefix ++ operator, except that the value of the
operand is decremented.

Инкремент и декремент - само по себе присваивание.
Автор: Prober
Дата сообщения: 03.02.2010 06:10
KChernov

Цитата:
То есть имеет место "число_цифр + 2 * число_латинских_букв + 1"-ричная система счисления, число всех возможных вариантов которой рассчитывается элементарно (степенью основания==максимально представимое число + 1)

ИМХО, вы ошибаетесь. Можно, конечно, разъяснить ошибочность вышенаписанного с позиций "высокой" математики, но проще будет пример привести. Возьмите не 62 и 12, а, допустим, 10 и 3. Посчитайте вручную количество вариантов и сравните результат с 11^3.
Автор: akaGM
Дата сообщения: 03.02.2010 12:37
Prober, KChernov
вообще говоря, да...
пароль с длиной не больше 2 символов из трёхсимвольного набора (a, b, c)
---
a
b
c
ab
ba
ac
ca
bc
cb
---
= 9, т.е = 3^2, а не 4^2 = 16
Автор: KChernov
Дата сообщения: 03.02.2010 13:48
Действительно, не так надо считать.

akaGM
А где аа, бб и сс?


Prober

Цитата:
Мне кажется, как-то так:

Код:
double d=0.0;
for (int i=1; i<=12; i++) d+=pow(62,i);

Именно так и надо.
Автор: Prober
Дата сообщения: 03.02.2010 13:53
akaGM
Вообще-то в последнем примере правильный ответ не 9, а 12 (еще aa, bb и cc не упомянуты). А 12 получается как 3^1+3^2.
Добавлено:
Опоздал, уже сказали.
Автор: akaGM
Дата сообщения: 03.02.2010 13:55
KChernov

Цитата:
А где аа, бб и сс?

гы-гы
говорю ж: слабоват я в комбинаторике
низачот
Автор: ValidolX
Дата сообщения: 03.02.2010 14:25
Abs62
согласен, оплошал

Переведите пож-та для ребят, не уверен что все знают сухой техн. английский
или своими словами - для тех кто в танке
Автор: Mrcloner
Дата сообщения: 03.02.2010 15:24
Народ помогите!
При выборе в компоненте DriveComboBox1 CD привода вылетает "ошибка I/O error 21"
как написать код в Builder 2006 C++ который обрабатывал эту ошибку и выдавал сообщение "В приводе нет диска"
Автор: snike555
Дата сообщения: 03.02.2010 15:45
Mrcloner

читаем как обрабатываются исключения в с++ например тут http://valera.asf.ru/cpp/book/c11.shtml

далее отлавливаем сообщение, проверяем, то ли это что нам нужно и подменяем своим сообщением.
Автор: Abs62
Дата сообщения: 03.02.2010 17:40
ValidolX
Стандарт нужно читать в оригинале - технический английский программисту необходим.
А русское описание операторов инкремента и декремента несложно найти в любом учебнике. Например, здесь.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.