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

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


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

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

Выпуск № 712
от 16.04.2007, 18:35

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


Вопрос № 81962: Здравствуйте, уважаемые эксперты. У меня в программе есть два окна. Но когда закрываю второе окно, нажимая на крестик в правом верхнем углу, программа полностью не закрываеться. Что мне нужно сделать, чтобы программа закрывалась в такой ситуации? ...
Вопрос № 81981: нужно написать програмку на одномерные массивы: в одномерном массиве, состоящем из n вещественных элементов, вычислить количество отрицательных элементов...
Вопрос № 81994: Уважаемые эксперты недавно приобрёл книгу "Язык программирования C++ вводный курс" автор Липпман. Так вот выполняя очередное упражнение(прога к-я используя цикл while отображает на экране числа от 10 до 0), не могу вывести результат на ...
Вопрос № 82005: Подскажите где скачать Borland C++ 5.02 (не 3.11, не 5, не 5.01) и желательно обновления к нему. На сайте борланда не нашёл, в инете тоже.. А то у себя нечаянно стёр.. теперь мучаюсь :( Заранее спасибо! Можно ссылки в Личку...
Вопрос № 82009: Здравствуйте. Допустим, имеется переменная вещественного типа, а также переменная, занимающая один байт. Например: float f; unsigned char a; В моем справочнике написано, что float занимает 32 бита. Допустим, что это так (маловато...
Вопрос № 82108: Мужики здрасьте! Просьба! Киньте пожалуйста ссылку где написанот как работать с прогресс баром! желательно чтоб там были и примеры. Спаибо...

Вопрос № 81.962
Здравствуйте, уважаемые эксперты. У меня в программе есть два окна. Но когда закрываю второе окно, нажимая на крестик в правом верхнем углу, программа полностью не закрываеться. Что мне нужно сделать, чтобы программа закрывалась в такой ситуации?

Заранее, спасибо.

Приложение:

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

Отвечает: Lomer
Здравствуйте, neWMan!
Поставьте в обработчик TForm2::FormClose строку Applicaiton->Terminate();

Ответ отправил: Lomer (статус: 4-ый класс)
Ответ отправлен: 10.04.2007, 19:49
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо за совет! Обязательно им воспользуюсь.


Вопрос № 81.981
нужно написать програмку на одномерные массивы:
в одномерном массиве, состоящем из n вещественных элементов, вычислить количество отрицательных элементов
Отправлен: 10.04.2007, 21:21
Вопрос задал: Myrzia63 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Lomer
Здравствуйте, Myrzia63!

#define N 100
float nums[N];
...

int BelowZero(){
int count=0;
for(int i=0;i<N;i++)if(nums[i]<0)count++;
return count;
}

P.S. Такое каждый должен знать.
Ответ отправил: Lomer (статус: 4-ый класс)
Ответ отправлен: 10.04.2007, 21:31

Отвечает: Menand
Здравствуйте, Myrzia63!

а в чём сложность?

#define n 100

#include <stdio.h>

int kol=0;
int mas[n];

void main() {
for(int i=0;i<n;i++) { gets mas[i]; };
for(int i=0;i<n;i++) {if (mas[i]<0) kol++ };
printf("%i",kol);
}

к сожалению под рукой компилятора С нету, проверить не могу...

проверку кстати можно в заполнение массива засунуть...

можно процедуру сделать и массив с количеством как параметры передавать.. просто не вижу в чём сложность - программа из разряда "моя первая прога на массив".. может вы каконить условие не дописали?..
Ответ отправил: Menand (статус: 6-ой класс)
Ответ отправлен: 10.04.2007, 21:32

Отвечает: Mister Vova
Здравствуйте, Myrzia63!
вот сердце
for ( i=0;i<n;i++)
{
if (M[i]<0) Col++;
}
и всё

Приложение:

---------
Всё про Себя Тут Www.SahajaYoga.Ru

Ответ отправил: Mister Vova (статус: 2-ой класс)
Ответ отправлен: 11.04.2007, 13:14


Вопрос № 81.994
Уважаемые эксперты недавно приобрёл книгу "Язык программирования C++ вводный курс" автор Липпман.
Так вот выполняя очередное упражнение(прога к-я используя цикл while отображает на экране числа от 10 до 0), не могу вывести результат на экран. Компилятор C++Builder 5.
Подскажите в чём причина и как исправить(код в приложении).
Заранее спасибо!

Приложение:

Отправлен: 10.04.2007, 22:36
Вопрос задал: Кондрашов Дмитрий (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Boriss
Здравствуйте, Кондрашов Дмитрий!
:)) А как программа у Вас будет что-то выводить?
Вывод производится в цикле while, условие выполнения цикла sum <=0, а она у Вас равна 10!!!

---------
Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор)
Россия, Саранск
Организация: mte
WWW: Программирование на Паскале
----
Ответ отправлен: 11.04.2007, 12:20
Оценка за ответ: 5

Отвечает: Olegzp
Здравствуйте, Кондрашов Дмитрий!
int main(int argc, char* argv[])
{
int sum=10,val=1;
// ошибка была while(sum<=0)цикл не выполняется, так как изначально sum > 0
while(sum > -1)
{
std::cout<<sum<<std::endl;
sum = sum - val;
//можно использовать следующие конструкции
//sum -= val;
//sum--;
}
getch();
return 0;
}
Ответ отправил: Olegzp (статус: 2-ой класс)
Ответ отправлен: 11.04.2007, 12:35
Оценка за ответ: 5

Отвечает: Mister Vova
Здравствуйте, Кондрашов Дмитрий!
у тебя while(sum<=0)
.................^....
а надо while(sum>=0)
................^....
---------
Всё про Себя Тут Www.SahajaYoga.Ru
Ответ отправил: Mister Vova (статус: 2-ой класс)
Ответ отправлен: 11.04.2007, 12:58
Оценка за ответ: 5
Комментарий оценки:
Thanks!

Отвечает: Sov
Здравствуйте, Кондрашов Дмитрий!
Кажется это делается так)

Приложение:

Ответ отправил: Sov (статус: 1-ый класс)
Ответ отправлен: 11.04.2007, 17:45
Оценка за ответ: 5
Комментарий оценки:
Спвсибо!

Отвечает: kool
Здравствуйте, Кондрашов Дмитрий!
Поменяй в цикле условие while(sum<=0) на
while(sum>=0).Удачи!

---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 11.04.2007, 18:09
Оценка за ответ: 5
Комментарий оценки:
Извините, ступил! :-)
Большое спасибо!!!


Вопрос № 82.005
Подскажите где скачать Borland C++ 5.02 (не 3.11, не 5, не 5.01) и желательно обновления к нему.

На сайте борланда не нашёл, в инете тоже.. А то у себя нечаянно стёр.. теперь мучаюсь :(

Заранее спасибо!

Можно ссылки в Личку писать, а сюда "отписал в личку".

Оценками "5" (пять) не обижу ;)
Отправлен: 10.04.2007, 23:29
Вопрос задал: Menand (статус: 6-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Рязанов Максим Валерьевич
Здравствуйте, Menand!
Взять его можно отсюда:
ftp://ftpc.borland.com/pub/bcppbuilder/cb5trial/CBuilder5Trial.exe [136 Мб]
Удачи.
Ответ отправил: Рязанов Максим Валерьевич (статус: 2-ой класс)
Ответ отправлен: 11.04.2007, 13:03


Вопрос № 82.009
Здравствуйте.
Допустим, имеется переменная вещественного типа, а также переменная, занимающая один байт. Например:
float f;
unsigned char a;

В моем справочнике написано, что float занимает 32 бита. Допустим, что это так (маловато кажется. В Delpfi float - 8 байт. В справочнике ошибка?).
Мне нужно получить доступ к произвольному байту переменной f (в том виде, как она записана в памяти), чтобы записать это значение в а. Пользоваться нужно для этого, очевидно, указателями.
Отправлен: 11.04.2007, 00:03
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Allex
Здравствуйте, Blackie!

Стандарт языка С оставляет размеры типов данных на усмотрение реализации. Поэтому float действительно может занимать разное количество байт. Узнать конкретное можно с помощью sizeof(float).
Если взять адрес а и преобразовать его к указателю на char, то можно получить значения байтов f.
unsigned char* p = (unsigned char*)&f;
a = p[0]; или a = *p;
a=p[i]; или a = *(p+i);
где 0 <= i < sizeof(f)
Ответ отправил: Allex (статус: 7-ой класс)
Ответ отправлен: 11.04.2007, 08:30
Оценка за ответ: 5

Отвечает: Mister Vova
Здравствуйте, Blackie!
Можно воспользоваться Побитовыми операциями
Поскольку мне известно в типах с плавающей точкой формат записи значения отличен от целочисленных

Примерно такой:
[1 бит - знаковый][15 бит - число][1 бит - знак экспоненты][15 бит – значение экспоненты]
( не уверен если именно (точно) так )

---------
Всё про Себя Тут Www.SahajaYoga.Ru
Ответ отправил: Mister Vova (статус: 2-ой класс)
Ответ отправлен: 11.04.2007, 12:36
Оценка за ответ: 2
Комментарий оценки:
Различие в форматах не имеет значения. В любом случае не должно быть, чтобы 4 байта были равны нулю при разных float-значениях этих же байт.

Отвечает: kool
Здравствуйте, Blackie!
нет в справочнике все правильно.
Можно проверить
int i=sizeof(float);
Есть еще два типа - double и long double.
Чтобы получить доступ к произвольному байту переменной f
см приложение.t-указатель на 4-х байтовый массив, в кот.
содержится f.
Удачи!

Приложение:

---------
I am.

Ответ отправил: kool (статус: Студент)
Ответ отправлен: 11.04.2007, 18:09
Оценка за ответ: 5
Комментарий оценки:
А зачем в *(t+i) (i=0..3) записывать одинаковое значение sizeof(float)?


Вопрос № 82.108
Мужики здрасьте!
Просьба!
Киньте пожалуйста ссылку где написанот как работать с прогресс баром!
желательно чтоб там были и примеры.
Спаибо
Отправлен: 11.04.2007, 17:13
Вопрос задал: Tatarin (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

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

http://msdn.microsoft.com/msdnmag/issues/03/01/CQA/
пример от микрософта. код в наличии

в довесок
http://www.p-lib.pp.ru/articles/articles.asp?mode=artview&ID=277
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 11.04.2007, 18:01

Отвечает: Lomer
Здравствуйте, Tatarin!
Советую скачать эту книгу:
Link... [Gh0stik]
Там не только про прогресс-бары ;) Правда все только на WIN32API.
Ответ отправил: Lomer (статус: 4-ый класс)
Ответ отправлен: 11.04.2007, 19:34


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.50 (beta) от 15.04.2007
Яндекс Rambler's Top100

В избранное