Народ, помогите, надо написать программу. Язык - на ваше усмотрение. Заранее спасибо, если кто поможет)
10-11 класс
|
Даю чёткое ТЗ:
Шаг 1: У нас есть поле, в котором необходимо указать количество возможных событий (лучше это поле подписать рядом), после ввода туда нужного числа переходим к шагу 2.
Шаг 2: Далее идут поля под события и их процентную вероятность(тоже можно подписать рядом знаком"%"), то биш одно большое и одно маленькое поле на каждую строчку. Количество занятых строчек зависит от количества событий, введенных нами в шаге 1. Теперь вводим в большие поля названия событий (допустим: "дождь", "солнце", "ветер"), а в малые поля вводим их процентную вероятность (допустим "15", "73", "12"). Затем нажимаем кнопку снизу "результат" и под этой кнопкой появится выпавшее событие. При повторном нажатии данной кнопки, ситуация повторяется и нам снова выпадает какое-то событие.
Пример 1:
Количество событий: 3
ОК
Солнечно: 60 %
Ветренно: 25 %
Дождливо: 15 %
Результат
(тут будет написан результат)
Пример 2:
Количество событий: 2
ОК
Попадание: 60 %
Промах: 40%
Результат
(тут будет написан результат)
var
numberOfEvents, i, j, max, temp, rand, result : integer;
eventsProc : array of integer;
eventsNames : array of string;
tempStr : string;
begin
writeln('Количество событий: ');
readln(numberOfEvents);
SetLength(eventsProc, numberOfEvents);
SetLength(eventsNames, numberOfEvents);
{заполняем события}
for i := 0 to numberOfEvents - 1 do
begin
write('Событие номер ', i + 1, ': ');
readln(tempStr);
eventsNames[i] := tempStr.Split(' ')[0];
eventsProc[i] := StrToInt(tempStr.Split(' ')[1]);
end;
{сортируем массив по убыванию вероятности событий}
max := 0;
for i := 1 to numberOfEvents - 1 do
begin
for j := i to numberOfEvents - 1 do {находим индекс максимального элемента на отрезке от i до количества событий}
if eventsProc[j] > eventsProc[max] then
max := j;
{меняем местами максимальный и i-ый элементы массива}
temp := eventsProc[i];
tempStr := eventsNames[i];
eventsProc[i] := eventsProc[max] + eventsProc[i - 1];
eventsNames[i] := eventsNames[max];
eventsProc[max] := temp;
eventsNames[max] := tempStr;
{поменяли}
end;
{выбираем рандомный элемент массива, опираясь на вероятность}
rand := Random(1, 100);
result := 0;
if rand <= eventsProc[0] then
result := 0
else
for i := 1 to numberOfEvents - 1 do
if (rand > eventsProc[i - 1]) and (rand <= eventsProc[i]) then
result := i;
{выбрали}
write('Результат: ', eventsNames[result]);
end.
P.S Нет никаких проверок, дабы не загружать программу, можете добавить их сами. Формат ввода события: 'событие процент', пример: 'снег 30'
Другие вопросы из категории
С помощью цикла присвоить, каждому элементу массива значение равное номер элемента умноженный на 3. например для массива А значение элемента А[1]=2, A[2]=6 A[3]=9 и т.д. В конце программа должна выводить на экран сумму всех элементов массива.
1101(2)*101(2)
Нужно срочно, помогите!
он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных
минимумов заданной матрицы размером 10 на 10.
Найти сумму модулей элементов, расположенных выше
главной диагонали.
на языке С
Составить блок-схему и написать
на VBA
функцию, вычисляющую
для одномерного массива
Читайте также
добрый вечер, всем. помогите, пожалуйста, написать программу на Ассемблере.
задание:
Создать программу на языке Ассемблер, что позволяет организовать вычисления над элементами массивов
Объединить два массива 8-битных целых чисел со знаком. Сначала элементы второго затем первого.
заранее огромное спасибо всем!
Проверить истинность высказывания: «Ладья за один ход может перейти с одного поля на другое». 2) Дано трехзначное число. Проверить истинность высказывания: «Все цифры данного числа различны». 3)Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных A и B.
1) С клавиатуры вводится 2 числа - целое и вещественное. Программа выводит их сумму на экран.
2) Написать процедуру, которая умножает число типа int на число типа float на число типа double и выводит результат на экран
3) Написать процедуру, которая будет выводить любой текст, являющийся ее аргументом
4) С клавиатуры вводится 5 символов поочередно, программа выводит на экран акроним к слову которая образует эти 5 символов
доброй ночи, уважаемые программисты и успевающие в учебе студенты. помогите, пожалуйста, написать программу на C++ (в визуальной вкладке).
ВОТ ЗАДАНИЕ:
дано три переменные вещественного типа. если их значения упорядочены по возрастанию или убыванию, то удвоить их; иначе заменить значение каждой переменной на противоположное. вывести значения переменных.
я прикрепила несколько тестовых файлов (блокнот) в которых есть несколько вариантов решение этого задание (то есть коды программ), а вы скажите какой из них лучше всего подходит, а также скажите какие компоненты нужно кинуть на форму-дизайн (то есть какие кнопки, и что на них писать). в этих 3 файлов есть написанный код программы, нужно написать: на какие кнопки что писать и какой вариант решение больше подходит.
заранее огромное спасибо всем за помощь!!!
рдинат. Я поняла, что нужно найти их длины (формулы я знаю), а правильно написать программу не могу