Вопрос № 121210: Здравствуйте. Прграмму генерации случайных чисел я знаю как написать, а вот необходимое колличество элементов значение которых равно нулю в двухмерном массиве это уже тяжелее.
Внизу приложение , помогите исправить ошибки в программе....Вопрос № 121211: Здравствуйте!
Если есть игра в кости и надо написать количество случайных бросков и их среднее арифметическое, каким образом задать именно эти формулы в программе?
...
Вопрос № 121.210
Здравствуйте. Прграмму генерации случайных чисел я знаю как написать, а вот необходимое колличество элементов значение которых равно нулю в двухмерном массиве это уже тяжелее.
Внизу приложение , помогите исправить ошибки в программе.
Отвечает: Zhdan88
Здравствуйте, Рак Оксана !
Вот, попробуйте. У вас стоял диапазон от 0 до 100 - ноликов будет крайне мало. я заменил на от 0 до 15.
#include<iostream>
#include<stdlib.h> // в этом файле содержатся функции rand и srand
#include<time.h> // в этом файле содержится функция time
using namespace std;
void main()
{
// задаем размерность массива
const int a = 3;
const int b = 4;
int A[a][b]; // объявляем двумерный массив
int null_element,s;
// заполнение массива случайными числами и показ на экран
// перебираем отдельные строки (одномерные массивы в совокупности)
for(int i=0; i<a; i++)
{
// перебираем отдельные элементы каждой строки
for(int j=0; j<b;j++)
{
// инициализация элементов значениями в диапазоне от 0 до 100
A[i][j]=rand()%16;
// показ значений на экран
cout<<", A[i][j]);
}
// переход на другую строку матрицы
cout<<"
";
}
cout << "
";
// в переменной храним количество нулевых элементов
int null_element = 0;
for (int i=0; i<a; i++){
for (int j=0; j<b; j++)
{
// именно == а не = так как = это присваение, а == сравнение
// если встретили нолик - увеличиваем счетчик на единицу
if (A[i][j]==0) null_element=null_element+1;
}
//как найти количество нулевых элементов массива?
} //тоесть, когда программа находит первый элемент, то ставит 1
//второй 2 ит.д
cout<< null_element "
";
}
Приложение:
Ответ отправил: Zhdan88 (статус: 1-ый класс)
Ответ отправлен: 01.02.2008, 17:50 Оценка за ответ: 5
Отвечает: shayen
Здравствуйте, Рак Оксана !
У вас ошибка в том что вместо сравнения вы используете присваивание if (A[i][j]=0), а нужно if (A[i][j]==0) исправленый код в приложении
Приложение:
Ответ отправил: shayen (статус: 2-ой класс)
Ответ отправлен: 03.02.2008, 15:57 Оценка за ответ: 5
Вопрос № 121.211
Здравствуйте!
Если есть игра в кости и надо написать количество случайных бросков и их среднее арифметическое, каким образом задать именно эти формулы в программе?
Отвечает: Dr_Andrew
Здравствуйте, Рак Оксана !
Спасибо за интересный вопрос, весь вечер играл с компилятором! :)
Рецепт:
1. В классе игры объявляете закрытые переменные:
а. Для хранения количества бросков кубика за игру (у меня - int iDashes в классе TDiceForm - см. вложение);
б. Для хранения количества успешных бросков (т.е. когда выпавшее на кубике число совпадает с загаданным - resp. введённым пользователем) - у меня int iSuccessfulDashes;
в. Для хранения суммы выпавших чисел за текущую игру - у меня int iSum;
2. Для показа статистики игры в главном классе игры необходимо предусмотреть специальную функцию (у меня void GameShowStatisticsSlot();)
3. В конструкторе главного класса игры и при запуске новой игры (у меня функция void GameNewSlot();) вышеупомянутые переменные следует обнулять (см. приложение).
4. Реализация функции показа статистики (добавил комментарии):
void TDiceForm::GameShowStatisticsSlot()
{
// Строки для вывода статистики игры
QString sDashes, sSuccessfulDashes, sAverage;
if(iDashes != 0) // Если были сделаны броски...
{
float fAverage = (float)iSum / (float)iDashes; // ...вычисляем среднее арифметическое бросков.
sDashes = QString::number((int)iDashes);
sSuccessfulDashes = QString::number((int)iSuccessfulDashes);
sAverage = QString::number((float)fAverage);
}
// Вывод результатов лучше реализовать через специальную форму.
TStatisticsForm* pStatisticsDialog = new TStatisticsForm(this);
if(iDashes != 0) pStatisticsDialog->ShowStatisticsSlot(sDashes, sSuccessfulDashes, sAverage);
pStatisticsDialog->show();
}
5. В приложении - часть кода маленькой кроссплатформенной игры "Брось кубик - угадай число!", написанной с использованием библиотеки Qt. Если будете компилировать для Windows, то Qt лучше "прикручивать" к MS Visual C++, с Borland Free Compiler библиотека работает не всегда стабильно.
Здесь исходные коды игры с исполняемым файлом (для Linux):
http://linmedsoft.narod.ru/files/Dice.tar.gz
Здесь скриншот работы программы:
http://linmedsoft.narod.ru/screens/Dice.png
Приложение:
Ответ отправил: Dr_Andrew (статус: 6-ой класс)
Ответ отправлен: 01.02.2008, 19:57 Оценка за ответ: 5 Комментарий оценки: спасибо, очень интересно
Вы имеете возможность оценить этот выпуск рассылки. Нам очень важно Ваше мнение!
* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!
Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.