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

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


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

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

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

Выпуск № 994
от 12.02.2008, 23:05

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

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


Вопрос № 122029: Здравствуйте! Пробую сама писать программы, но не очень получается,есть такая задачка- 1. Игра «кубики». Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно. Побеждает тот,...
Вопрос № 122031: Переформулирую вопрос - как в MS C++ элементарно послать один единственный UDP-пакет? Какова максимальная длина информационной части UDP-пакета?...
Вопрос № 122078: Уважаемые експерты у меня вопрос. Есть ли компонент для работы с базой даных(чето типа DataGrid в C#,VB). Работаю в Microsoft VS 2005. Если есть, то где искать....

Вопрос № 122.029
Здравствуйте!
Пробую сама писать программы, но не очень получается,есть такая задачка-
1. Игра «кубики». Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно. Побеждает тот, у кого сумма выпавших очков по итогам пяти бросков больше. Предусмотрите возможность получения первого хода человеком или компьютером. Кубики отображаются с помощью символов. В конце игры необходимо выводить среднюю сумму по броскам для обоих участников.
В приложении //1 я пробовала писать сразу целую программу, но я сно, что не получилось.
Потом я решила написать программу //2 ( без бросков, как-бы есть два массива инадо найти среднее арифметическое каждого массива и узнать, какое из них будет больше.).Но итут ничего не получается.
Может у кого-то получится исправить мои ошибки?

Приложение:

Отправлен: 07.02.2008, 01:29
Вопрос задала: Рак Оксана (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Терсков Сергей
Здравствуйте, Рак Оксана !
В ваших исходниках очень много ошибок. Например:

int array[5];
for (int i=1;i<7;)
{
array[i]=rand()%5+1;
out< }

Здесь вы пытаетесь обратится к элементу array[6], которого нет.

int array[5];
for (int j=1;j<7;)
{
array[j]=rand()%5+1;
cout< }

Цикл никогда не закончится, т.к. переменная j не изменяется. Обращение к элементу массива array[i], но откуда взялась переменная i - непонятно.
В общем, ошибка на ошибке. Если не изучать язык, то и программы получаться тоже не будут. В приложении вы найдете рабочий вариант решения вашей задачи.

Приложение:

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

Отвечает: Dr_Andrew
Здравствуйте, Рак Оксана !
А зачем такие сложные подходы для решения, в общем-то, тривиальной задачи? ;) Массивы здесь совершенно ни к чему. Вообще при написании игровых программ следует шире пользоваться приёмами объектно-ориентированного программирования, в частности, использовать классы, позволяющие имитировать объекты реального мира. Правда, в данном случае собственно игры не получится, т.к. бросок кубика имитируется функцией rand(), т.е. компьютер в любом случае будет играть сам с собой. Но для демонстрации можно и попробовать что-то изобразить.
Итак, нам нужны: а) класс игрового кубика и б) класс судьи, отвечающего за подсчёт очков у двух игроков и вывод результатов. Всё остальное смотрите в комментариях к коду (в приложении).

Приложение:

Ответ отправил: Dr_Andrew (статус: 6-ой класс)
Ответ отправлен: 07.02.2008, 12:14
Оценка за ответ: 5

Отвечает: Solowey
Здравствуйте, Рак Оксана !
Во первых, если ты создаеш переменую в теле функции или цикла она не видна за пределами ее. Т.е. в фукнции f1 () вводиш переменую int i - это значит что она видна только в пределах этой функции, за ее пределами она не видная (к ней нельзя обратиться в функции f2() ).
Во вторых, суммирование массива следует делать через цикл.
В третьих, не путай переменые к которым ты обращаешься. array[j]=rand()%5+1; сout<<array[i]<<" "; Скорее всего должно быть сout<<array[j]<<" ";

Приложил вариант моего решения... Правда нет проверки на ввод неправильных значений.

Приложение:

Ответ отправил: Solowey (статус: 3-ий класс)
Ответ отправлен: 07.02.2008, 12:30
Оценка за ответ: 5

Отвечает: shayen
Здравствуйте, Рак Оксана !
код в приложении, компилил под VS 2003

Приложение:

Ответ отправил: shayen (статус: 2-ой класс)
Ответ отправлен: 07.02.2008, 13:41


Вопрос № 122.031
Переформулирую вопрос - как в MS C++ элементарно послать один единственный UDP-пакет? Какова максимальная длина информационной части UDP-пакета?
Отправлен: 07.02.2008, 02:33
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Попов А.С.
Здравствуйте, Blackie!
Для инициализации Winsock вызываем функцию WSAStartup:
WSADATA ws;
WSAStartup (MAKEWORD( 1, 1 ), &ws); //используем версию 1.1

Теперь необходимо инициализировать сокет:
int s = socket (AF_INET, SOCK_DGRAM, 0); // SOCK_DGRAM указывает что тип сокета будет udp (В случае ошибки возвращает INVALID_SOCKET)

Данные посылаются с помощью функции send
int send(SOCKET s, // сокет- отправитель
const char FAR *buf, // указатель на буфер с данными
int len, // длина данных
int flags // флаги (может быть 0)
);

пример:
char* buff="string1";
send (s, (char* ) buff, strlen(buff)+1, 0 )
При ошибке функция возвращает SOCKET_ERROR

пример программы в приложении

Приложение:

Ответ отправил: Попов А.С. (статус: 8-ой класс)
Ответ отправлен: 07.02.2008, 13:00
Оценка за ответ: 5


Вопрос № 122.078
Уважаемые експерты у меня вопрос.
Есть ли компонент для работы с базой даных(чето типа DataGrid в C#,VB).
Работаю в Microsoft VS 2005.
Если есть, то где искать.
Отправлен: 07.02.2008, 13:01
Вопрос задал: Tadey (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Попов А.С.
Здравствуйте, Tadey!
Да, такой компонент есть - DataGridView
Ответ отправил: Попов А.С. (статус: 8-ой класс)
Ответ отправлен: 07.02.2008, 13:13
Оценка за ответ: 1
Комментарий оценки:
Вы саме пробовали его подключать в Visual C++?(не в C# или VB) Если да то поделитесь опытом(Вы ведь есперт 7-го класса)

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

В Microsoft Common Control 6 есть грида, устанавливается в проект, как ActiveX контрол. Среда сама генерит все нужные методы к нему(враперы). К сожелению, знаю только как в VC 6.0 вставлять активыксы в проект(правый клик на диалоге, в контектном меню "Insert ActiveX control..." и выдадут список...)
Из MS CC 6.0 использовал MS Chart, быстро и удобно. Единственное неудобство - на машине может не стоять нужная либа. Но при добавлении контрола в проект можно узнать путь и таскать её в проекте как ресурс и устанавливать, если не стоит.
Ответ отправил: Сандров Алекс (статус: 3-ий класс)
Ответ отправлен: 07.02.2008, 13:15
Оценка за ответ: 2
Комментарий оценки:
Как "Microsoft Common Control 6" мне может помочь в Visual C++.


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

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

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

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

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

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


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


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

В избранное