Вопрос № 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 Комментарий оценки: спасибо, очень интересно