Написала код программы для этой задачи,а она выдает ошибку,подскажите что не так.И не прописала два последних условия- E-сбит ровно один истребитель,F-сбит ровно один самолет
Происходит воздушный бой между бомбардировщиком и двумя атакающими его истребителями. Стрельбу начинает бомбардировщик: он дает по каждому истребителю один выстрел и сбивает его с вероятностью р1. Если данный истребитель не сбит, то он независимо от судьбы другого стреляет по бомбардировщику и сбивает его с вероятностью р2. Определить вероятности следующих исходов боя: А- сбит бомбардировщик В- сбиты оба истребителя С -сбит хотя бы один истребитель D-сбит хотя бы один самолет E-сбит ровно один истребитель F-сбит ровно один самолет
#include <iostream>
#include <math.h>
using namespace std;
void main()
{
float r1,r2,r3, r4, r5, r6, r7, r8, r9;
int ma=0, mb=0, mc=0, md=0, me=0, mf=0;
double P1=0.2;
double P2=0.3;
int n=1000;
//cout<<(double)(rand() % 100) / 100;
for(int i = 0; i < n; i++)
{
r1 = (float)(rand() % 100) / 100;
r2 = (float)(rand() % 100) / 100;
//сбит бомбардировщик
if(r1 < P1)
{
r3 = (float)(rand() % 100) / 100;
if(r3 < (1 - P1))
{
r5 = (float)(rand() % 100) / 100;
if (r5 < P2)
ma ++;
else break;
}
else break;
}
else (r2 < P1)
{
r4 = (float)(rand() % 100) / 100;
if(r4 < (1 - P1))
{
r6 = (float)(rand() % 100) / 100;
if (r6 < P2)
ma++;
else break;
}
}
//сбиты оба истребителя
if (r3 < (1 - P1) && r4 < (1 - P1))
{
r7 = (float)(rand() % 100) / 100;
if( r7 < P1)
mb++;
}
//сбит хотя бы один истребитель
else if (r3 < (1 - P1) || r4 < (1 - P1))
{
r8 = (float)(rand() % 100) / 100;
if( r8 < P1)
mc++;
}
//сбит хотя бы один самолет
else if (r5 < P1 || r6 < P1 || r3 < (1 - P1) || r4 < (1 - P1) )
{
r9 = (float)(rand() % 100) / 100;
if( r9 < P1 || r9 < P2)
md = ma + mc;
}
//сбит ровно один истребитель
//сбит ровно один самолет
}
cout<<endl;
cout<<ma / n;
cout<<endl;
cout<<mb / n;
cout<<endl;
cout<<mc / n;
cout<<endl;
cout<<md / n;
cout<<endl;
system("pause");
Добавлено:
Ошибка 1 error C2143: синтаксическая ошибка: отсутствие ";" 2 IntelliSense: требуется точка с запятой ";"
Где эта скобка открывается показывает ошибку { r4 = (float)(rand() % 100) / 100; if(r4 < (1 - P1))
а где что нужно добавить, понять не могу
в 33 строчке ошибку показывает
Правильно пишет, тк r3 инициализируется только в одной ветке. Если из предложения else (r2 < P1) уберете выражение в скобках - оставите только else, то будет выдаваться та же ошибка - неинициализированная переменная r3. Разберитесь, что вы написали и что это за переменные. Не вдаваясь в замысел, мне видится так. Но правильно или нет, судить тольков вам.
for(int i = 0; i < n; i++)
{
r1 = (float)(rand() % 100) / 100;
r2 = (float)(rand() % 100) / 100;
r3 = (float)(rand() % 100) / 100;
r4 = (float)(rand() % 100) / 100;
}
и тд
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть Crypto API, есть сертификат, есть данныеНеобходимо получить подпись
Немогу понять в чем разница между следующими двумя операторами
Какие аргументы и код возврата имеет оператор преобразования типа? В каких случаях неизбежно его использование?