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

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


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

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

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

Выпуск № 1068
от 18.05.2008, 04:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 485, Экспертов: 53
В номере:Вопросов: 41, Ответов: 56

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


Вопрос № 135009: Здравствуйте, уважаемые эксперты! Очень нужна ваша помощь. Задали курсовой по программированию на первом курсе, но я никак не могу понять как написать программу. Условие задачи более похоже на "сказку", видимо это меня и сбивает с толку. По...
Вопрос № 135058: Здравствуйте,уважаемые.Просьба помочь с решением задачи на двумерные массивы. Известно количество сделанных столов тремя фабриками за два квартала.Определить, какая фабрика выпустила максимальное количество столов. Спасибо....
Вопрос № 135083: Здравствуйте, google завел меня на эту рассылку, похоже здесь найду ответ на свои вопросы. Помогите разобраться с работой ф-и ShellExecuteA. Я использую ее в скрипте, который проверенно работает без проблем, на некотором терминале. Скрипт считывает д...
Вопрос № 135162: Borland C++3.1 консольное приложение При определенных данных программа вылетает. Что это означает? ошибка?какая?...
Вопрос № 135183: Добрый вечер, уважаемые эксперты. прошу оказать помощь в написании следующей программы: вычислить с помощью двусвязного списка следующий ряд X(1)*X(n)+X(2)*X(n-1)+X(3)*X(n-2)+... Заранее благодарен....
Вопрос № 135223: Уважаемые эксперты проверьте правильно пожайлуста правильно ли работает данная программма: Код программы смотрите в приложении. Задание было таким: Нужно было заменить в строке введённой пользователем все целые числа соотве...
Вопрос № 135244: Как в программе на MS Visual C++ работать со стандартным диалогом сохранения файла. Поясните на примерах...
Вопрос № 135246: Есть такой кусок кода: int size = recvfrom(s,(char*)recvbuf,64,0,(SOCKADDR *)&saddr,&saddrsize); if (size != -1) if (MessageBox(hWnd,L"Компьютер с адресом *.*.*.* хочет переслать вам файл",L"Сообщение",MB_YE...
Вопрос № 135267: Здравствуйте уважаемые эксперты!) Нужна ваша помощь. Мне необходимо откомпилировать программу, текст которой в приложении, с разными ключами компиляции, используя Microsoft Visual Studio 2008 Professional Edition. Затем, как я понял, она должна вывод...
Вопрос № 135269: Здравствуйте уважаемые эксперты! Помогите пожалуйста разобраться с весьма простой задачей. Видимо тема мной не совсем так как нужно понята. У меня получается всякая, так сказать "корявщина". Программу нужно написать на языке С. Текст задачи...
Вопрос № 135282: Привет! Есть два вопроса. 1) Нужно: написать подпрограмму, которая возвращает преобразованную к верхнему регистру строку, полу- ченную в качестве аргумента (т.е. вместо малых букв, выводит строку заглавными буквами). Прове- р...
Вопрос № 135289: В следующем куске кода int size = recvfrom(s,(char*)recvbuf,64,0,(SOCKADDR *)&saddr,&saddrsize); if (size != -1) { if (MessageBox(hWnd,(LPCWSTR)inet_ntoa(saddr.sin_addr),L"Сообщение",MB_YESNO)==IDYES) SendMessag...
Вопрос № 135324: Здравствуйье уважаемые эксперты вы не могли бы ответи на мой вопрос: Как сделать так чтобы во время работы программы, т.е. в самом консольном приложении вместо английских букв и дургой абракадабры высвечивались русские буквы? Как поменять ко...
Вопрос № 135330: Как передать во 2-й параметр мессэджбокса конкатенацию 3-х строк в UNICODE? Нужно сделать что-то вроде "Компьютер с адресом *.*.*.* хочет переслать вам файл". За место звездочек адрес, возвращаемый A2CW. Оператор "+" здесь не буде...
Вопрос № 135514: Добрый вечер, уважаемые эксперты. Задача: Пользователь вводит с клавиатуры строку. Создается числовой одномерный массив с таким же количеством элементов, сколько у строки - значащих символов. Записывает коды этих символов в числовой массив и, оба мас...
Вопрос № 135545: Помогите разобраться с ошибками в программе. Суть такая: есть функция, приведенная в приложении. Мне надо просто записат ь в файл содержимое буфера recvbuf. С помощью нее я открываю диалог сохранения, и когда файл выбран записываю в него данные следую...
Вопрос № 135551: Доброй ночи. Уважаемые помогите сделать задачи в с++. Сегодня экзамен и очень срочно нужно. Пжл. 1) Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если да, то будет ли он прямоугольным. 2)...
Вопрос № 135564: Добрый день. На старости лет пытаюсь освоить С++ (Pascal/Delphi работаю в основном :). Установил Visual C++ 2005, сразу подводные камни в простейшей задаче. Создал форму, на ней два поля textBox1 и textBox2 и кнопка button1. Хочу в textBox1 в...
Вопрос № 135574: Здравструйте, вопрос такой: хочу разработать ПО, писаться будет на Visual C++ 2005. Так как идеи особо распространять не хочу, формулировки будут очень размыты. Пользователем с интерфейса должны будут забиваться данные, структура данных всегда одинак...
Вопрос № 135705: Сдраствуйте товарищи эксперты. Помогите пожалуйста с программой. Условие: Выпольнить задание Написать программу которая считывает из текстового файла три предложения и выводит их в обратном порядке. ,оформив в виде функций законченные...
Вопрос № 135723: Как у static'а поменять цвет шрифта и если такой возможности у него нет, то как создать и работать с объектом, аналогичным ему, но со свойством цвета шрифта?...
Вопрос № 135762: Здравствуйте. я начинающий юзер, вот написал небольшую программку, которая генерирует пароли. Подскажите пожалуйста как правильно её оформить, всмысле по всем правилам с++? Правильно ли я оформил, если нет, то как правильно это сделать? #inc...
Вопрос № 135802: Помогите решить задачки по С 1.среди N введённых чисел найти количество соседей разных знаков 2.Ввести предложение, слова в котором разделены пробелами и запятыми. Распечатать те слова, которые являются обращениями других слов в этом предложе...
Вопрос № 135856: Здраствуйте уважаймые эксперты, помогите пожалуста написать код программы: необходимо вычислить сумму первых N целых положительных четных чисел....
Вопрос № 135888: Здравствуйте! В ходе выполнения программы переменная n получает некоторое значение, как после этого создать массив размера nxn? Или все-таки придется обявлять массив размером зараннее бОльшего размера, чем n? С Уважением, LexXx!...
Вопрос № 135986: Добрый день, уважаемые эксперты. У меня возникла большая проблема. Я учусь на первом курсе и нам по программированию задали написать курсовой, который я пытался написать, но у меня ничего не вышло. Смысл задачи я примерно понял, но когда пытаюсь запр...
Вопрос № 136027: Здравия желаю,товарищи эксперты!Помогите пожалуйста с решение задачи на циклические алгоритмы. В бригаде имеется N станков. Первый станок работал m часов, а каждый следующий на 10 минут больше, чем предыдущий. Сколько часов проработала вся б...
Вопрос № 136028: Приветствую!Уважаемые эксперты,просьба помочь с задачей на строки. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить длину самого короткого слова....
Вопрос № 136111: Доброй ночи уважаймые эксперты, буду вам очень благодарна если поможете со следующей задачей Дана структура с именем ZNAK, содержащая следующие поля: ∙ Фамилия, имя, ∙ Знак Зодиака, ∙ Дата рождения (массив из трех чисел) Написать ...
Вопрос № 136164: Здравствуйте! Очень нужна Ваша консультация! Моя училка по-программированию, говорила мне, что если подсчитать на Си++ одно и тоже самое выражение, только с помощью разных типов данных (например использовать сначала float, а потом double), т...
Вопрос № 136189: Здравствуйте! Только начал изучать этот замечательный и сложный язык! Помогите пожалуйста решить такую задачку: Дана последовательность из n целых чисел. Найти максимальный элемент в этой последовательности (без использования массивов). Заранее с...
Вопрос № 136190: Здравствуйте! Помогите пожалуйста с задачкой, если можно с обьяснениями: Дана последовательность целых чисел, за которой следует 0. Найти максимальный элемент в этой последовательности. Заранее спасибо!...
Вопрос № 136191: Здравствуйте ещё раз! Помогите пожалуйста с задачкой: Найти первое отрицательное число последовательности u=cos(ctg(n)), где n=1,2,3…. Очень надеюсь на Вашу помощь!...
Вопрос № 136294: Здравствуйте! Очень нужна Ваша консультация! Моя училка по-программированию, говорила мне, что если подсчитать на Си++ одно и тоже самое выражение, только с помощью разных типов данных (например использовать сначала float, а потом double), т...
Вопрос № 136316: Обшарил все книжные магазины в поисках книжки с описанием стандартной библиотеки C - ничего нету. Одна попса типа C# для чайников и 1С для идиотов. Если у кого есть в цифровом виде - дайте пожалуйста. Или ссылку по теме. Требуется именно полное о...
Вопрос № 136340: Здравствуйте! У меня возникла проблема. Я пишу программу в C++ Builder 6 Программа должна работать с документами Word. Есть три документа: договор, заявление и квитанция. Во все три документа надо внести паспортные данные и дату. В программе есть...
Вопрос № 136350: Здравствуйте, пытаюсь вывести содержание раздела реестра со всеми его подразделами в ListBox(в программе lb), используя рекурсию. Как сделать так что бы не возникало переполнение стека? Если есть ошибки в тексте программы, то юольшая просьба , помоги...
Вопрос № 136362: Добрый день уважаемые эксперты. Подскажите пожалуйста где можно скачать Windows Sockets SDK? на сайте Майкрософт доступна только он лайн версия. А для меня это не совсем удобно. Или же где могут быть видео-уроки по сокетам? Я только начинаю ...
Вопрос № 136497: Здравствуйте уважаемые эксперты, просьба решить задачу с использованием C++builder 6. Дана действительная квадратная матрица порядка N. Найти наибольшее из значений элементом расположенных в заштрихованной части матрицы. ________ |\...
Вопрос № 136545: Имеется очень хитрая задача: На месте щелчка левой клавишей мыши появляется квадрат, всякий раз другого цвета. Обеспечить отображение всех квадратов при сворачивании-разворачивании окна. Хранить координаты щелчков мыши в списочной структуре ...
Вопрос № 136571: Здравствуйте! Уже неоднократно задавал это вопрос, может хоть кто-нибудь откликнеться!? Напишыте пожалуйста имена основных библиотек Си++ и краткое описание Например #include<iostream> и т.д. Если можно, то не отвечайте ссылками на разл...

Вопрос № 135.009
Здравствуйте, уважаемые эксперты! Очень нужна ваша помощь. Задали курсовой по программированию на первом курсе, но я никак не могу понять как написать программу. Условие задачи более похоже на "сказку", видимо это меня и сбивает с толку. Пожалуйста, помогите написать текст программы на языке С (Не С++). Условие задачи в приложении.

Приложение:

Отправлен: 02.05.2008, 12:10
Вопрос задал: Демарчук Константин Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Терсков Сергей
Здравствуйте, Демарчук Константин Александрович!
Опишем ситуацию следующим образом:
Пусть наш замок это граф, где его вершины - это комнаты, а ребра - двери между комнатами (подробнее о графахru.wikipedia.org)). Опишем его матрицей смежности. Т.е. если на пересечении i-строки и j-столбца стоит 1, значит дверь между комнатами открыта, если 0 то дверь либо закрыта, либо его нет. Таким образом из начальной комнаты бежит принц и закрывает за собой двери, т.е. меняет соответствующие значения в матрице смежности с 1 на 0. Затем гувернантка должна его найти, т.е. найти существует ли путь между двумя вершинами графа, после того как его изменяли. Метод поиска реализованный в программе неоптимален, и, если нужно, его можно заменить. Например на алгоритм Дейкстрыru.wikipedia.org). Вот собственно и все. Единственная проблема в наглядности представления всего этого. В моей программе используется схема комнат, как в приложенном файле. Реализация программы в приложении. Компилятор MS VS 2005.

Приложение:

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 04.05.2008, 09:44
Оценка за ответ: 5


Вопрос № 135.058
Здравствуйте,уважаемые.Просьба помочь с решением задачи на двумерные массивы.
Известно количество сделанных столов тремя фабриками за два квартала.Определить, какая фабрика выпустила максимальное количество столов.
Спасибо.
Отправлен: 02.05.2008, 17:21
Вопрос задал: Kompas (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Kamerad
Здравствуйте, Kompas!

Надеюсь, что я правильно понял условие задачи.

С клавиатуры вводится кол-во столов для каждой фабрики по кварталам.
Затем по данным таблицы определяется какая фабрика сделала больше столов.

Если что не так пиши!
Попробуем помочь.

Приложение:

Ответ отправил: Kamerad (статус: 3-ий класс)
Ответ отправлен: 03.05.2008, 23:14
Оценка за ответ: 5
Комментарий оценки:
Спасиюо!


Вопрос № 135.083
Здравствуйте, google завел меня на эту рассылку, похоже здесь найду ответ на свои вопросы. Помогите разобраться с работой ф-и ShellExecuteA. Я использую ее в скрипте, который проверенно работает без проблем, на некотором терминале. Скрипт считывает данные с терминала и по определенным условиям выполняет необходимые мне действия. Одно из которых с помощью этой ф-и запустить простенький бат-файл. Так вот проблемма в том, что бат-файл запускается (это понятно по появлению черного консольного окна), но не выполняет действия заложенные в нем. Это при том, что при запуске вручную бат-файл работает нормально. Что делать не знаю ищу help-ы по этой ф-и. Но может Вы поможете? Заранее спасибо.

Приложение:

Отправлен: 02.05.2008, 22:32
Вопрос задал: Поспелов Юрий Александрович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Виктор Пырлик
Здравствуйте, Поспелов Юрий Александрович!

INSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);

ShellExecuteA(NULL,NULL,"cmd.exe", "/c c:\Lern.bat",NULL,SW_SHOWNORMAL);

Я бы запустил так. Дело в том, что надо указать путь полный, и дескриптор окна в данном случае бессмысленный, это консольное окно.
А вообще, ShellExecute - "Запустить оболочку".. т.е. приложение Windows с предопределенными параметрами ("open","print" и т.д.), и для запуска консольной задачи мало пригодно.. По этому, можно в третьем параметре передать всю строку - батник или программу и если есть параметры..
Можно например так:
ShellExecuteA(NULL,NULL,"c:\Lern.bat",NULL,NULL,SW_SHOWNORMAL);

Но наверно, в простейшем случае, можно просто использовать system("c:\Lern.bat"); или WinExec(&qu ot;c:\Lern.bat",SW_SHOW);
---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Свердловская обл.
Тел.: +7(34386) 53-5-98
ICQ: 490191733
----
Ответ отправлен: 03.05.2008, 02:29

Отвечает: kool
Здравствуйте, Поспелов Юрий Александрович!
Попробуйте так (см. приложение)
Нужно указывать полный путь к файлу, не
забывая про двойной обратный слэш в указании пути.
Удачи!

Приложение:

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

Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 03.05.2008, 07:22


Вопрос № 135.162
Borland C++3.1
консольное приложение
При определенных данных программа вылетает. Что это означает?
ошибка?какая?
Отправлен: 03.05.2008, 16:23
Вопрос задал: Warobushek (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: kool
!!!
Здравствуйте, Warobushek!
Скорее всего обращение к памяти которая не распределена.

Удачи!

Некорректный ответ отредактирован. Не нужно забывать о лояльности к посетителям портала. Устное предупреждение.
-----
∙ Отредактировал: Климова Марина Александровна (*Мастер-Эксперт)
∙ Дата редактирования: 03.05.2008, 17:37

---------
I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 03.05.2008, 17:28


Вопрос № 135.183
Добрый вечер, уважаемые эксперты. прошу оказать помощь в написании следующей программы: вычислить с помощью двусвязного списка следующий ряд X(1)*X(n)+X(2)*X(n-1)+X(3)*X(n-2)+...
Заранее благодарен.
Отправлен: 03.05.2008, 18:11
Вопрос задал: Лобанов Александр (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: CrazyIronToilet
Здравствуйте, Лобанов Александр!

Код программы с комментариями в приложении (написал в VS 2003, но компилироваться должно любым нормальным С++ компилятором, хотя насчет архаических типа Borland C++ 3.1 не уверен).
Чтобы задать какую-то конкретную функцию X(n) достаточно изменить метод Function::Calculate(int arg) (в текущей реализации X(n) = 3*n).

Приложение:

Ответ отправил: CrazyIronToilet (статус: Посетитель)
Ответ отправлен: 03.05.2008, 20:32


Вопрос № 135.223
Уважаемые эксперты проверьте правильно пожайлуста правильно ли работает данная программма:

Код программы смотрите в приложении.

Задание было таким:

Нужно было заменить в строке введённой пользователем все целые числа соотвествующим повторением следующего за ними символа.

Заранее благодарю.

Приложение:

Отправлен: 03.05.2008, 22:30
Вопрос задал: Королёв Александр Павлович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: CrazyIronToilet
Здравствуйте, Королёв Александр Павлович!

Очевидно Ты пользуешься очень старым компилятором (скорее всего Borland C++ 3.1 или Toorbo C++ 3.0).
Современные компиляторы даже не позволят скомпилировать твою программу (вместо <iostream.h> нужно было бы писать <iostream>, а вместо cin(src, 100) - cin.get(src, 100), а также дописать после инклудов строчку "using namespace std;"). Кроме того функции clrscr() и getch() а также заголовочный файл conio.h не входят в состав стандартной библиотеки С++, и их лучше все-таки не использовать (особенно учитывая, что без них легко обойтись).

Тем не менее программа работает неплохо, но в ней есть ошибки. Главная ошибка - память выделяется статически, а не динамически (т.е. длинна всех массивов задана константно - всем по 100 символов). Если для массива scr[] это не опасно (возможное переполнение предотвращается объектом cin (cin.get(src, 100)), то для массива dst[100] существует риск переполнения (например если пользователь введет строчку "Hello1000M", то символ "М" будет повторен 1000 раз, и зарезервированных ста символов явно не хватит.

Лучший способ решить эту проблемму - использовать динамическое выделение памяти. Или хотя бы введи счетчик приращений указателя dist_ptr в функции replace_all_numbers, чтоб когда количество приращений привысит 100, функция не записывала символы за пределы массива.

Еще один баг - если пользователь введет стоку, заканчивающуюся числом (например "Hello5", то строчка "++src_ptr;" выполнится раньше чем произойдет проверка условия в цикле while (т.е. программа перепрыгнет через условее завершение цикла и пойдет дальше бороздить просторы памяти компьютера, пока все-таки не встретит где-нибудь случайный ноль в памяти). Чтоб избежать этго замени сточку "++src_ptr;" на "if(*src_ptr) ++src_ptr;"

Удачи!

P.S. Поставь себе нормальный компилятор...
Ответ отправил: CrazyIronToilet (статус: Посетитель)
Ответ отправлен: 03.05.2008, 23:33

Отвечает: Виктор Пырлик
Здравствуйте, Королёв Александр Павлович!

Вот, немножко подправил логику..


while (isdigit(*src_ptr))
{
*num_ptr++ = *src_ptr++;
y++;// нам надо не само число, а количество чисел
}
//***************************
for (int i=0; i < y; i++ )
*dst_ptr++ = *src_ptr;
y = 0; // обнуляем, что бы если будет новая итерация, не суммировалось




в приложение код

Приложение:

---------
Если ничего не помогло - надо читать инструкцию

Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Свердловская обл.
Тел.: +7(34386) 53-5-98
ICQ: 490191733
----
Ответ отправлен: 04.05.2008, 07:35


Вопрос № 135.244
Как в программе на MS Visual C++ работать со стандартным диалогом сохранения файла. Поясните на примерах
Отправлен: 04.05.2008, 03:29
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

Вы не уточнили - в каком именно Visual C++.

Visual C++ 6.0:

CFileDialog - класс стандартного окна диалога для открытия и сохранения файлов.
Хоть этот класс так и называется, но он только запоминает путь до выбранного файла и его имя. А дальше Вы уже должны самостоятельно в коде программы воспользоваться полученным путем для сохранения или открытия файла(все это не касается архитектуры ДОКУМЕНТ/ПРЕДСТАВЛЕНИЕ).
1. необходимо подключить библиотеку #include <afxdlgs.h>

CFileDialog(bool flag) - простейший вариант конструктора. если flag=true тогда создастся объект окна с названием Open, иначе название окна будет Save As.

2. в нужном месте программы пишем

CFileDialog dlg=new CFileDialog(true); //создали объект класса
dlg.DoModal(); //отобразили окно, выбрали нужный файл, нажали кнопку ОК,
//после этого компьютер начнет выполнять следующие строчки кода.
CString path=dlg.GetPathName(); // получаем путь до выбранного файла
CString filename=dlg.GetFileName( ) ; // получаем имя выбранного файла

Далее творите с этим файлом все что вам заблагорасудится.

Совет: наилучший вариант для поиска ответов на подобные вопросы - MSDN, которой можно воспользоваться через сайт майкрософт.

З.Ы. если Вы используете Visual C++.NET, то схема работы с этим диалогом почти такая же, смотрите МСДН.

---------
1. Электроника - наука о плохих контактах. 2. Математик делает то что можно и так как нужно, а прикладной математик делает то что нужно и так как можно.
Ответ отправил: SergeyAT (статус: 2-ой класс)
Ответ отправлен: 04.05.2008, 19:29
Оценка за ответ: 3
Комментарий оценки:
Ваш ответ конечно правильный, но не в моем случае. Модуль не удавалось подключить из-за WINDOWS.H already included. MFC apps must not #include . А отключишь WINDOWS.H - тоже никакого эффекта. Так что все решилось простой диалоговой функцией GetSaveFileName


Вопрос № 135.246
Есть такой кусок кода:

int size = recvfrom(s,(char*)recvbuf,64,0,(SOCKADDR *)&saddr,&saddrsize);
if (size != -1)
if (MessageBox(hWnd,L"Компьютер с адресом *.*.*.* хочет переслать вам файл",L"Сообщение",MB_YESNO)==IDYES)

SendMessageW(hEditWnd,WM_SETTEXT,0,(LPARAM)recvbuf);

Нужно сделать, чтобы вместо звездочек в сообщении был действительный IP-адрес, располагающийся в переменной saddr. Он должен отображаться десятичными цифрами через точку. Как его переконвертировать?
Отправлен: 04.05.2008, 04:44
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Хватов Сергей
Здравствуйте, Blackie!
В UNIX-ах для этого служат inet_ntop() и устаревшая inet_ntoa(). Вполне возможно, что у вас что-нибудь из них есть.
Ответ отправил: Хватов Сергей (статус: Практикант)
Ответ отправлен: 04.05.2008, 08:03
Оценка за ответ: 5


Вопрос № 135.267
Здравствуйте уважаемые эксперты!) Нужна ваша помощь. Мне необходимо откомпилировать программу, текст которой в приложении, с разными ключами компиляции, используя Microsoft Visual Studio 2008 Professional Edition. Затем, как я понял, она должна выводить результат, то есть время выполнения программы. В общем, мне необходимо время выполнения программы, откомпилированной с разными ключами. Но данный компилятор выдает ошибку, программа не компилируется. Я попробовал Intel C++ Compiler, ошибок нет, но время она не выводит. Подскажите пожалуйста что мне делать. И стоит ли вообще пользоваться MS VS 2008 или лучше MS VS 2005??

Приложение:

Отправлен: 04.05.2008, 10:50
Вопрос задал: Демарчук Константин Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: CrazyIronToilet
Здравствуйте, Демарчук Константин Александрович!

Очень странно. У меня программа скомпилировалась и на VS 2003 (EE) и на VS 2008 (Team System). Скорре всего Вы либо не правильно используете компилятор, либо он как-то криво установлен на вашей машине (т.е. возможно прийдется его переустановить), либо неправильно настроен.

Я не проверял правильно ли реализована логика умножения матриц, но время программа таки выводит, просто она очень долго работает. Если уменьшить значение DIM (#define DIM 1000) c 1000 до 100 (или еще меньше), то Вы увидите результат гораздо быстрее, и программа не будет казаться зависшей.
Ответ отправил: CrazyIronToilet (статус: Посетитель)
Ответ отправлен: 04.05.2008, 17:27


Вопрос № 135.269
Здравствуйте уважаемые эксперты! Помогите пожалуйста разобраться с весьма простой задачей. Видимо тема мной не совсем так как нужно понята. У меня получается всякая, так сказать "корявщина". Программу нужно написать на языке С. Текст задачи в приложении. Заранее очень вам благодарен!))

Приложение:

Отправлен: 04.05.2008, 11:01
Вопрос задал: Демарчук Константин Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Терсков Сергей
Здравствуйте, Демарчук Константин Александрович!
Для этого выполняется проход по строке заданного выражения. Если встречаем 'm' или 'M' то заносим в стек номер соответствующей функции. Если это число то заносим его в стек. Если встречаем закрывающую скобку, то извлекаем из стека два числа и номер функции, и заносим в стек результат выполнения этой функции. По окончанию прохода по выражению в стеке останется искомый результат. Реализация программы в приложении, компилятор MS VS 2005.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 05.05.2008, 07:11
Оценка за ответ: 5


Вопрос № 135.282
Привет! Есть два вопроса.

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

У меня код есть, НО он отказывается воспринимать русские буквы. Т.е. английские увеличивает как надо, а русские оставляет как было.

2) Задание такое. Подсчитать количество слов в данной последовательности. Помогите сделать :)

Приложение:

Отправлен: 04.05.2008, 13:31
Вопрос задал: Tomas23 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 8)

Отвечает: Boriss
Здравствуйте, Tomas23!
У меня 2008-ой. В нем проверял.
Вся проблема в том, что Вы никак не хотите последовать моему совету "показать коды всех символов".
Мой пример показывает, в том числе, как вывести шестнадцатиричные - их имеено нужно
А дальше просто с небольшой хитростью: в редакторе вводите символы в кодировке ANSI, а в программе - OEM. Для русских букв коды различаются. По этой причине приходится не писать буквы русские, а задавать их кодами букв. Что и сделано

Приложение:

---------
Вывод - то место в тексте, где вы устали думать

Ответ отправил: Boriss (статус: Профессор)
Россия, Саранск
Организация: Мордовский госуниверситет, Саранск, Факультет Электронной Техники
WWW: Программирование на Паскале
----
Ответ отправлен: 05.05.2008, 09:37


Вопрос № 135.289
В следующем куске кода

int size = recvfrom(s,(char*)recvbuf,64,0,(SOCKADDR *)&saddr,&saddrsize);
if (size != -1) {
if (MessageBox(hWnd,(LPCWSTR)inet_ntoa(saddr.sin_addr),L"Сообщение",MB_YESNO)==IDYES)
SendMessageW(hEditWnd,WM_SETTEXT,0,(LPARAM)recvbuf);

в мэсседжбоксе слово "сообщение" нормально отображается, а IP-адрес в виде квадратиков, как это бывает в случае неправильной кодировки. В чем дело?
Отправлен: 04.05.2008, 15:18
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Aristos
Здравствуйте, Blackie!
Дело в том, что функция inet_ntoa возвращает строку с адресом в виде ANSI строки (char*). С помощью явного преобразования (LPCWSTR) перевести строку в UNICODE не получится - буфер сос трокой останется тем же, только вместо одного байта за символ будет считаться 2 (или больше). Надо использовать вспомогательные функции или макросы для преобразования.
Например, A2CW (Ansi string to(2) Const Wide string):
MessageBox(hWnd,A2CW(inet_ntoa(saddr.sin_addr)),L"Сообщение",MB_YESNO);

Для работы макросов необходимо подключить заголовочный файл <atlconv.h>. Так же для некоторых макросов в тело функции, их использующей, вписать макрос USES_CONVERSION;.

ps: раз уж вы в явном виде работаете с UNICODE строками, то лучше использовать UNICODE версии функций, например MessageBoxW. В этом случае, независимо от настроек компилятора (тип строк по умолчанию), все будет работать корректно.
---------
нет ничего невозможного
Ответ отправил: Aristos (статус: 10-ый класс)
Ответ отправлен: 04.05.2008, 15:42
Оценка за ответ: 5
Комментарий оценки:
у меня не подключен, а все равно работает


Вопрос № 135.324
Здравствуйье уважаемые эксперты вы не могли бы ответи на мой вопрос:

Как сделать так чтобы во время работы программы, т.е. в самом консольном приложении вместо английских букв и дургой абракадабры высвечивались русские буквы? Как поменять кодировку или заменить русские буквы на английские в компиляторе Borland C++ 3.1.

Заранее благодарю.
Отправлен: 04.05.2008, 18:54
Вопрос задал: Королёв Александр Павлович (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Dr_Andrew
Здравствуйте, Королёв Александр Павлович!
Скачайте здесь: http://notepad-plus.sourceforge.net/ru/site.htm редактор Notepad++ и набирайте исходные тексты программ в нём, сохраняя последние в кодировке DOS 866.
Ответ отправил: Dr_Andrew (статус: Студент)
Ответ отправлен: 04.05.2008, 20:01

Отвечает: Kamerad
Здравствуйте, Королёв Александр Павлович!
В самой среде Borland C++ смена на рускую раскладку происходит нажатием Right Ctrl+ Right Shift (вводится русский текст). Обратное переключение Left Ctrl+ Left Shift
Ответ отправил: Kamerad (статус: 3-ий класс)
Ответ отправлен: 05.05.2008, 02:16

Отвечает: Макс Коваленко Юрьевич
Здравствуйте, Королёв Александр Павлович!
Изначально Borland C++ 3.1 не потдерживает русские шрифты.
Вам необходимо РАСПАКОВАТЬ архив с ними в самой папке Borland C++. А затем в среде редактирования у же обычными комбинациями клавиш вызывать их. Вот и всё.
Если шрифты не найдёте в интернете - пишите на приватную почту.
Постораюсь помочь.
Желаю удачи
Ответ отправил: Макс Коваленко Юрьевич (статус: 1-ый класс)
Ответ отправлен: 06.05.2008, 12:54

Отвечает: mega
Здравствуйте, Королёв Александр Павлович!

есть еще возможность установить кодировку программно:
SetConsoleOutputCP(1251);
эта команда аналогична system("chcp 1251"), но не выводит в консоль "Текущая кодовая страница: 1251".

Оба варианта будут работать, если в свойствах консоли выставлен true-type шрифт.
К сожалению, программно его выставить не получится (по крайней мере нет такой функции в I/O-API), это нужно делать вручную, во время работы консольного приложения: щелчок правой кнопкой мыши на заголовке окна консоли, команда "свойства", вкладка "шрифт".
Ответ отправил: mega (статус: 4-ый класс)
Ответ отправлен: 08.05.2008, 11:27


Вопрос № 135.330
Как передать во 2-й параметр мессэджбокса конкатенацию 3-х строк в UNICODE? Нужно сделать что-то вроде "Компьютер с адресом *.*.*.* хочет переслать вам файл". За место звездочек адрес, возвращаемый A2CW. Оператор "+" здесь не будет работать, т. к.
'+' : cannot add two pointers

strcat и lstrcat тоже по причине 'strcat' : cannot convert parameter 2 from 'LPCWSTR' to 'const char *'.

Приложение:

Отправлен: 04.05.2008, 19:38
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

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

MessageBox принимает в качестве параметров строки в стиле С, т.е. они не являются классами к которым можно было бы применить перегруженный оператор "+" (как это можно с классом string в С++, С# или Java), а являются простыми указателями на область памяти, где собственно и находится строка. LPCWSTR это в действительности "const wchar_t *", т.е. константный указатель на двухбайтовый символ, и вместо strcat нужно использовать функцию "wchar_t *wcscat(wchar_t *strDestination, const wchar_t *strSource);".

А вообще при программировании под Windows рекомендуется использовать заголовочный файл "TCHAR.h" и все что к нему прилагается (вместо char - TCHAR, вместо strcat и wcscat - _tcscat, и так далее). Более подробно об этом написано в MSDN.

Ответ отправил: CrazyIronToilet (статус: Посетитель)
Ответ отправлен: 04.05.2008, 20:30

Отвечает: Виктор Пырлик
Здравствуйте, Blackie!
Смотрим спецификацию:

int MessageBox(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);

И так, это фактически const char*. Для русского языка нет необходимости использовать Юникод


char mes[255] = {0};
sprintf(mes,"Компьютер с адресом %s хочет вас поиметь",inet_ntoa(clientService.sin_addr));
MessageBox(GetActiveWindow(),mes,"Вам привет",MB_OK);


---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Свердловская обл.
Тел.: +7(34386) 53-5-98
ICQ: 490191733
----
Ответ отправлен: 04.05.2008, 21:10
Оценка за ответ: 3
Комментарий оценки:
Так у меня const char* просто-напросто не отображается нормально

Отвечает: Aristos
Здравствуйте, Blackie!
Для UNICODE-строк существуют функции-аналоги:
wchar_t *wcscat(wchar_t *strDestination, const wchar_t *strSource);
и
LPWSTR lstrcatW(LPWSTR lpString1, LPWSTR lpString2);

---------
нет ничего невозможного
Ответ отправил: Aristos (статус: 10-ый класс)
Ответ отправлен: 04.05.2008, 22:46
Оценка за ответ: 5


Вопрос № 135.514
Добрый вечер, уважаемые эксперты. Задача: Пользователь вводит с клавиатуры строку. Создается числовой одномерный массив с таким же количеством элементов, сколько у строки - значащих символов. Записывает коды этих символов в числовой массив и, оба массива показывает на экран.
Отправлен: 05.05.2008, 20:49
Вопрос задала: Lotos1810 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Lotos1810!
Реализация программы в приложении. Код символа берется из простого приведения типа char к int.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 06.05.2008, 03:45
Оценка за ответ: 5


Вопрос № 135.545
Помогите разобраться с ошибками в программе. Суть такая: есть функция, приведенная в приложении. Мне надо просто записать в файл содержимое буфера recvbuf. С помощью нее я открываю диалог сохранения, и когда файл выбран записываю в него данные следующим образом :

wchar_t recvbuf[64];
int size = recvfrom(s,(char*)recvbuf,64,0,(SOCKADDR *)&saddr,&saddrsize);
if (size != -1) {
wchar_t strDestination[50];
wcscpy(strDestination, L"Компьютер с адресом ");
wcscat(strDestination, A2CW(inet_ntoa(saddr.sin_addr)));
wcscat(strDestination, L" хочет переслать вам файл");
if (MessageBox(hWnd,strDestination,L"Сообщение",MB_YESNO)==IDYES)
if (SaveFile(sFile)) {
fopen((char *)sFile, "w");
fwrite((char *)recvbuf,1,64,(FILE *)sFile);
fclose((FILE *)sFile);
};
SendMessageW(hEditWnd,WM_SETTEXT,0,(LPARAM)recvbuf);
};
Код компилируется, но во время выполнения программы возникает Unhandled exception at 0x7c918fea in Net.exe: 0xC0000005: Access violation writing location 0x002e0075.
При этом создается файл без расширения с именем "C" (независимо от того что я ввожу в имени в диалоге) размером 0 байт. В чем дело?

И еще хотел спросить. wchar_t - это же расширенный тип, кот. занимает 2 байта? Тогда wchar_t recvbuf[64] будет занимать 128 байт, так? Тогда в процедуре recvfrom число 64 задано неверно (если я хочу весь буфер задействовать)?

Приложение:

Отправлен: 06.05.2008, 01:22
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

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

«При этом создается файл без расширения с именем "C" (независимо от того что я ввожу в имени в диалоге) размером 0 байт. В чем дело?»

имя файла - массив двубайтных символов, а каст делается в char*, соответсвенно, все функции, работающие с char-ами, работают до первого нуля, а wchar - второй байт обычно ноль, поэтому в имя файла до нуля успевает попасть только первая буква.

про «Unhandled exception at 0x7c918fea» точно сказать нельзя, возможно он связан с тем же (надо смотреть под дебагом, в зависимости от того, что возвращает recvfrom)

Почему в программе используется то TCHAR, то char? Вы уж определитесь, с какими строками в программе работать. Для двубайтных строк есть свои функции работы с файлами(в аргументах которых есть строки):
_wfopen
Ответ отправил: Сандров Алекс (статус: 8-ой класс)
Ответ отправлен: 06.05.2008, 06:44
Оценка за ответ: 5

Отвечает: Виктор Пырлик
Здравствуйте, Blackie!

Вот спецификация:


FILE *fopen(
const char *filename,
const char *mode
);
FILE *_wfopen(
const wchar_t *filename,
const wchar_t *mode
);
size_t fwrite(
const void *buffer,// указатель на буфер
size_t size, // размер данных которые записываем в байтах
size_t count,// количество данных
FILE *stream // дескриптор открытого файла
);

Вот так будет верней.
char sFile[] = "test.txt";
FILE *file;

if (SaveFile(sFile))
{
if((file = fopen(sFile, "w"))!=NULL)
{
fwrite((wchar_t *)recvbuf,sizeof(wchar_t),wcslen(recvbuf),file);
fclose(file);
}
}


W - это 2-х байтовые, т.е. Юникод.

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

PS: хорошая практика – не указывать точно размер массива в параметрах функций, а вычислять его размер – sizeof() или эффктивный размер (реально используемый) – например strlen(),wcslen()…
---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Свердловская обл.
Тел.: +7(34386) 53-5-98
ICQ: 490191733
----
Ответ отправлен: 06.05.2008, 07:04
Оценка за ответ: 5


Вопрос № 135.551
Доброй ночи. Уважаемые помогите сделать задачи в с++. Сегодня экзамен и очень срочно нужно. Пжл.

1)
Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если да, то будет ли он прямоугольным.

2)
Вычислить число и месяц в невисокосном году по номеру дня.
Отправлен: 06.05.2008, 03:57
Вопрос задал: Bazafoot (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Терсков Сергей
Здравствуйте, Bazafoot!
1. Если сумма двух введенных углов будет болше 180 градусов, то это не треугольник. Прямоугольность определяется простой проверкой каждого угла на равенство 90 градусам.

2. От введенного числа в цикле постепенно отнимаем количество дней в каждом месяце, пока оно не станет отрицательным. Прибавляем к нему количество дней в текущем месяце и получаем нужное число текущего месяца.

Реализация обоих программ в приложении.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 06.05.2008, 04:39


Вопрос № 135.564
Добрый день.
На старости лет пытаюсь освоить С++ (Pascal/Delphi работаю в основном :). Установил Visual C++ 2005, сразу подводные камни в простейшей задаче.
Создал форму, на ней два поля textBox1 и textBox2 и кнопка button1. Хочу в textBox1 ввести число(int, например), нажать на кнопку и в поле textBox2 занести значение textBox1*2.
Подскажите с кодом, пожалуйста.
Отправлен: 06.05.2008, 08:24
Вопрос задал: Yandrey (статус: Практикант)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ковалев Вадим
Здравствуйте, Yandrey!
В обработчике события нажатия кнопки пишем:
{
textBox2. Text = ( Int32.Parse(textBox1.Text)*2 ).ToString();
}

Метод Int32.Parse() попытается сразу парсировать строку в тип int, но если там будет неверное значение, то вылетит FormatException.
Для проверки правильности введенного числа можно использовать или Int32.TryParse(), или организовать обработку эксепшена.
Ответ отправил: Ковалев Вадим (статус: 1-ый класс)
Ответ отправлен: 06.05.2008, 10:01


Вопрос № 135.574
Здравструйте, вопрос такой: хочу разработать ПО, писаться будет на Visual C++ 2005. Так как идеи особо распространять не хочу, формулировки будут очень размыты. Пользователем с интерфейса должны будут забиваться данные, структура данных всегда одинаковая, но сами данные каждый раз разные, данных не так много и пересылаться никуда ничего не должно (все работает локально). Затем моей программой выполняются "жуткие" логические вычисления (по сути перебор всех возможных вариантов), и выдается таблица построенная на основе этих данных. Так вот в чем вопрос: с помощью чего это лучше реализовывать? Мои варианты: MySQL, MSSQL, Access, динамические данные. Рассмотрю любые предложения. Пожалуйста напишите почему лучше тем или иным способом и желательно сразу литературку. В базах данных знаю только общие представления о СУБД. Может вычисления можно реализовать и с помощью запросов, просто я не знаю за что браться. Спасибо
Отправлен: 06.05.2008, 09:51
Вопрос задал: Anarchist (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ковалев Вадим
Здравствуйте, Anarchist!
Может быть, если данных не так уж много и работа будет локальной, не стоит использовать СУБД. Достаточно хранить все данные в файле. Можно создать классы соответствующие элементам данных, и оперировать с ними. В этих классах можно написать методы которые выполняют "жуткие" вычисления, а так же методы сохранения класса в файл и извлечения из файла. Почитать можно MSDN, разделы про работу с файлами и сериализацию.
Ответ отправил: Ковалев Вадим (статус: 1-ый класс)
Ответ отправлен: 06.05.2008, 10:34
Оценка за ответ: 4
Комментарий оценки:
Может. Подумаю

Отвечает: Виктор Пырлик
Здравствуйте, Anarchist!
1.Начинают разработку проектов, если есть базы данных, с разработки баз данных. А интерфейс уже адаптируют к логике.
2.Для принятия решения — что использовать, сначала делают анализ предметной области, строят модель (хотя бы элементарно рисуют на бумаге - что, где и как), исходя из этой модели делают оценку возможности как в плане собственных так и в плане требований системы. Вот тут и «рождается» требование использовать те или иные алгоритмы, аппаратную платформу, операционную систему, СУБД.
3.Возможен второй вариант — если основная логика есть вычисления, а хранение данных как промежуточный этап. В этом случае, отрабатывают алгоритмы, интерфейсы, используя или статичные данные (в памяти) или элементарные файловые операции. И после того, как будет определено — сколько данных, их формат — будет уже видно что проще и лучше использовать. Возможно «плоские таблицы», например dBase (как самые быстрые и простые), или по клиент-серверной технологии..
4.Ну и если решили использовать СУБД, то всегда говорят «делайте на том, что у вас лучше получается».. Но из предложного вами, я могу сказать следующее:
Access — довольно удобно, просто (но не в части SQL), легко работать, но не предназначена для хранения больших данных, версионная зависимость.
MSSQL — универсальная среда, но тяжелая, требует много аппаратных ресурсов. Требует не только установки на сервер или машину пользователя, но возможно обслуживания. Очень дорого стоит.
MySQL — начиная с 5-й версии отличная СУБД (да и прежние хорошие), единственный минус — сложность сопровождения, установки и настройки, требует дополнительных драйверов. Имеет огромные возможности. Бесплатная.
Но я бы предложил вам несколько лучший вариант
Firebird - легковесный, требует минимум памяти (хватит и 15-20 мегабайт в некоторых случаях), не требует сопровождения, работает на всех известных платформах и операционных системах, легок в установке, имеет довольно простой для понимания PSQL (на ряду со стандартным SQL), очень мощные возможности. Может работать как встроенная система (т.е. распространяться с приложением) — бесплатен. Может работать как на локальной машине, так и по технологии «клиент-сервер».. обслуживая множество клиентов одновременно.

Ну вот.. на ваш «размытый» вопрос - «размытый» ответ. :) Но скажу одно — говорить о чем то серьёзном, когда только что-то начинаешь постигать, не имеет смысла — но учиться надо.
Литература
Название: Firebird: руководство разработчика баз данных
Автор: Хелен Борри
Издательство: БХВ-Петербург
Год: 2007
Скачать можно тут [Формат: djvu Размер: 16.71 Мб]
---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Свердловская обл.
Тел.: +7(34386) 53-5-98
ICQ: 490191733
----
Ответ отправлен: 06.05.2008, 10:34
Оценка за ответ: 5
Комментарий оценки:
Развернутый ответ. 1. Так надо решить, использовать ли БД вообще. 2. Рисовать пытался конечно. Сложная структура получается, и куча вариантов решения. 3. Не вычисления, а перебор с проверкой пойдет вариант или нет. Надо будет постоянно создавать динамические данные, может STL поможет правда. Мне кажется БД проще в данном случае будет. 4. Посмотрю. А можно поподробнее почему Access плох. Я его сначала рассматривал. Думал запоролить базу что-бы не смотрели (защита такая :))

Отвечает: kool
Здравствуйте, Anarchist!
Вам нужно просто создать программу, но если
данных немного то базы данных тут ни к чему.
Достаточно использовать списки типа list из STL.
Удачи!

---------
I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 06.05.2008, 18:19
Оценка за ответ: 4
Комментарий оценки:
Спасибо за ваше мнение. Скорее всего с этого варианта и начну


Вопрос № 135.705
Сдраствуйте товарищи эксперты. Помогите пожалуйста с программой.
Условие:
Выпольнить задание
Написать программу которая считывает из текстового файла три предложения и выводит их в обратном порядке.
,оформив в виде функций законченные последовательности действий. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
Код программы в приложении.

Приложение:

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

Отвечает: Dr_Andrew
Здравствуйте, Константин Шипилов!
"Законченных последовательностей действий" в Вашей задаче две:
1. Загрузить предложения из файла. В качестве параметров функция должна принимать имя файла char* psFileName и строковые переменные, в которых будут храниться загруженные предложения. Если файл не найден / не открыт - if(!FileStream.is_open()) - должно генерироваться сообщение об ошибке.
2. Функция, отвечающая, собственно, за вывод в обратном порядке предложений, в качестве аргументов должна получать эти самые предложения (переменные типа string).
Подробнее - см. в приложении.

Приложение:

Ответ отправил: Dr_Andrew (статус: Студент)
Ответ отправлен: 07.05.2008, 05:09


Вопрос № 135.723
Как у static'а поменять цвет шрифта и если такой возможности у него нет, то как создать и работать с объектом, аналогичным ему, но со свойством цвета шрифта?
Отправлен: 07.05.2008, 06:08
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

MSDN said:
WM_CTLCOLORSTATIC

A static control, or an edit control that is read-only or disabled, sends the WM_CTLCOLORSTATIC message to its parent window when the control is about to be drawn. By responding to this message, the parent window can use the specified device context handle to set the text and background colors of the static control

То есть в родительском окне надо сделать обработчик

...
case WM_CTLCOLORSTATIC:
if( (HWND)lParam == hYousStaticWindow ) // или GetDlgItem(hWnd, ID_YOUR_STATIC) вместо hYousStaticWindow
SetTextColor((HDC)wParam, 0xff00ff); // к примеру
break;
...
Ответ отправил: Сандров Алекс (статус: 8-ой класс)
Ответ отправлен: 07.05.2008, 06:16
Оценка за ответ: 3
Комментарий оценки:
Спасибо за внимание к вопросу, но если так это оставить, то работать не будет. Код обработчика будет немного другим:
case WM_CTLCOLORSTATIC:
if((HWND)lParam ==hStat)
{
SetTextColor((HDC)wParam, g_dFontColor);
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)br;
}
break;

И еще вы забыли сказать, что необходимо создавать переменную для цвета, чтобы менять ее в необходимый момент:
g_dFontColor = RGB(222,2,0);
InvalidateRect(hStat,NULL,FALSE);

Переменные можно описать таким образом:
DWORD g_dFontColor=0;
HBRUSH br=CreateSolidBrush(GetSysColor(COLOR_3DFACE));


Вопрос № 135.762
Здравствуйте. я начинающий юзер, вот написал небольшую программку, которая генерирует пароли. Подскажите пожалуйста как правильно её оформить, всмысле по всем правилам с++? Правильно ли я оформил, если нет, то как правильно это сделать?

#include <fstream.h> //подключает возможность вывода в файл
#include <iostream.h>
#include <stdlib> // подключает генератор случайных чисел
#include <conio.h>
void main()
{
randomize (); //задает при каждом запуске файла новую последовательность.

char *PassString = "Aa1Bb2Cc3Dd4Ee5Ff6Gg7Hh8Ii9Jj0Kk1Ll2Mm3Nn4Oo5Pp6Qq7Rr8Ss9Tt0UuVvWwYyZzXx";
const int MAX = 72;
int dlina_parol=8; //устанавливает длину пароля 8 чисел

ifstream test ("C:\test.txt"); //открывает файл для считывания
ofstream book ("C:\book.txt"); //создает файл

char word [64];

if ( test.fail() ) //проверяет открылся ли файл test для вывода данных
{
cout << "Sorry, can't open file! ";
getch();
exit(1);
}
while (! test.eof())// считывает слова с файла test
{
test >> word; // получает каждое слово из файла test

for (int i=1; i<dlina_parol;i++)
{
book<<PassString[random(MAX)];//выводит символ в файл book.txt
}

book << ' '<< word << ' '; //выводит в файл book слово из файла test
}

cout <<"The file created in C:\book.txt";
getch();
}
Отправлен: 07.05.2008, 12:12
Вопрос задал: Kir user (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mitya86
Здравствуйте, Kir user c!

Вместо функции getch() можно использовать функцию cin.get(), которая, в данном случае, выполнит ту же функцию. Это позволит не подключать библиотеку conio (т.е. строчку #include <conio.h> можно будет удалить).
Также библиотека iostream.h считается устаревшей версией библиотеки ввода вывода, новую версию подключают так: #include <iostream> (без .h!) и после всех include и перед функцией main еще надо прописать пространство имен этой библиотеки: using namespace std; . Иначе вместое сin и cout придется каждый раз писать std::cin и std::cout.
Ответ отправил: Mitya86 (статус: 5-ый класс)
Ответ отправлен: 07.05.2008, 12:51
Оценка за ответ: 5
Комментарий оценки:
большое спасибо. выручили... :-)


Вопрос № 135.802
Помогите решить задачки по С
1.среди N введённых чисел найти количество соседей разных знаков
2.Ввести предложение, слова в котором разделены пробелами и запятыми. Распечатать те слова, которые являются обращениями других слов в этом предложении. Если нужных слов нет - сообщить об этом.
Отправлен: 07.05.2008, 16:04
Вопрос задала: Халтурина Екатерина (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ковалев Вадим
Здравствуйте, Халтурина Екатерина!
Если я правильно понял первую задачу, то вот мое решение:

Приложение:

Ответ отправил: Ковалев Вадим (статус: 1-ый класс)
Ответ отправлен: 07.05.2008, 20:09


Вопрос № 135.856
Здраствуйте уважаймые эксперты, помогите пожалуста написать код программы: необходимо вычислить сумму первых N целых положительных четных чисел.
Отправлен: 07.05.2008, 21:40
Вопрос задала: Mykat (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Mykat!
Для вычисления суммы организуется цикл начинающийся с двух и оканчивающийся на N*2 с шагом 2. Код программы смотрите в приложении.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 08.05.2008, 04:10
Оценка за ответ: 4

Отвечает: Kamerad
Здравствуйте, Mykat!

Вот код я правда его не проверял, но по моему должно пойти!

#include<iostream.h>
#include<conio.h>

void main ()

{ int i,n,Summa=0,mas[100];

cout<<"Vvedite n : "<<endl;
cin>>n;

cout<<"Vvedite chisla : "<<endl;

for(i=0;i<n;i++)

{
cout<<"mas["<<i<<"]= ";
cin>>mas[i];
}

for(i=0;i<n;i++)

{
if(mas[i]>0)
Summa+=mas[i];
}

cout<<"Iskomaya summa "<<Summa;

getch();

}
Ответ отправил: Kamerad (статус: 3-ий класс)
Ответ отправлен: 08.05.2008, 16:56


Вопрос № 135.888
Здравствуйте!
В ходе выполнения программы переменная n получает некоторое значение, как после этого создать массив размера nxn? Или все-таки придется обявлять массив размером зараннее бОльшего размера, чем n?
С Уважением, LexXx!
Отправлен: 08.05.2008, 06:48
Вопрос задал: LexXx (статус: Практикант)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

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

Для этого существует динамическое выделение памяти, используется оператор new

Можно задать массив:
int М[n][n];

А можно объявить указатель на память, который будет с ней работать как типом данных int:

int *pM;

и в нужном месте программы сказать:

pM = new int[n*n];

при этом это одномерный массив. И если работат с ним, то координаты придётся высчитывать (по формуле n = x+ y*width, где width - ширина выделенного массива; кстати, такой способ более предпочтителен, имхо, потому что максимально прост всмысле выделения памяти, надо тока правильно конвертировать 2-мерные координаты в 1-мерные)
после использования память нужно отпустить:

delete[] pM;

если хочется именно двумерный массив, то тут немного сложнее: нужно создать указатель на указатель:

int **ppM;

и инициализировать сначала один массив указателей:

ppM = new (int*)[n];

а потом отдельно каждый указатель

for(int i=0; i<n; i++)
ppM[i] = new int [n];

и освобождать память надо будет в обратном порядке

for(int i=0; i<n; i++)
delete[] ppM[i]

и потом

delete[] ppM;
Ответ отправил: Сандров Алекс (статус: 8-ой класс)
Ответ отправлен: 08.05.2008, 07:00

Отвечает: Kamerad
Здравствуйте, LexXx!

Для этих целей применяется динамическое выделение памяти.

Допустим , n получено программным путем, тогда для создания массива n*n нужно выделить память:

void main ()

{ int n,i;
int **mas;

....

*mas=new int [n]; //выделение памяти
for(i=0;i<n;i++)
{
mas=new int [n];
}

....

for(i=0;i<n;i++) delete [] mas[i]; //освобождение памяти

delete [] mas;

}
или так (в языке Си)

#include<malloc.h>

void main ()

{ int n,i;
int **mas;

.....

mas=(int**) calloc (n,sizeof(n));

for(i=0;i<n;i++)

{
mas[i]= (int*) calloc (n,sizeof(n));
}

.........

for(i=0;i<n;i++)
free (mas[i]);
free (mas);

}
Ответ отправил: Kamerad (статус: 3-ий класс)
Ответ отправлен: 08.05.2008, 16:48

Отвечает: Mystic
Здравствуйте, LexXx!
Действительно, можно использовать одномерный массив как двумерный, можно сделать динамически двумерный массив... Но все это влечет за собой сложности в слежении за утечкой памяти.
Но в С++ (не в С естественно) уже есть реализованный динамический массив (можно называть и так), это класс std::vector ( #include "vector" ).
Создание массива nxn:
std::vector<std::vector<int>> Mas; //Получили массив векторов, т.е. динамических массивов
Mas.resize(n);
for(size_t i = 0; i < n; i++){
Mas.at(i).resize(n);
}

Дальше просто используем как обычные массивы. Этот способ более удобен, и лучше использовать его, чем массивы в стиле С (если конечно вы не делаете лабу, в которой такой способ неприемлем).
Ответ отправил: Mystic (статус: 7-ой класс)
Ответ отправлен: 08.05.2008, 17:09


Вопрос № 135.986
Добрый день, уважаемые эксперты. У меня возникла большая проблема. Я учусь на первом курсе и нам по программированию задали написать курсовой, который я пытался написать, но у меня ничего не вышло. Смысл задачи я примерно понял, но когда пытаюсь запрограммировать, у меня случается ступор и нечего не выходит. Пожалуйста, помогите написать текст программы на языке С (не С++). Мне, кажется, что эту задачу легче было бы решить с использованием графов, но у меня так и ничего не вышло. Условие задачи в продолжении. Зарание спасибо.

Приложение:

Отправлен: 08.05.2008, 17:31
Вопрос задал: Казанцев Виктор Андреевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Казанцев Виктор Андреевич!
Для этого опишем граф, вершины которого - это школы, а ребра - стоимость линии между парой школ, матрицей инцидентности (подробнее о графахru.wikipedia.org)). Если к одной из школ подается питание, то остальные должны быть соединены с ней через одну линию. Таким образом нужно посчитать общую стоимость линий исходящих из каждой школы и взять две самых низких стоимости. Для этого школы можно отсортировать по общей стоимости. Вариант реализации смотрите в приложении. Язык С. Граф описанный в программе можно увидеть на прикрепленном рисунке.

Приложение:

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 15.05.2008, 09:00


Вопрос № 136.027
Здравия желаю,товарищи эксперты!Помогите пожалуйста с решение задачи на циклические алгоритмы.

В бригаде имеется N станков. Первый станок работал m часов, а каждый следующий на 10 минут больше, чем предыдущий. Сколько часов проработала вся бригада? Сколько часов проработал станок с номером К ?
Отправлен: 08.05.2008, 21:25
Вопрос задал: Kompas (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Терсков Сергей
Здравствуйте, Kompas!
Эту задачу можно решить и математическим путем, но вам нужны именно циклические алгоритмы. Реализация вашей программы в приложении. Код полностью комментирован, поэтому понять алгоритм работы программы можно из исходника. Для отображения русских символов в консоли должен быть установлен шрифт Lucidia Console. Компилятор MS VS 2005....

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 13.05.2008, 05:56
Оценка за ответ: 5


Вопрос № 136.028
Приветствую!Уважаемые эксперты,просьба помочь с задачей на строки.

Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить длину самого короткого слова.
Отправлен: 08.05.2008, 21:39
Вопрос задал: Kompas (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Терсков Сергей
Здравствуйте, Kompas!
Вариант реализации вашей программы смотрите в приложении. Код полностью комментирован, поэтому понять алгоритм работы программы можно из исходника. Для отображения русских символов в консоли должен быть установлен шрифт Lucidia Console. Компилятор MS VS 2005.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 13.05.2008, 04:33
Оценка за ответ: 5


Вопрос № 136.111
Доброй ночи уважаймые эксперты, буду вам очень благодарна если поможете со следующей задачей
Дана структура с именем ZNAK, содержащая следующие поля:
∙ Фамилия, имя,
∙ Знак Зодиака,
∙ Дата рождения (массив из трех чисел)
Написать программу, которая выполняет следующие действия:
∙ Ввод с клавиатуры данных в массив, состоящий из 8 элементов типа ZNAK, и занесение их в файл данных
∙ Чтение данных из файла и вывод их на экран
∙ вывод на экран информации о человеке, чья фамилия введена с клавиатуры (если таких нет – вывести об этом сообщение)
∙ Список должен быть упорядочен по датам рождения
Отправлен: 09.05.2008, 19:52
Вопрос задала: Mykat (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Dr_Andrew
Здравствуйте, Mykat!
Объявил имя структуры как TSign вместо ZNAK - к чему транслитерация?
В Вашем случае, разумеется, удобнее было бы использовать класс с полезными функциями-членами, например, для автоматического расчёта номера знака зодиака по введённой дате рождения, организации ввода-вывода закрытых членов класса, да и сам знак зодиака удобнее было бы организовать как перечислимый тип - закрытый член класса TSign (enum TheSign {Unknown = 0, Aries = 1, /* ... */ Pisces = 12} Sign;). Функцию void ShowSign(int) стоило бы сделать именно членом класса TSign.
Но поскольку таковы были условия задачи - см. приложение; постарался максимально закомментировать код.

Приложение:

Ответ отправил: Dr_Andrew (статус: Студент)
Ответ отправлен: 11.05.2008, 06:28


Вопрос № 136.164
Здравствуйте! Очень нужна Ваша консультация!
Моя училка по-программированию, говорила мне, что если подсчитать на Си++ одно и тоже самое выражение,
только с помощью разных типов данных (например использовать сначала float, а потом double), то и результаты
подсчета будут разными. Если это так, то обьясните мне пожалуйста докладно почему именно так!
Отправлен: 10.05.2008, 09:38
Вопрос задал: Sashka (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PROD
Здравствуйте, Sashka!
если использовать именно float & double то ответы возможно сильно и не будут отличаться. явное отличие будет если результат сохранить в целочисленное и в тип с плавающей точкой. что касательно именно float и double, то скорее всего разница возникнет не в процессе вычисления а при сохранении результата, так как double так называемой двойной точности. если не лень напишите простенькую программульку где выводите результат какой нибуть функции, например y=sin(x+5) где допустим x=4,5 а y берите различных типов, и сравните
Ответ отправил: PROD (статус: 6-ой класс)
Ответ отправлен: 12.05.2008, 15:49


Вопрос № 136.189
Здравствуйте! Только начал изучать этот замечательный и сложный язык! Помогите пожалуйста решить такую задачку:
Дана последовательность из n целых чисел. Найти максимальный элемент в этой последовательности (без использования массивов). Заранее спасибо!
Отправлен: 10.05.2008, 11:51
Вопрос задал: Sashka (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Kamerad
Здравствуйте, Sashka!
#include<iostream.h>
#include<conio.h>

void main ()

{ int i,n,max,rand,index;

cout<<"Vvedite kolichestvo elementov : ";
cin>>n;

cout<<"Vvedite chislo :";
cin>>rand; // вводим первый элемент для сравнения с последующими

max=rand;

for(i=1;i<n;i++) // вводим в цикле следующие элементы
{
cout<<"Vvedite chislo :";
cin>>rand;

if(max<rand) // сравниваем вновь введенный элемент с max

{
max=rand; // запоминает макс. элемент
index=i; // запоминает позицию макс. элемента в последовательности
}
}

cout<<"Maksimalnoe iz vvedennih chisel "<<max<<endl;
cout<<"Ono bylo vvedeno "<<index<<" po schetu (nachinaya s index=0)";

getch();

}
Ответ отправил: Kamerad (статус: 3-ий класс)
Ответ отправлен: 11.05.2008, 01:55
Оценка за ответ: 5


Вопрос № 136.190
Здравствуйте! Помогите пожалуйста с задачкой, если можно с обьяснениями:
Дана последовательность целых чисел, за которой следует 0. Найти максимальный элемент в этой последовательности.
Заранее спасибо!
Отправлен: 10.05.2008, 11:53
Вопрос задал: Sashka (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Kamerad
Здравствуйте, Sashka!
#include<iostream>
#include<conio.h>

using namespace std;

void main ()

{ int i,n,max,*mas;
cout<<"Vvedite kol-vo chisel v posledovatelnosti : "; // количество элементов без последнего нуля
cin>>n;

mas=new int [n+1]; // выделение памяти под массив

cout<<"Vvedite chisla :"<<endl;

for(i=0;i<n;i++)

{
cout<<"Chislo "<<i<<" = ";
cin>>mas[i];
}

cout<<"Posledovatelnost' :"<<endl;

for(i=0;i<n;i++)

{
cout<<" "<<mas[i];
}

mas[n]=0;

cout<<" "<<mas[n]; // пропечатывает в конце последовательности 0

max=mas[0]; // запоминаем в качестве максимального первый элемент

for(i=1;i<n+1;i++) // перебираем все элементы последовательности с учетом последнего нуля

{
if (mas[i]>max)

{
max=mas[i];
}
}

cout<<" Maksimalnoe chislo max="<<max<<endl;

delete mas; // освобождение памяти

getch();

}
Ответ отправил: Kamerad (статус: 3-ий класс)
Ответ отправлен: 13.05.2008, 02:32
Оценка за ответ: 5
Комментарий оценки:
Спасибо Вам большое!


Вопрос № 136.191
Здравствуйте ещё раз! Помогите пожалуйста с задачкой:
Найти первое отрицательное число последовательности u=cos(ctg(n)), где n=1,2,3….
Очень надеюсь на Вашу помощь!
Отправлен: 10.05.2008, 11:54
Вопрос задал: Sashka (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ковалев Вадим
Здравствуйте, Sashka!
Вариант решения:

double FirstNegative()
{
double u, n = 1;
do
{
u = cos(1/tan(n));
n++;
} while (u>=0); //цикл будет работать пока u не станет отрицательным.
return u;
}

int main(int argc, char* argv[])
{
printf("pervoe otricatelnoe 4islo: %f", FirstNegative());
getch();
return 0;
}

успехов!
Ответ отправил: Ковалев Вадим (статус: 1-ый класс)
Ответ отправлен: 10.05.2008, 12:20
Оценка за ответ: 5
Комментарий оценки:
Спасибо огромное за ответ! Только вот я только начал изучать Си++, не могли бы Вы написать немножко с описанием кода!

Отвечает: Kamerad
Здравствуйте, Sashka!

#include<iostream.h>
#include<math.h> // файл с матем функциями
#include<conio.h>

void main ()

{ int n,kol;
double u;
cout<<"Vvedite kolichestvo elementov v posledovatelnosti : ";
cin>>kol;

for(n=1;n<kol;n++)

{
u=cos(1/tan(n));

if(u<0)

{
cout<<"Perviy otricatelniy element = "<<u<<" pri n="<<n<<endl;
break; // при нахождении первого отриц элемента цикл поиска завершается
}
}


getch();

}
Ответ отправил: Kamerad (статус: 3-ий класс)
Ответ отправлен: 11.05.2008, 01:55
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое! А подскажите почему здесь u=cos(1/tan(n)), а не как в условии u=cos(ctg(n))?


Вопрос № 136.294
Здравствуйте! Очень нужна Ваша консультация!
Моя училка по-программированию, говорила мне, что если подсчитать на Си++ одно и тоже самое выражение,
только с помощью разных типов данных (например использовать сначала float, а потом double), то и результаты
подсчета будут разными. Если это так, то обьясните мне пожалуйста докладно почему именно так!
Отправлен: 11.05.2008, 00:44
Вопрос задал: Sashka (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Макс Коваленко Юрьевич
Здравствуйте, Sashka!
Смотря, конечно же, какое именно выражение. Если целочисленное, то результат будет тот же. Всё дело в том, что под разные типы данных компилятор выделяет разный обьём памяти и, соответственно, разную возможность точного сохранения значений. Тип флот float отличается от дабла double своей точностью. То есть округлением значений. Попробуйте определить число Пи разными типами, и Вы всё поймёте.

Исправлены ошибки.
-----
< /font>∙ Отредактировал: skrech (Профессионал)
∙ Дата редактирования: 13.05.2008, 07:46
Ответ отправил: Макс Коваленко Юрьевич (статус: 1-ый класс)
Ответ отправлен: 12.05.2008, 00:12
Оценка за ответ: 5
Комментарий оценки:
Спасибо Вам большое! Попробую!

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Sashka!
Не доверяешь своей учительнице?... :)
А зря,так и есть.
И float, и double являются форматами чисел с плавающей точкой.
А числа с плавающей точкой, как известно, не имеют точного представления,
а только с определенной погрешностью.
Чем больше бит отведено под число, то более приближенным к точному значению
будет это число.
Под float отведено 4 байта, а под double - 8 байт. Делай выводы...
С double будут производиться более точные расчеты, и они будут отличаться от
результата, полученного при использовании float.
Для более детального изучения этого вопроса рекомендую изучить представления
чисел с плавающей точкой, в любом случае не повредит...:)
Впредь рекомендую доверять учительнице и спрашивать, что непонятно, ее...
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 12.05.2008, 11:28
Оценка за ответ: 5
Комментарий оценки:
Спасибо! А училке я доверяю большое чем себе, просто мне интересно почему именно так, я просто заочник!


Вопрос № 136.316
Обшарил все книжные магазины в поисках книжки с описанием стандартной библиотеки C - ничего нету. Одна попса типа C# для чайников и 1С для идиотов.
Если у кого есть в цифровом виде - дайте пожалуйста. Или ссылку по теме. Требуется именно полное описание стандартной библиотеки C, т. е. справочник-описание сишных стандартных функций (математика, ввод-вывод, файлы и т. д.).
Отправлен: 11.05.2008, 11:12
Вопрос задал: effort (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Fenixk19
Здравствуйте, effort!
Таких описаний полно в интернете, достаточно воспользоваться гуглом по интересующим функциям. Если интересует программирование под windows, то можете воспользоваться msdn.com. Если не пугает английский язык(а программиста он не должен пугать), то отличную справку можно получить на http://www.cplusplus.com. Там правда еще и про C++, но это не минус.
Ответ отправил: Fenixk19 (статус: 3-ий класс)
Ответ отправлен: 12.05.2008, 01:37
Оценка за ответ: 4
Комментарий оценки:
Мне именно описание всех нужно функций, а не справка "по названию", которую чтобы смотреть, нужно название, а названия берутся из описания всех.
msdn у меня есть, про http://www.cplusplus.com я знаю сам


Вопрос № 136.340
Здравствуйте! У меня возникла проблема. Я пишу программу в C++ Builder 6
Программа должна работать с документами Word. Есть три документа: договор, заявление и квитанция. Во все три документа надо внести паспортные данные и дату. В программе есть поля, в которые заносятся паспортные данные, затем эти данные заносятся в документы и документы сохраняются под другими именами. Проблема в том, что я знаю, как добавить текст в документ только в начало документа или в конец, а как занести данные в разные места документа я не знаю. Я выдел подобную программу написанную на Delphi там, в папке с программой лежали несколько документов Word. В документах в тех местах, где нужно было вставить данные, были метки edit1#, edit2# и т.д.
Исходника этой программы у меня не было. Если кто знает, как можно решить эту проблему подскажите, пожалуйста.
У меня есть ещё один вопрос, в Delphi есть компонент qwerty, вместо выпадающего списка календарь. Как можно сделать тоже самое в C++ Builder 6.
Заранее благодарю.
Отправлен: 11.05.2008, 14:12
Вопрос задал: Грибанов Фёдор Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: mega
Здравствуйте, Грибанов Фёдор Александрович!

по второму вопросу могу дать общие рекомендации:

1. создать окно со стилем WS_POPUP (это аналог окна Delphi с Borderstyle="bsNone)," это окно в дальнейшем будет всплывающим, как список в ComboBox'е
2. поместить в окно интересующий компонент, в данном случае календарь
3. выставить компоненту выравнивание по всей клиентской области
4. свойство окна visible установить в false
5. переписываем событие деактивации окна (в Delphi - это OnDeactvate)

теперь необходимо расположить видимые компоненты: обычно - это поле вывода, такое как edit и кнопка, для активации всплывающего окна

1. создаем панель
2. кладем на нее edit и кнопку (либо панель вместо кнопки)
3. располагаем компоненты в нужном порядке
4. переписываем событие нажатия кнопки мыши, или клавиатуры на кнопке, например OnClick, OnMouseDown и т.п.

теперь 2 метода которые мы пеерписали:

1. при нажатии на кнопку, определить координаты окна popup и показать его.
2. при деактивации окна popup - скрыть его

после всех манипуляций, если все правильно сделано, получится неплохая имитация всплывающего списка. Но заметно будет следующее: при активации окна popup, заголовок главного окна деактивируется.

Чтобы этого не происходило, необходимо перехватить в главном окне сообщение WM_NCACTIVATE. Если wParam равен FALSE, и lParam равен идентификатору окна popup, значит необходимо вернуть результат сообщения TRUE. Такая реакция на WM_NCACTIVATE при активации popup не позволит заголовку главного окна перекрашиваться и имитация будет 100-процентная.

почему именно имитация?

Среди множества встроенных оконных классов, таких как "EDIT", "BUTTON", "LISTBOX" и т.п., существует некоторое число классов, которые используются только системой и не предоставляются в общее пользование. Имена таких классов представлены в специальном, числовом виде, например "#32768" - класс окна меню, "#32769"- класс окна рабочего стола и т.п. Работа с такими классами интегрирована в стандартную процедуру DefWindowProc, поэтому для окон таких классов нет необходимости внедрять дополнительный код, чтобы обеспечить их работоспособность.

Поэтому, когда мы пытаемся сотворить нечто похожее, всегда натыкаемся на необходимость внедрения сложных взаимодействий между окнами (как, например, в случае с календарем: приходится учитывать состояние окна popup в главном окне приложения).

Можно, конечно использовать "subclassing" для таких встроенных классов, но их возможности и ограничения не документированы, следовательно всегда существует опасная непредсказуемость при их работе в ваших приложениях.
Ответ отправил: mega (статус: 4-ый класс)
Ответ отправлен: 11.05.2008, 16:28


Вопрос № 136.350
Здравствуйте, пытаюсь вывести содержание раздела реестра со всеми его подразделами в ListBox(в программе lb), используя рекурсию. Как сделать так что бы не возникало переполнение стека? Если есть ошибки в тексте программы, то юольшая просьба , помогите исправить.

Приложение:

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

Отвечает: mega
Здравствуйте, Funtik1!

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

stack - искусственный стек, используемый вместо рекурсии
root_id - идентификатор корневого узла дерева
node_id - идентификатор текущего узла, который необходимо обработать
children_of_node - дает число дочерних узлов для node_id
child_node - индексированный доступ к дочернему узлу

макет - это конечно не конкретная реализация метода, это только абстракция алгоритма.

в качестве типа элемента стека здесь принят int, для реестра, это будет идентификатор его ключа, для TreeView это будет идентификатор HTREEITEM и т.д.

методы children_of_node и child_node так же должны быть специализированы для конкретного случая.

цикл for - так же является абстракцией, единственное его предназначение - перебрать все дочерние узлы и дополнить стек их идентификаторами.

в случае, когда корневых узлов несколько (например, как в реестре), идентификаторы всех корневых узлов необходимо добавить в стек перед циклом while, т.е. вместо stack.push_back(root_id) провести обход всех корневых узлов и добавить индекс каждоко в стек.

Для графов, такой обход равнозначен "поиску в глубину"

PS: если ко мне есть вопросы, не задавайте их в минифоруме, отправляйте прямое сообщение

Приложение:

Ответ отправил: mega (статус: 4-ый класс)
Ответ отправлен: 11.05.2008, 15:56
Оценка за ответ: 3
Комментарий оценки:
прикольно:)


Вопрос № 136.362
Добрый день уважаемые эксперты. Подскажите пожалуйста где можно скачать Windows Sockets SDK? на сайте Майкрософт доступна только он лайн версия. А для меня это не совсем удобно.
Или же где могут быть видео-уроки по сокетам?
Я только начинаю програмирование сокетов и хотел бы с вашей помощью получить как можно больше полезной информации.Могли бы вы мне что-либо посоветовать ?
Передомной стоит задача постороения дзеркального снрвера. Строка которая передаёться серверу должна быть вернута клиенту.

Заранеё благодарен...
Отправлен: 11.05.2008, 15:59
Вопрос задал: Макс Коваленко Юрьевич (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Drumm3R
Здравствуйте, Макс Коваленко Юрьевич!
Последнюю версию SDK можно скачать
тут.

Информацию по программировании сокетов можно почитать тут:
codeproject.com

Код простого TCP эхо сервера и клиента в приложении.
Необходимо добавить к линкеру libws2_32.a

ссылки
-----
∙ Отредактировал: Shapoklak (Академик)
∙ Дата редактирования: 11.05.2008, 20:26

Приложение:

Ответ отправил: Drumm3R (статус: 3-ий класс)
Ответ отправлен: 11.05.2008, 20:01
Оценка за ответ: 5
Комментарий оценки:
большое спасибо. вы мне очень помогли. заслужено ставлю вам 5 =)


Вопрос № 136.497
Здравствуйте уважаемые эксперты, просьба решить задачу с использованием C++builder 6.

Дана действительная квадратная матрица порядка N. Найти наибольшее из значений элементом расположенных в заштрихованной части матрицы.
________
|\\\\\|
| \\\\|
| \\\|
|_____\|
Отправлен: 12.05.2008, 16:48
Вопрос задал: Виктив Алексей Никифорович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Виктив Алексей Никифорович!
Не очень понятно из вашего рисунка в каком диапазоне искать максимальный элемент, но скорее всего это элементы над главной диагональю матрицы и элементы самой диагонали. Воспользуйтесь функцией из приложения. Она принимает на вход указатель на двумерный массив и его размер. Возвращает функция максимальное значение из указанного выше диапазона.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 14.05.2008, 05:05


Вопрос № 136.545
Имеется очень хитрая задача:

На месте щелчка левой клавишей мыши появляется квадрат, всякий раз другого цвета. Обеспечить отображение всех квадратов при сворачивании-разворачивании окна. Хранить координаты щелчков мыши в списочной структуре данных.

Не представляю как её сделать... Прошу помочь исходником(или самим решением) или хотя бы советом. Заранее благодарю!
Отправлен: 12.05.2008, 20:58
Вопрос задал: Якимов Иван Юрьевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сандров Алекс
Здравствуйте, Якимов Иван Юрьевич!

Код в приложении, все квадраты со сторойно 20 точек
Проект создан был под VC6 как обычное Win32 приложение
CQuad - структура с координатами и цветом для одного квадрата
iTop - число квадратиков

DlgProc - функция обработки сообщений окна диалога
WM_PAINT - событие отрисовки, там отрисовываются в цикле все квадратики
WM_LBUTTONDOWN - событие мышки, добавляются координаты и случайный цвет.

если что непонятно, спрашивайте

Приложение:

Ответ отправил: Сандров Алекс (статус: 8-ой класс)
Ответ отправлен: 13.05.2008, 06:54


Вопрос № 136.571
Здравствуйте! Уже неоднократно задавал это вопрос, может хоть кто-нибудь откликнеться!? Напишыте пожалуйста имена основных библиотек Си++ и краткое описание
Например #include<iostream> и т.д.
Если можно, то не отвечайте ссылками на различную литературу,
напишыте пожалуйста кратко и ясно! Заранее спасибо!
Отправлен: 12.05.2008, 22:34
Вопрос задал: Sashka (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jan
Здравствуйте, Sashka!
#include<...> включает заголовочный файл, а совсем не библиотеку, что касается библиотек то посмотрите на параметры своего линкера, там основные библиотеки обычно перечислены.

Если интересуют заголовочные файлы, то посмотрите параметры своего компилятора, найдите путь "include" в моём случае базовые лежат в папке C:Program FilesMicrosoft Visual Studio 8VCinclude вот все файлы в такой папке и нужны вам, далее открываем их и видим в начале закомментированные строки с их описанием. Пример: /****malloc.h - declarations and definitions for memory allocation functions...

Приложение:

Ответ отправил: Jan (статус: 2-ой класс)
Ответ отправлен: 13.05.2008, 03:54
Оценка за ответ: 5
Комментарий оценки:
Спасибо Вам большое!


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

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.92 pre 5.0 RC2 от 09.05.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное