М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
amusabekova
amusabekova
12.06.2021 12:44 •  Информатика

Решить.паскаль циклы .из семи красных и восьми белых роз требуется составить букет из пяти роз. перечислить все возможные варианты.хотелось бы попросить при составление каждой строчки расписывать что в ней происходит.

👇
Ответ:
DanilSv040
DanilSv040
12.06.2021

Здесь не нужно учитывать порядок роз в букете, а только их количество.

 

Program Krysatul;
uses crt;
const
  bel=8;
  kras=7;
var
 i,j,nom:integer;
begin
  writeln('*** alphaues is thinking... ***');
  writeln('***          OK             ***');
  writeln();
  nom:=0; {количество вариантов}
  for i:=0 to bel do {организуем цикл перебора для белых роз}
    for j:=0 to kras do {организуем цикл перебора для красных роз}
       if i+j=5 then {если выбрано в сумме 5 цветов}
            begin
              nom:=nom+1; {посчитать это как +1 вариант}
              writeln(nom,'-й вариант: ',i,' белых и ',j,' красных'); {напечатаем номер варианта и количество роз}
            end;
    writeln();
    writeln('Всего вариантов: ',nom);{напечатаем количество вариантов}
end.

4,5(87 оценок)
Ответ:
LeBleque
LeBleque
12.06.2021

Все возможные варианты это, как я понимаю, с учетом повторений(т.е. используем все 7 красных и 8 белых роз).

Для начала вспоним формулу, а потом на ее основе пишем программу:

C_{n}^{k}=\frac{n!}{(n-k)!k!}

 

Где n - количество всех цветов, n=15;

k - количество цветов в букете, k=5

 

C_{15}^{5}=\frac{15!}{8!5!}

 

Теперь собственно программа:

 

uses crt; {подключение модуля CRT}
var f1,f2,f3,i:longint; c:real; {описание переменных}
begin
f1:=1; f2:=1; f3:=1; {присваивание значений}
for i:=2 to 15 do {цикл}
f1:=f1*i;
for i:=2 to 8 do {цикл}
f2:=f2*i;
for i:=2 to 5 do {цикл}
f3:=f3*i;
c:=1307674368000/(f2*f3); {вычисление и присваивание значения}
write(c); {вывод текста на экран}
end.

 

p.s. получается 270270, поэтому перечислять все варианты не вижу смысла.

И программа не вычисляет факториал 15, поэтому ввела значение вручную, но тем не менее формулу в программу включила, вдруг понадобится.

4,4(39 оценок)
Открыть все ответы
Ответ:
verbenalaym
verbenalaym
12.06.2021
Возможно, не самое эффективное решение
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
    using namespace std;
    const int N = 10;
    int A[N];
    srand(time(0));
    for (int i = 0; i < N; ++i)
        A[i] = rand() % 201 - 100;
   
    //Вывод исходного массива на экран
    for (int i = 0; i < N; ++i)
        cout << A[i] << "  ";
    cout << endl;

    //Подсчитаем количества положительных и отрицательных
    int kpos = 0, kneg = 0;
    for (int i = 0; i < N; i++)
        if (A[i] > 0)
            ++kpos;
        else
            ++kneg;

    int * Apos = new int[kpos];
    int * Aneg = new int[kneg];
    int pos = 0, neg = 0;
    for (int i = 0; i < N; ++i)
        if (A[i] > 0)
            Apos[pos++] = A[i];
        else
            Aneg[neg++] = A[i];

    for (int i = 0; i < N; ++i)
        if (i < kpos)
            A[i] = Apos[i];
        else
            A[i] = Aneg[i - kpos];

    delete[] Apos;
    delete[] Aneg;

    //Вывод полученного массива на экран
    for (int i = 0; i < N; ++i)
        cout << A[i] << "  ";
    cout << endl;
    return 0;
}
4,6(61 оценок)
Ответ:
Kirito505
Kirito505
12.06.2021
Const
    n = 10;

var
    i, c: integer;
    a, w: array[1..n] of integer;

begin
    randomize;
    
    writeln('Исходный массив:');
    for i := 1 to n do
    begin
        a[i] := random(201) - 100;
        write(a[i], ' ');
    end;
    writeln;
    
    c := 0;
    for i := 1 to n do
        if a[i] > 0 then
        begin
            c := c + 1;
            w[c] := a[i];
        end;
    
    writeln('Кол-во положительных элементов: ', c);
    for i := 1 to n do
    begin
        if a[i] <= 0 then
        begin
            c := c + 1;
            w[c] := a[i];
        end;
    end;
    
    writeln('Результат:');
    for i := 1 to c do
        write(w[i], ' ');
end.
4,4(43 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ