Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 547
от 09.10.2006, 02:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 391, Экспертов: 50
В номере:Вопросов: 5, Ответов: 6


Вопрос № 57501: Помогите, пожалуйста! Задан ряд, который складывается из символов. Символы объединяются в слова. Слова отделяются одним или несколькими пробелами. В конце текста ставится точка. Напечатать все слова, что не помещают гласных букв. ..
Вопрос № 57502: Помогите, пожалуйста, мне в написании такой программы: шахматное поле определяется парой символов, как в шахматной нотации – e 4, h 8. пользователь вводит две такие пары символов, определить имеют ли поля один цвет....
Вопрос № 57581: Доброе время суток! Обращаюсь к Вам с такой просьбой может у Вас есть исходники файлового менеджера на Си или Вы знаете где ето можно найти и почитать спасибо...
Вопрос № 57608: Установил себе С++ билдер. Начал учиться в нем писать. Написал прогу. Компилирую - без ошибок. Начинаю билдить вылетает мне такая вот фигня: - [Linker Fatal Error] Fatal: Expected a file name: Что делать не знаю (только могу догадоваться,что где...
Вопрос № 57611: Добрый день. Как в СОМ-библиотеке описать функцию, что бы она возвращала массив значений (например, строковых). Тонкости создания СОМ можно опустить....

Вопрос № 57.501
Помогите, пожалуйста! Задан ряд, который складывается из символов. Символы объединяются в слова. Слова отделяются одним или несколькими пробелами. В конце текста ставится точка. Напечатать все слова, что не помещают гласных букв.

Отправлен: 03.10.2006, 02:18
Вопрос задал: Petrov (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: ADSota
Здравствуйте, Petrov!

Так-как все предложение в памяти - то все делается с помощью ссылок:
Используемая функция Soglasn возвращает 0 - если буква гласная и 1 - если нет...

void ExPrintWords(char*s)
{
int q=1;
for(char*e=s;*e-'.';e++)
{
if(!((*e)-32))
{
if((e-s)&&q)printf(" %.*s",e-s,s);//печать слова
s=e+(q=1);
}
else q*=soglasn(*e);//проверяемяем наличие гласных
}
if((e-s)&&q)printf(" %.*s",e-s,s);//печать последнего слова перед точкой (если оно без гласных конечно)
}

---------
Открыть глаза навстречу солнцу
Ответ отправил: ADSota (статус: Специалист)
Ответ отправлен: 05.10.2006, 11:50


Вопрос № 57.502
Помогите, пожалуйста, мне в написании такой программы: шахматное поле определяется парой символов, как в шахматной нотации – e 4, h 8. пользователь вводит две такие пары символов, определить имеют ли поля один цвет.
Отправлен: 03.10.2006, 02:30
Вопрос задал: Сидоров (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: ADSota
Здравствуйте, Сидоров!

Вопрос скорее из математики:
1. Переводишь буквы в цифры: А=1, В=2,...
2. Если сумма буквы и цифры нечетная - то данная клетка - белая, если четная, то наоборот...
3. Так вот и находишь коды четности клеток (для каждой клетки): Если клетка черная, то код=0, иначе код=1
4. находишь сумму кодов: если она четная - то цвета клеток одинаковы...

На Си будет так:
int N1='e',C1='4',N2='h',C2='8';//координаты клеток
int cod1=(N1+C1-'a'-'0'+1)&1,cod2=(N2+C2-'a'-'0'+1)&1;//коды клеток
printf(" Цвета полей %s.",((cod1+cod2)&1)?"разные":"одинаковые");

или короче:
int N1='e',C1='4',N2='h',C2='8';//координаты клеток
printf(" Цвета полей %s.",((N1+C1+N2+C2-'a'-'0'+1-'a'-'0'+1)&1)?"разные":"одинаковые");

---------
Открыть глаза навстречу солнцу
Ответ отправил: ADSota (статус: Специалист)
Ответ отправлен: 03.10.2006, 09:31

Отвечает: dentist
Здравствуйте, Сидоров!
можно проверить на чётность.
прошу пощения, но я не помню как выглядит доска (стыдно, знаю).
но допустим, что А1 чёрная. тогда в каждом чётном ряду, чётная строка чёрная, и наобарот, в каждом нечётном ряду каждая чётная строка белая =)

представим, что пользователь вводит букву ряда (в верхнем регисттре), тогда для удобства переведём её в число ;) кстати в этом случае, чётность разницы номера строки и ряда будет говорить нам о цвете ;)

char row1, row2, str1, str2; // ну или как Вам будет удобнее ;)
// чё то там делаем с ними, задаём значения итд.
// переводим нумерацию рядов доски из буквенной в числовую ;)
row1 = row1 - 64;
row2 = row2 - 64;

bool equiv = !(((row1 - str1) - (row2 - str2))&1);

вот так =)

---------
"Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 4-ый класс)
Ответ отправлен: 03.10.2006, 09:49


Вопрос № 57.581
Доброе время суток!
Обращаюсь к Вам с такой просьбой
может у Вас есть исходники файлового менеджера на Си или Вы знаете где ето можно найти и почитать
спасибо
Отправлен: 03.10.2006, 15:58
Вопрос задал: sexy (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: dentist
Здравствуйте, sexy!
ну, найти и почитать можно в гугле а исходники скачать тут:
http://prdownloads.sourceforge.net/winscp/winscp382source.zip?download
правда не совсем уверен, что это то что нужно...
---------
"Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 4-ый класс)
Ответ отправлен: 03.10.2006, 16:20


Вопрос № 57.608
Установил себе С++ билдер. Начал учиться в нем писать. Написал прогу. Компилирую - без ошибок. Начинаю билдить вылетает мне такая вот фигня: - [Linker Fatal Error] Fatal: Expected a file name:
Что делать не знаю (только могу догадоваться,что где-то надо что-то прописать, а что и где).
Помогите люди !!!!!!

Приложение:

Отправлен: 03.10.2006, 19:33
Вопрос задал: Djway (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: GTX
Здравствуйте, Djway!
[Неисправимая Ошибка Компоновщика] Фатальная: Ожидание имени файла: это перевод вашей ошибки
вообще Культин описывает многие ошибки прочитайте внимательнее.
Ответ отправил: GTX (статус: 1-ый класс)
Ответ отправлен: 04.10.2006, 19:19


Вопрос № 57.611
Добрый день.
Как в СОМ-библиотеке описать функцию, что бы она возвращала массив значений (например, строковых). Тонкости создания СОМ можно опустить.
Отправлен: 03.10.2006, 19:43
Вопрос задал: Vaga (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Sergey A. Wedensky
Здравствуйте, Vaga!

Методы COM-объектов обычно возвращают HRESULT, но для OUT-параметра Вы можете использовать SAFEARRAY.

Обычно параметр делают типа VARIANT*:

HRESULT ISomeInterface::SomeMethod(VARIANT* poutArray);

Для создания массива используется SafeArrayCreateVector:

/* Если строки, в противном случае замените VT_BSTR
на нужный тип элементов массива */
poutArray->vt = VT_ARRAY|VT_BSTR;
int length = 10; // Количество элементов
poutArray->parray = SafeArrayCreateVector(VT_BSTR, 0, length);

Если нужно создать многомерный массив - см. SafeArrayCreate.

Для доступа к данным - SafeArrayGetElement / SafeArraySetElement.
Или, что является более быстрым, блокирование массива, запись элементов, затем разблокирование:

SafeArrayLock(poutArray->parray);
BSTR elem_i = SysAlocStringByteLen(...);
((BSTR*)poutArray->parray->pvData)[i] = elem_i;
SafeArrayUnlock(poutArray->parray);

SafeArrayDestroy удаляет SAFEARRAY. Только в случае OUT-параметра это должна делать вызывающая сторона:

VARIANT v;
pSomeInterface->SomeMethod(&v);
SafeArrayGetElement(v.parray, ...);
..
SafeArrayDestroy(v.parray);

Удачи!
Ответ отправил: Sergey A. Wedensky (статус: 4-ый класс)
Ответ отправлен: 04.10.2006, 10:07
Оценка за ответ: 5
Комментарий оценки:
Спасибо


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное