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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 963
от 11.01.2008, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 472, Экспертов: 46
В номере:Вопросов: 4, Ответов: 9

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 117147: Здравствуйте, уважаемые эксперты! С наступающим Рождеством Вас. Помогите пожалуйста решить задания. Тема: "Побитовые операции". Задание 1: Найти значение выражения Y=4(7a/4+b). Для операций умножения и деления использовать сдвиг влево ...
Вопрос № 117149: Здравтсвуйте, уважаемые эксперты! Нужно написать программу, которая на рабочем столе текущего пользователя создавала бы пустой тектовый файл. Всем известно, что папка "Рабочий стол" находится в директории C:Documents and Settings<...
Вопрос № 117208: Уважаемые эксперты!Помогите пожалуйста с программой!(Visual Studio6-консольн.прил-С): Для хранения данных о цветных планшетных сканерах описать структуру вида: struct scan_info { char model[25]; // наименование модели int price; //цен...
Вопрос № 117210: Помогите пожалуйста написать код программы на C++. Дан массив целых чисел, состоящий из 20 элементов. Найти самый большой и самый маленький элемент и вывести их значения на экран....

Вопрос № 117.147
Здравствуйте, уважаемые эксперты! С наступающим Рождеством Вас. Помогите пожалуйста решить задания. Тема: "Побитовые операции".
Задание 1: Найти значение выражения Y=4(7a/4+b). Для операций умножения и деления использовать сдвиг влево и вправо. Исходные данные считать из файла А, а результат записать в файл В.
Задание 2
Для заданного числа выполнить действия, используя логические побитовые операции. Оформить вывод результата каждой операции в виде двоичных и десятичных кодов.
число: 125; Операции:
Выделить: 1,2,3 бит; Обнулить: 3,4 бит; Установить: 5 бит; Инвертиро-вать: 6,7 бит.

Заранее большое спасибо!
Отправлен: 06.01.2008, 01:21
Вопрос задал: Vitaln2 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Maksim Trofimov
Здравствуйте, Vitaln2!

Задание 2: Для вывода десятичного числа в двоичном представлении надо написать свою функцию...Далее код на C. Вывод результатов в шестнадцатиричной системе счисления.
#include <stdio.h>

int main(void)
{
const unsigned num = 125u; // 1111101
unsigned res;
unsigned mask;

printf("Soerce number: 0x%x ", num);

// Выделить: 1,2,3 бит
// применим маску 0000111 и умножение
// 1111101
// &
// 0000111
// 0000101 // биты 1, 2, 3 выделены
mask = 0x7;
res = mask & num;
printf("Select bits 1, 2, 3: 0x%x ", res);

// Обнулить: 3,4 бит
// применим маску 1110011 и умножение
// 1111101
// &
// 1110011
// 1110001 // биты 3, 4 обнулены
mask = 0x73;
res = mask & num;
printf("Delete bits 3, 4: 0x%x ", res);

//Установить: 5 бит (хотя он установлен, все равно...)
// применим маску 0010000 и сложение
// 1111101
// |
// 0010000
// 1111101
mask = 0x10;
res = mask | num;
printf("Set bit 5: 0x%x ", res);

//Инвертиро-вать: 6,7 бит
// применим маску 0010000 и сложение
// 1111101
// |
// 1100000
// 0011101
mask = 0x60;
res = mask ^ num;
printf("Invert bit 6, 7: 0x%x ", res);

return 0;
}

Задание 1:
//Умножение числа op1 на число op2
int mul(int op1, int op2)
{
int z = 0, i;
for(i = 0; i < op2; i++)
z+= op1 << 0;
return z;
}

Деление чуть сложнее...
Удачи...
Ответ отправил: Maksim Trofimov (статус: 4-ый класс)
Ответ отправлен: 06.01.2008, 08:00
Оценка за ответ: 5


Вопрос № 117.149
Здравтсвуйте, уважаемые эксперты!
Нужно написать программу, которая на рабочем столе текущего пользователя создавала бы пустой тектовый файл. Всем известно, что папка "Рабочий стол" находится в директории C:Documents and Settings<ИМЯ_ПОЛЬЗОВАТЕЛЯ>. Каким образом можно получить имя текущего пользователя компьютера? Нам же нужно знать полный путь к создаваемому файлу!?
Отправлен: 06.01.2008, 01:47
Вопрос задал: X-men (статус: 3-ий класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: CruelHity
Здравствуйте, X-men!

Сущ. Спец функция SHGetSpecialFolderLocation для нахождения необходимых папок!
Вот пример:

#include "windows.h"
#include "Shlobj.h"
#include "iostream"
using namespace std;

void main()
{
LPITEMIDLIST pidl;
char buffer[256];

SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP ,&pidl);
if (pidl==NULL)
{
cout << "Error" << endl;
return;
}
SHGetPathFromIDList(pidl,buffer);
cout << buffer << endl;
cin.get();
}

В функцию SHGetSpecialFolderLocation передается константа, которая характеризует имя какой папки нужно получить и возвращает указатель на данные (pidl), на основе которого используя функцию SHGetPathFromIDList можно получить само имя. Вот описания функций:

WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation
(
HWND hwndOwner,
int nFolder,
LPITEMIDLIST *ppidl
);

WINSHELLAPI BOOL WINAPI SHGetPathFromIDList
(
LPCITEMIDLIST pidl,
LPSTR pszPath
);

В приложении даны все возможные контсанты!
Удачи!

Приложение:

Ответ отправил: CruelHity (статус: 6-ой класс)
Ответ отправлен: 06.01.2008, 02:07
Оценка за ответ: 5

Отвечает: Aristos
Здравствуйте, X-men!
Вам поможет функция SHGetSpecialFolderPath. Для её использования необходимо подключить заголовочный файл <shlobj.h> и библиотеку shell32.lib.
Пример использования в приложении.
ps: прототип:
BOOL SHGetSpecialFolderPath(HWND hwndOwner, LPTSTR lpszPath, int nFolder, BOOL fCreate);

Приложение:

---------
нет ничего невозможного

Ответ отправил: Aristos (статус: 9-ый класс)
Ответ отправлен: 06.01.2008, 02:07
Оценка за ответ: 5

Отвечает: Евсюков Виталий Евгеньевич
Здравствуйте, X-men!
Мое решение приведено в приложении.

Приложение:

---------
I Aear can ve na Mar

Ответ отправил: Евсюков Виталий Евгеньевич (статус: 2-ой класс)
Ответ отправлен: 06.01.2008, 12:39
Оценка за ответ: 4
Комментарий оценки:
Если мне не изменяет память, то это конструкции языка Delphi... Или я не прав?! А этот раздел всё же посвящен программированию на языке C.


Вопрос № 117.208
Уважаемые эксперты!Помогите пожалуйста с программой!(Visual Studio6-консольн.прил-С):
Для хранения данных о цветных планшетных сканерах описать структуру вида:
struct scan_info {
char model[25]; // наименование модели
int price; //цена
double x_size; //горизонтальный размер области сканирования
double y_size; //вертикальный размер области сканирования
int optr; //оптическое разрешение
int grey; //число градаций серого
};

Написать функцию, которая запрашивает количество сканеров, информация о которых будет вводиться, динамически выделять память под массив структур соответствующего размера и заполняет его данными в режиме диалога (с клавиатуры). При этом имя сканера может содержать пробелы.

Написать функцию, которая записывает данный массив в создаваемый бинарный файл. Если цена сканера меньше 200, то данные об этом сканере в файл не записываются. Информация об остальных сканерах помещается в бинарный файл, причем сначала пишутся данные о всех сканерах, имя которых начинается с заглавной буквы, а затем – с прописной.

Структура файла: в первых четырех байтах размещается значение типа long, определяющее количество сделанных в файл записей; далее без пропусков размещаются записи о сканерах.

Привести пример программы, создающей файл с данными о сканерах и осуществляющей вывод на дисплей данных о требуемой записи (либо всех, либо по номеру).

Все необходимые данные для функции должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
Отправлен: 06.01.2008, 15:01
Вопрос задала: Есякова Наталья Генадиевна (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ross
Здравствуйте, Есякова Наталья Генадиевна!

Вот решение. Оно правда оказалось чуть больше чем я ожидал :(... Вобщем, если чтото будет неясно, стучитесь в icq

Приложение:

---------
Доступно только то, что видимо (c) Б. Керниган

Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 08.01.2008, 23:36
Оценка за ответ: 5


Вопрос № 117.210
Помогите пожалуйста написать код программы на C++.
Дан массив целых чисел, состоящий из 20 элементов. Найти самый большой и самый маленький элемент и вывести их значения на экран.
Отправлен: 06.01.2008, 15:49
Вопрос задал: Александр Крупнов (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евсюков Виталий Евгеньевич
Здравствуйте, Александр Крупнов!
о_О
Это же сложнейшая задача!)))
Вот кусок кода
min = a[0];
max = a[0];
// n - размерность массива
for (i=1;i<n;i++) {
if (a[i] > max) max = a[i];
if (a[i] < min) min = a[i];
}
---------
I Aear can ve na Mar
Ответ отправил: Евсюков Виталий Евгеньевич (статус: 2-ой класс)
Ответ отправлен: 06.01.2008, 15:54
Оценка за ответ: 4
Комментарий оценки:
хотелось бы немного поподробнее, но все равно спасибо!+

Отвечает: Maksim Trofimov
Здравствуйте, Александр Крупнов!
#include <stdio.h>

int main(void)
{
int arr[] = {34,1,1,2,3,4,5,6,7,8,9,0,12,12,45,65,23,87,54,89};
int min = arr[0]; // начальное значение для мин числа
int max = arr[0]; // начальное значение для макс числа
unsigned j;

// бежим по массиву и сравниваем его каждый элемент
// с макс числом(переменной max), если он больше прежнего макс. числа,
// то присваемаем это значение переменной max. Точно
// также с нахождением мин. числа.
for(j = 0; j < 20; j++)
{
if(arr[j] > max)
max = arr[j];
if(arr[j] < min)
min = arr[j];
}
printf("max: %d min: %d ", max, min);

return 0;
}
Ответ отправил: Maksim Trofimov (статус: 4-ый класс)
Ответ отправлен: 06.01.2008, 16:14
Оценка за ответ: 3
Комментарий оценки:
конечный результат не выводится на экран(по крайней мере, если компилировать через Dev-C++). Если вам не трудно, подскажите почему.

Отвечает: Djec
Здравствуйте, Александр Крупнов!
Решение задачи в приложении:

Приложение:

---------
"Если ты что-то делаешь, делай это хорошо. если же ты не можешь или не хочешь делать хорошо, лчуше совсем не делай" © Л.Н.Толстой"

Ответ отправил: Djec (статус: 7-ой класс)
Ответ отправлен: 06.01.2008, 17:53

Отвечает: Solar
Здравствуйте, Александр Крупнов!

Код в приложении.

Приложение:

Ответ отправил: Solar (статус: 2-ой класс)
Ответ отправлен: 08.01.2008, 01:11


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.69 от 06.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное