g116663
18.06.2022 18:56

Шифрования, который часто используют начинающие криптографы, заклю- чается в том, что шифруемое слово записывается некоторым достаточно хитрым образом в клетках
квадрата. Одним из таких, не очень удачных шифров, является шифр "Змейка".
Он применяется для шифрования слов длины n^2 (если длины слова меньше, оно дополняется
точками). Слово разбивается на части длиной по n символов каждая. Далее эти части записыва-
ются в квадрат размером n на n (каждая часть в отдельную строку), при этом части с четными
номерами записываются задом наперед. Например, слово Iloveyou., полученное из фразы I love
you. удалением пробелов, будет закодировано следующим образом.
Оно будет разбито на три части: Ilo, vey, ou.. Эти части далее будут записаны в квадрат так:

Можно видеть, что шифруемое слово записано в этом квадрате "змейкой".
Задан квадрат, получившийся в результате шифрования некоторого слова описанным
Необходимо выяснить, содержится ли в исходном слове подстрока t.
Формат ввода:

Первая строка входного файла содержит целое число n (1 <= n <= 50). Последующие n строк
содержат каждая по n символов - строки квадрата, начиная с первой. Последняя строка входного
файла содержит искомую непустую строку t, длина которой не превышает 1000 символов. Квадрат
и строка t состоят только из строчных букв латинского алфавита и точек.
Формат вывода:

В выходной файл выведите слово YES, если строка t содержится в зашифрованной строке, и
слово NO - в противном случае.

Пример ввода: Пример вывода:

3
Ilo
yev
ou.
you

YES

3
Ilo
yev
ou.
me

NO

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
20071218hi
30.04.2020 01:27

Відповідь:

#include <iostream>

#include <cstdlib>

#include <time.h>

using namespace std;

void randarr(int *A,const int size){

for(int i = 0; i < size; i++){

 A[i] = rand() % 201 - 100;

}

}

void printarr(int *A,const int size){

for(int i = 0; i < size; i++){

 cout << A[i] << " ";

}

}

float expression(int *A,int size){

float sum = 0;

int counter = 0;

for(int i = 0; i < size; i++){

 if(A[i] > 0){

  sum += A[i];

  counter++;

 }

}

sum /= counter;

return sum;

}

const int size = 10;

int main(){

srand(time(NULL));

setlocale(LC_ALL , "Ukrainian");

int A[size];

randarr(A,size);

printarr(A,size);  

cout << "\nСереднє арифметичне додатнiх чисел = " << expression(A,size) << endl;

 

return 0;                                                                  

}

0,0(0 оценок)
Ответ:
Bakha111
16.11.2022 04:26
Вот задача для "троечников" с дополнительной оценкой:

program pr1;
uses
crt;

const
arr1 : array[1..12] of integer = (5, 4, -3, 1, 0, -4, 0, 25, -8, 0, -17, -1);

type
arr2 = array of integer;

var
arr : arr2;
n : integer;
i, sot, spl, snu : byte;
ch : char;

begin
write('Хотите использовать заданный по умолчанию массив? (y/n): ');
ch := readkey;
writeln(ch);
sot := 0;
spl := 0;
snu := 0;
if ((ch='y') or (ch='Y')) then begin
{ Используем заданный по умолчанию }
for i:=1 to 12 do begin
if arr1[i] > 0 then inc(spl);
if arr1[i] < 0 then inc(sot);
if arr1[i] = 0 then inc(snu);
write(arr1[i], ' ');
end;
writeln;
end
else begin
{ Создаём и заполняем новый массив }
write('Введите желаемый размер массива: ');
readln(n);
setLength(arr, n);
writeln('Введите элементы массива:');
for i:=0 to high(arr) do
readln(arr[i]);
for i:=0 to high(arr) do begin
if arr[i]>0 then inc(spl);
if arr[i]<0 then inc(sot);
if arr[i]=0 then inc(snu);
write(arr[i], ' ');
end;
writeln;
end;

writeln('Количество отрицательных элементов: ', sot);
writeln('Количество нулевых элементов: ', snu);
writeln('Количество положительных элементов: ', spl);
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота