sofiyakasheeva
05.04.2023 07:38

7 класс информатика(Котов, Лапо, Вайцехович), 13 параграф, упражнение 1

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
pornuxa1
31.12.2020 18:11
Одно из решений, возможно, не самое эффективное
#include <iostream>
#include <iomanip>
int main()
{
    using namespace std;

    //исходная последовательность
    const int N = 8;
    double Arr[N] = { 14.2, -3.4, 7.8, -3.1, 8.2, 98.22, -7, 12 };

    //вывод на экран исходной последовательности
    for (int i = 0; i < N; ++i)
        cout << Arr[i] << "  ";
    cout << endl;

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

    //создадим массивы отрицательных и неотрицательных элементов
    double * ArrNeg = new double[kneg];
    double * ArrPos = new double[kpos];

    int kn = 0, kp = 0;
    for (int i = 0; i < N; i++)
        if (Arr[i] < 0)
            ArrNeg[kn++] = Arr[i];
        else
            ArrPos[kp++] = Arr[i];

    cout << "Enter a, b, c or d: ";
    char ch;
    cin >> ch;

    if (ch == 'a' || ch == 'b' || ch == 'c' || ch == 'd')
    {
        switch (ch)
        {
            //пункт а)
            case 'a':
                for (int i = 0; i < kneg; ++i)
                    Arr[i] = ArrNeg[i];
                for (int i = 0; i < kpos; ++i)
                    Arr[i + kneg] = ArrPos[i];
                break;

                //пункт б)
            case 'b':
                for (int i = 0; i < kneg; ++i)
                    Arr[i] = ArrNeg[--kn];
                for (int i = 0; i < kpos; ++i)
                    Arr[i + kneg] = ArrPos[i];
                break;

                //пункт в)
            case 'c':
                for (int i = 0; i < kneg; ++i)
                    Arr[i] = ArrNeg[i];
                for (int i = 0; i < kpos; ++i)
                    Arr[i + kneg] = ArrPos[--kp];
                break;

                //пункт г)
            case 'd':
                for (int i = 0; i < kneg; ++i)
                    Arr[i] = ArrNeg[--kn];
                for (int i = 0; i < kpos; ++i)
                    Arr[i + kneg] = ArrPos[--kp];
                break;
        }
    }
    else
        cout << "You entered wrong symbol\n";

    for (int i = 0; i < N; ++i)
        cout << Arr[i] << "  ";
    cout << endl;
    delete[] ArrNeg;
    delete[] ArrPos;
    return 0;
}
0,0(0 оценок)
Ответ:
benjulia
01.08.2022 16:00
Первый алгоритм:
const
  n=30;
var
  a:array[1..30] of integer;
  s:longint;
  i:integer;
begin
  { формируем массив }
  Randomize;
  Writeln('Элементы массива:');
  for i:=1 to n do
  begin a[i]:=Random(51)-25; Write(a[i]:4) end;
  Writeln;
  { собственно, алгоритм }
  s:=a[1]*a[2]; i:=3;
  while i<=n-1 do
  begin s:=s+a[i]*a[i+1]; i:=i+2 end;
  Writeln('Сумма пар произведений равна ',s)
end.

Тестовое решение:
Элементы массива:
   1  10  -9 -12  -2  20  21  14   5  19  21 -14 -10 -17   5  -9  -8  17  18  11 -21  -3 -15 -10 -15 -16 -15   2   3  21
Сумма пар произведений равна 846

Второй алгоритм
const
  n=30;
var
  a:array[1..30] of integer;
  smax,imax:longint;
  i:integer;
begin
  { формируем массив }
  Randomize;
  Writeln('Элементы массива:');
  for i:=1 to n do
  begin a[i]:=Random(51)-25; Write(a[i]:4) end;
  Writeln;
  { собственно, алгоритм }
  smax:=a[1]+a[2]; imax:=1;
  for i:=2 to n-1 do
    if smax<a[i]+a[i+1] then
    begin smax:=a[i]+a[i+1]; imax:=i end;
  Writeln('Номер первого из пары элементов с максимальной суммой: ',imax)
end.

Тестовое решение:
Элементы массива:
  23  13 -11  -1 -18  20 -23   1 -21 -10   7  15  -2  24 -18 -22 -13  12 -16  22  19 -14 -14 -14  19  15   8 -15 -19 -22
Номер первого из пары элементов с максимальной суммой: 20
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота