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

C++ написать проверку на то, входит ли первый массив во второй и наоборот. массивы вводит пользователь.

👇
Ответ:
Tgfdvbgg
Tgfdvbgg
19.07.2022

#include <iostream>

#include <Windows.h> //локализация

using namespace std;

int main()

{

SetConsoleCP(1251); //локализация

SetConsoleOutputCP(1251);

short size{};

cout << "Введите размер массивов: ";

cin >> size;

int* arrA = new int[size];

int* arrB = new int[size];

cout << "\nВведите элементы первого массива:\n";

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

 cin >> arrA[i];

cout << "\nВведите элементы второго массива:\n";

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

 cin >> arrB[i];

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

{

 for (int j = 0; j < size; j++)

 {

  if (arrB[i] == arrA[j]) //если значение элемента в массиве B найдётся в массиве A

  {

   int numOfRepeatsA{}, numOfRepeatsB{};

   for (int l = 0; l < size; l++) //подсчитываем количество повторений этих элементов

   {

    if (arrB[i] == arrB[l])

     numOfRepeatsB++;

    if (arrB[i] == arrA[l])

     numOfRepeatsA++;

   }

   if (numOfRepeatsA == numOfRepeatsB) //если элемент повторяется в массиве A столько же раз, сколько и в массиве B

    break; //переходим к проверке следующего элемента

   else //иначе очищаем память и завершаем программу, т.к. если хотя бы 1 элемент не проверку == дальше проверять нет смысла

   {

    cout << "\nМассивы не входят друг в друга";

    delete[] arrA;

    delete[] arrB;

    return 0;

   }

  }

 }

}

cout << "\nМассивы входят друг в друга"; //если в цикле программа не завершилась, значит ответ положительный

delete[] arrA;

delete[] arrB;

return 0;

}

4,6(73 оценок)
Ответ:
Мамаева2007
Мамаева2007
19.07.2022

Основное действие оставил функцией, так как проще потом осуществлять вызов в зависимости от того, какой массив больше

ответ (вариант исполнения 1):

#include <iostream>

using namespace std;

bool IsInclude(int* Find, int* Suorce, int sizeFind, int sizeSuorce);

int main()

{

int *A, *B, NA, NB;

setlocale(LC_ALL, "rus");

bool result;

cout << "Введите количество элементов первого массива: ";

cin >> NA;

A = new int[NA];

cout << "Введите элементы массива: " << endl;;

for (int i = 0; i < NA; i++) { cout << "A["<< i << "] = "; cin >> A[i]; }

cout << "Введите количество элементов второго массива: ";

cin >> NB;  

B = new int[NB];

cout << "Введите элементы массива: " << endl;;

for (int i = 0; i < NB; i++) { cout << "B[" << i << "] = "; cin >> B[i]; }

//Тепеь смотрим какой массив длиннее и в зависимости от этого запускаем функцию по разному

if (NA > NB)

{

 result = IsInclude(B, A, NB, NA);

 if (result) cout << "Массив B входит в массив A";

 else cout << "Массив B не входит в массив A";

}

else {

 result = IsInclude(A, B, NA, NB);

 if (result) cout << "Массив A входит в массив B";

 else cout << "Массив A не входит в массив B";

}

delete[] A;

delete[] B;

return 0;

}

bool IsInclude(int* Find, int* Suorce, int sizeFind , int sizeSuorce)

{

int CountInSuorce, CountInFind;

for (int i = 0; i < sizeFind; i++) { // Перебираем по одному все элементы меньшего массива  

 CountInSuorce = 0;

 CountInFind = 0;

 for (int j = 0; j < sizeSuorce; j++)

 {

  if (Find[i] == Find[j] && j < sizeFind) CountInFind++; // Считаем сколько раз элемент искомого массива находится в нём самом

  if (Find[i] == Suorce[j]) CountInSuorce++; // Считаем сколько раз элемент искомого массива встретился в большем массиве

 }

 if (CountInFind > CountInSuorce) return false;// Если счётчик элементов в искомом массиве оказался больше чем в большем массиве, значит выходим и дальше не имеет смысла искать

}

return true;// Если счётчики большего массива были всегда не меньше счетчика искомого массива, то мы попадём сюда и меньший массив можно составить из элементов большего

}

ответ (вариант исполнения 2):

#include <iostream>

using namespace std;

int IsInclude(int* First, int FirstCount, int* Second, int SecondCount);

int main()

{

int* A, * B, NA, NB;

setlocale(LC_ALL, "rus");

int result;

cout << "Введите количество элементов первого массива: ";

cin >> NA;

A = new int[NA];

cout << "Введите элементы массива: " << endl;;

for (int i = 0; i < NA; i++) { cout << "A[" << i << "] = "; cin >> A[i]; }

cout << "Введите количество элементов второго массива: ";

cin >> NB;

B = new int[NB];

cout << "Введите элементы массива: " << endl;

for (int i = 0; i < NB; i++) { cout << "B[" << i << "] = "; cin >> B[i]; }

result = IsInclude(A, NA, B, NB);

switch (result) {

 case 0: {cout << "Массивы A и B не входят друг в друга"; break; }

 case 1: {cout << "Массивы A и B имеют одинаковые элементы"; break; }

 case 2: {cout << "Массив A входит в массив B"; break; }

 case 3: {cout << "Массив B входит в массив A"; break; }

}

delete[] A;

delete[] B;

return 0;

}

int IsInclude(int* First, int FirstCount, int* Second, int SecondCount) // возвращаем 0 если массив не входид в другой, 1 если они одинаковые, 2 если первый входит во второй, 3 если второй входит в первый

{

int *Source, * Find, sizeSource, sizeFind, CountInSource, CountInFind;

bool Equal; // Флаг того что элементы одинаковые

bool AandB = FirstCount > SecondCount;

if(AandB)

{

 Source = First;

 sizeSource = FirstCount;

 Find = Second;

 sizeFind = SecondCount;

}

else  

{

 Find = First;

 sizeFind = FirstCount;

 Source = Second;

 sizeSource = SecondCount;

}

if (sizeFind == sizeSource) Equal = true;

else Equal = false;

for (int i = 0; i < sizeFind; i++) { // Перебираем по одному все элементы меньшего массива  

 CountInSource = 0;

 CountInFind = 0;

 for (int j = 0; j < sizeSource; j++)

 {

  if (Find[i] == Find[j] && j < sizeFind) CountInFind++; // Считаем сколько раз элемент искомого массива находится в нём самом

  if (Find[i] == Source[j]) CountInSource++; // Считаем сколько раз элемент искомого массива встретился в большем массиве

 }

 if (CountInFind > CountInSource) return 0;// Если счётчик элементов в искомом массиве оказался больше чем в большем массиве, значит выходим и дальше не имеет смысла искать

 if (CountInFind != CountInSource) Equal = false; // Если количество в искомом и большом получилось различное, то сбрасываем флаг

}

// Если счётчики большего массива были всегда не меньше счетчика искомого массива, то мы попадём сюда и меньший массив можно составить из элементов большего

if (Equal) return 1; // если флаг не сброшен, то возврвщаем 1

if (!Equal && AandB) return 3; // если флаг не сброшен, то возврвщаем 1

else return 2;

}

4,6(41 оценок)
Открыть все ответы
Ответ:
bayramovameyra
bayramovameyra
19.07.2022

Объяснение нужны ответы Какие из записей являются верно записанными формулами в электронных таблицах?

1)== C2 + C8

2)?C1 + D1 * D2

3)D100 * D1 =

4)!= A1 + B5

5)=F1 + A1 * A2

6)!!B1 - C3

№2

Прикрепил фото с заданием

№3

В Openoffice.org Calc создали таблицу, заполнив ее ячейки так, как показано на рисунке. Какое число будет находиться в ячейке C1 после того, как будет нажата клавиша Enter?

Комментарий. Если у вас русскоязычная версия электронных таблиц, нужно считать, что вместо IF записано ЕСЛИ.

№4

В электронную таблицу занесли результаты тестирования учащихся по русскому языку и математике. На рисунке приведены первые строки получившейся таблицы.

В столбце A указаны фамилия и имя учащегося; в столбце B – район города, в котором расположена школа учащегося; в столбцах C, D – баллы, полученные соответственно по русскому языку и математике. По каждому предмету можно было набрать от 0 до 100 баллов.

Всего в электронную таблицу были занесены данные по 263 учащимся. Порядок записей в таблице произвольный. Откройте файл с данной электронной таблицей: /uploads/inner_file/file/9768/table2.xls. На основании данных, содержащихся в этой таблице, ответьте на во чему равна наименьшая сумма баллов по двум предметам среди учащихся Заречного района?

№5

Прикрепил фото с заданием

№7

прикрепил фото с заданием

4,6(37 оценок)
Ответ:
Cyndyma
Cyndyma
19.07.2022
Программу надо сформатировать и тогда её структура будет видна лучше.
А чтобы понять, как идет выполнение, в нужных точках ставим промежуточную выдачу - это называется "трассировкой".

var
  s, k: integer;
label
  met;
begin
  s:=-12;
  k:=90;
  Writeln('s=',s,', k=',k);
  s:=s+10;
  Writeln('s=',s);
met:
  Writeln('Метка met:');
  k:=k+10; Write('k=',k);
  if k<200 then s:=50 else s:=s+k;
  Writeln(', s=',s);
  if k<200 then goto met;
  Writeln('Результат: s=',s)
end.

Результат выполнения программы:
s=-12, k=90
s=-2
Метка met:
k=100, s=50
Метка met:
k=110, s=50
Метка met:
k=120, s=50
Метка met:
k=130, s=50
Метка met:
k=140, s=50
Метка met:
k=150, s=50
Метка met:
k=160, s=50
Метка met:
k=170, s=50
Метка met:
k=180, s=50
Метка met:
k=190, s=50
Метка met:
k=200, s=250
Результат: s=250
4,4(22 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ