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

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


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

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

Выпуск № 633
от 09.01.2007, 16:35

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


Вопрос № 69408: Привет эксперты. Есть вопрос. Нужна ссылки на материалы по протоколам. А точнее как создать и зарегистрировать протокол в Window ? Пример есть протокол HTTP. Если задать ссылку в Пуск-> Выполнить пример h123://Hello. То должно запустит...
Вопрос № 69432: Приветик Всем! не поможете с лабораторной работой? а то я не могу ничего понять((((( ...
Вопрос № 69487: Всем привет. Мне на С нужен кусок кода, для того чтобы в списке целых чисел подсчитать количество отрицательных элементов и их сумму. А также ручной и автоматический ввод этого самого списка целых числе. ...
Вопрос № 69500: Здравствуйте эксперты. Если я не покажусь очень назойливым то помогите мне пожалуйста. Вчера я задавал вопрос как зарегистрировать протокол в Windows. Ответ я нашёл быстро посмотрев в реестре как проработан HTTP и получив ответ от экспер...
Вопрос № 69504: Здравствуйте, уважаемые эксперты! Скажите, пожалуйста, как читать построчно из файла (или просто определять конец строки), используя Borland C? Заранее спасибо!...

Вопрос № 69.408
Привет эксперты.
Есть вопрос.
Нужна ссылки на материалы по протоколам. А точнее как создать и зарегистрировать протокол в Window ?
Пример есть протокол HTTP. Если задать ссылку в Пуск-> Выполнить пример h123://Hello. То должно запустится определённое приложение и ему должен передать параметр Hello.
Отправлен: 03.01.2007, 15:48
Вопрос задал: Tamashev Denis M (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: QDSota
Здравствуйте, Tamashev Denis M!

То же самое, что и зарегестрировать расширение:
Добавляешь в реестр ветку:
HCRh123shellopencommand
В ней создаешь значение по умолчанию:
REG_SZ "<путь к твому приложению>" %1

---------
Открыть глаза навстречу солнцу
Ответ отправил: QDSota (статус: Профессионал)
Россия, Зеленоград
Тел.: 8-916-53-43-916
ICQ: 84611301
----
Ответ отправлен: 03.01.2007, 16:06
Оценка за ответ: 5
Комментарий оценки:
Я попытался сделать аналог HTTP всё бы хорошо браузер открывается вот только система выкинула BSOD =( Но будем пытатся ;)


Вопрос № 69.432
Приветик Всем!
не поможете с лабораторной работой?
а то я не могу ничего понять(((((

Приложение:

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

Отвечает: Терсков Сергей
Здравствуйте, Lena_25!

В принципе, никаких сложностей тут нет…

Пункты операций с файлами я пропущу…

Задание №3. Оно демонстрирует передачу параметров в функцию возможную в C++. В первом варианте:

void change(int *x, int *y)

параметры переданы через указатель, т.е. в функцию передается адрес переменной. Сама функция выполняет перестановку значений у двух переменных. Для того чтобы получить доступ к значениям переменных x и y, разыменовываются указатели на них, т.е. *x и *y.

Второй вариант возможен только в C++. Это передача параметров через ссылку.

void chan(int& x, int& y)

В принципе, в функцию передается тот же адрес переменной, но в отличие от указателя модифицировать этот адрес нам не удастся. При передаче параметров с помощью ссылок мы можем модифицировать только значение переменной находящейся по адресу, хранящемуся в ссылке. Для начала понять это может быть сложно, но, изучая теорию C++, все легко понимается.

Задание №9. Здесь демонстрируется работа с двумерными массивами. Всего в программе используются четыре функции.

1. void inputmas(float m[I][J], char im)

Параметры этой функции:
float m[I][J] – двумерный массив куда нужно ввести данные.
char im – имя массива.

В этой функции в цикле выполняется ввод в массив при помощи стандартного потока ввода cin.

2. void raschet (float x[I][J], float *sred, float *min)

Параметры этой функции:
float x[I][J] - двумерный массив для нахождения в нем среднеарифметического всех положительных элементов и минимального элемента.
float *sred – указатель на переменную куда будет передаваться среднеарифметическое положительных элементов двумерного массива.
float *min - указатель на переменную куда будет передаваться минимальный элемент массива.

В этой функции основой является двойной вложенный цикл. В этом цикле с помощью двух условий мы находим оба интересующих нас значения. Для среднеарифметического это:

if ( x[i][j] > 0 ) {
sum += x[i][j];
kol ++;
}

Т.е. если текущий элемент положительный, то прибавляем его к общей сумме положительный элементов и количество их увеличиваем на 1. После прохождения цикла, выполняем операцию деления и записываем результат в переменную sred.

*sred = sum / kol;

Для минимального элемента, в самом начале принимаем за него самый первый элемент массива.

*min = x[0][0];

В цикле сравниваем его с текущим и, если он меньше, принимаем его за минимальный.

if ( x[i][j] < *min )
*min = x [i][j];

Таким образом, в конце функции получается, что значение переменной min это и есть минимальный элемент массива.

3. void printmas(float x[I][J], char immas)

Параметры этой функции:
float x[I][J] – двумерный массив для вывода.
char immas – имя массива.

Здесь в цикле выводятся значения массива x[I][J] при помощи стандартного потока вывода cout. Для cout мы задаем некоторые параметры, например фиксированную ширину и вывод двух точек после запятой.

4. void printrez(float x[I][J], char immas, float sred, float min)

Параметры этой функции:
float x[I][J] – двумерный массив куда нужно ввести данные.
char immas – имя массива.
float sred – среднеарифметическое значение положительных элементов массива
float min – минимальный элемент массива.

В функции main задаются два двумерных массива и с помощью описанных выше функций вводятся данные в них, выполняется расчет нужных значений и выводится конечный результат.

Задание №12. Текст измененной функции приведен. Так что единственная задача - поменять вызов функции в main.

raschet(c, sredc, minc);
raschet(d, sredd, mind);

Задание №16. Необходимо немного поменять функцию raschet. Например вот так:

void raschet (float x[I][J], float &sum, float &kol, float &min) { //меняем список параметров

// объявление переменных
int i,j;
sum=0.0; // для расчета суммы отрицательных эл-тов
kol = 0; // для расчета количества отрицательных эл-тов

min = x[0][0]; // первоначально в качестве минимального
// принимаем элемент x[0][0], его значение
// заносим по адресу, хранящемуся в min

for (i=0; i<I; i++)
for ( j=0; j < J; j++) {

if (x[i][j] < min )
min = x [i][j];

if (x[i][j] < 0)
sum += x[i][j]; //считаем сумму отрицательных элементов

if(x[i][j] >=-5 && x[i][j] <=5)
kol ++; //кол-во элементов в интервале -5; 5
}

}

Вот собственно и все…
Ответ отправил: Терсков Сергей (статус: 3-ий класс)
Ответ отправлен: 04.01.2007, 03:56


Вопрос № 69.487
Всем привет.
Мне на С нужен кусок кода, для того чтобы в списке целых чисел подсчитать количество отрицательных элементов и их сумму. А также ручной и автоматический ввод этого самого списка целых числе.
Отправлен: 04.01.2007, 09:59
Вопрос задал: POSTAL (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, POSTAL!

Попробуйте код в приложении

Если нужен ручной ввод то замените

for(i=0; i<size; i++)
A[i] = rand()%100;

for(i=0; i<size; i++)
if(rand()%2)
A[i] = -A[i];

на

for(i=0; i<size; i++)
scanf("%d", &A[i]);

Приложение:

Ответ отправил: Терсков Сергей (статус: 3-ий класс)
Ответ отправлен: 04.01.2007, 10:37
Оценка за ответ: 5

Отвечает: John Paramol
Здравствуйте, POSTAL!
Вот еще как вариант.
Удачи

Приложение:

---------
1=2, at values 1 large enough

Ответ отправил: John Paramol (статус: 5-ый класс)
Ответ отправлен: 04.01.2007, 14:25
Оценка за ответ: 5


Вопрос № 69.500
Здравствуйте эксперты.
Если я не покажусь очень назойливым то помогите мне пожалуйста.
Вчера я задавал вопрос как зарегистрировать протокол в Windows.
Ответ я нашёл быстро посмотрев в реестре как проработан HTTP и получив ответ от эксперта.
Теперь вопрос в другом долго пытался найти но не нашёл =(
Мне нужно чтоб при передачи параметра приложению например h111://Hello программа выводила MessageBox с надписью Hello если вместо Hello будет что-то другое она должна вывести что-то другое.
С уважением,
Zmeu.
Отправлен: 04.01.2007, 11:43
Вопрос задал: Tamashev Denis M (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: ramok
Здравствуйте, Tamashev Denis M!

не проверял, но идея должна быть понятна

Приложение:

Ответ отправил: ramok (статус: 5-ый класс)
Ответ отправлен: 04.01.2007, 15:40
Оценка за ответ: 4
Комментарий оценки:
Извените но вы нетак поняли =(
Нужно обрабатывать неизвестные ссылки а не которые
уже известны типа hello...


Вопрос № 69.504
Здравствуйте, уважаемые эксперты! Скажите, пожалуйста, как читать построчно из файла (или просто определять конец строки), используя Borland C? Заранее спасибо!
Отправлен: 04.01.2007, 12:16
Вопрос задала: Мотя (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Santana
Здравствуйте, Мотя!
Подключаем библиотеки
#include<iostream>
#include<fstream>
#include<iomanip>

создаем буфер для чтения
char cString[254];

using namespace std;

открываем файл
ifstream infile("file.txt");
do
{
читаем его построчно. 254 - это максимальная длина строки. если в файле могут быть строки более 254. эту цыфирь можно увеличить
infile.getline(cString, 254);
} while (!infile.eof());

infile.close();

Ответ отправил: Santana (статус: 8-ой класс)
Ответ отправлен: 04.01.2007, 12:49

Отвечает: kool
Здравствуйте, Мотя!
----------------------------
Используй функцию fgets().
----------------------------
Ответ отправил: kool (статус: 3-ий класс)
Ответ отправлен: 05.01.2007, 11:42


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.38 от 20.12.2006
Яндекс Rambler's Top100

В избранное