В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
faridremihanov1
faridremihanov1
01.01.2023 17:09 •  Информатика

написать алгоритм Дано a, x и натуральное N. Вычислить
(((…((x+a)2+a)2+…a)2+a) (N скобок).

Показать ответ
Ответ:
Ruslanchik111
Ruslanchik111
16.02.2023 23:26
1. Примерно так учат писать программы в школе...

const
  nn=100; // предельное кол-во элементов в массиве
type
  mas=array[1..nn] of integer;

procedure RandomArray(var a:mas;n,p,q:integer);
// Заполняет первые n элементов массива a
// случайными числами из интервала [p;q]
var
  i:integer;
begin
  for i:=1 to n do a[i]:=Random(q-p+1)+p
end;

procedure PrintArray(a:mas;n:integer);
// Выводит на экран первые n элементов массива a
var
  i:integer;
begin
  for i:=1 to n do Write(a[i],' ');
  Writeln
end;

procedure SortByDescending(var a:mas;n:integer);
// Сортирует по невозрастанию первые n элементов массива a.
// Элементарная обменная сортировка
var
  i,j,t:integer;
begin
  for i:=1 to n-1 do
    for j:=1 to n-1 do
      if a[j]<a[j+1] then
        begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end
end;

// Основная программа
var
  i,n1,n2,n3,x,y:integer;
  a,b,c:mas;
begin
  Randomize;
  Write('Кол-во элементов в массиве и границы интервала из значений: ');
  Read(n1,x,y);
  RandomArray(a,n1,x,y);
  Write('Кол-во элементов в массиве и границы интервала из значений: ');
  Read(n2,x,y);
  RandomArray(b,n2,x,y);
  Write('Первый массив: '); PrintArray(a,n1);
  Write('Второй массив: '); PrintArray(b,n2);
  Writeln('Объединенный массив, отсортированный по невозрастанию');
  n3:=n1+n2;
  for i:=1 to n1 do c[i]:=a[i];
  for i:=1 to n2 do c[i+n1]:=b[i];
  SortByDescending(c,n3);
  PrintArray(c,n3)
end.

Тестовое решение
Кол-во элементов в массиве и границы интервала из значений: 8 10 60
Кол-во элементов в массиве и границы интервала из значений: 6 30 90
Первый массив: 41 56 14 57 52 51 30 54
Второй массив: 76 36 44 39 68 38
Объединенный массив, отсортированный по невозрастанию
76 68 57 56 54 52 51 44 41 39 38 36 30 14

2. На самом деле эту же задачу можно написать гораздо короче

// PascalABC.NET 3.1, сборка 1246 от 23.05.2016
begin
  var n1,n2,x,y:integer;
  Write('Кол-во элементов в массиве и границы интервала из значений: ');
  Read(n1,x,y);
  var a:=ArrRandom(n1,x,y);
  Write('Кол-во элементов в массиве и границы интервала из значений: ');
  Read(n2,x,y);
  var b:=ArrRandom(n2,x,y);
  Write('Первый массив: '); a.Println;
  Write('Второй массив: '); b.Println;
  Writeln('Объединенный массив, отсортированный по невозрастанию');
  var c:=(a+b).SortedDescending; c.Println
end.
0,0(0 оценок)
Ответ:
Darvin2004
Darvin2004
27.04.2021 17:40
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>

int main()  
  {
    SetConsoleCP(1251);      
    SetConsoleOutputCP(1251);  
 
int const n=3;
int mas[n][n];
int sum1, sum2;
bool magik;

for (int i=0; i<n; i++)
    for (int j=0; j<n; j++)
         {
           printf("mas[%d][%d] = ", i+1, j+1);
           scanf("%d",&mas[ i ][ j ]);
         }

printf("\nВведенная матрица:\n");
     for (int i=0; i<n; i++)
        {
             for (int j=0; j<n; j++)
                       {
                          printf("%d  ",mas[ i ][ j ]);
                       }
             printf("\n");
         }

sum1=0;
sum2=0;

for (int i = 0; i<n; i++)
     {
            sum1 += mas[ i ][ i ];
            sum2 += mas[ i ][ n-1-i ];
      }

printf("Сумма главной диагонали = %d\n", sum1);
printf("Сумма побочной диагонали = %d\n", sum2);

magik = true;
for (int i=0; i<n; i++)
    {
        if (sum1==sum2)
             {
                 sum2=0;
                 for (int j=0; j<n; j++)
                    {
                        sum2 += mas[ i ][ j ];
                     }
              } else  { magik=false; break; }
     }

if (magik==true)
     {
           for (int i=0; i<n; i++)    
               {
                   if (sum1==sum2)
                        {
                           sum2=0;
                           for (int j=0; j<n; j++)
                               {
                                   sum2 += mas[ j ][ i ];
                               }
                         }
                        else  { magik=false; break; }
                 }
       }

if (magik==true)
    printf("\nМатрица является магическим квадратом\n");  
else
    printf("\nМатрица не является магическим квадратом\n");

system("pause");
return 0;
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота