Кто может устно объяснить уже решенные задачи на С++.
Нужен человек который хоть немного разбирается в С++.
Нужно написать, что делает каждый абзац в данной программе.
(1)Условие:
Назовем два массива похожими, если они состоят из одних и тех же элементов
(без учета кратности). По двум данным массивам выясните, похожие они или нет.
Решение:
#include
#include
#include
using namespace std;
int main()
{
int n, k, s;
cin >> n;
map f;
map sn;
map::iterator it;
for(int i = 0; i < n; i++){
cin >> s;
if(f.count(s) >= 1) f[s]++;
else f.insert(pair (s, i));
}
cin >> k;
for(int i = 0; i < k; i++)
{
cin >> s;
if(sn.count(s) >= 1) sn[s]++;
else sn.insert(pair (s, i));
}
if(f.size() != sn.size()){
cout << "NO";
return 0;
}
for(it = f.begin(); it != f.end(); it++)
if(sn.find(it->first) == sn.end()){
cout << "NO";
return 0;
}
cout << "YES";
return 0;
}
(2)Условие:
Давид и Вероника собирали камни, они набрали много камней и сложили их
в две большие кучи. Теперь они хотят определить, сколько они собрали камней, таких, что такой же размер камней есть и у Вероники, и у Давида и сложить из них третью кучу. Размеры камней могут повторяться, все камни одинакового размера из обоих куч надо складывать в третью кучу им сложить третью кучу.
Решение:
#include
#include
using namespace std;
int main()
{
int n, k, s;
cin >> n >> k;
map As;
map Aj;
map::iterator itas, itaj;
for(int i = 0; i < n; i++){
cin >> s;
if(As.count(s) >= 1) As[s]++;
else As.insert(pair (s, 1));
}
for(int i = 0; i < k; i++){
cin >> s;
if(Aj.count(s) >= 1) Aj[s]++;
else Aj.insert(pair (s, 1));
}
itaj = Aj.begin();
for(itas = As.begin(); itas != As.end(); itas++)
if(Aj.find(itas->first) != Aj.end()){
itaj = Aj.find(itas->first);
for(int i = 0; i < itas->second + itaj->second; i++)
cout << itas->first << endl;
}
return 0;
}
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;
int main()
{
int i, j, sum=0, n, m, p=1;
cout<<"Введите количество строк:"<<endl;
cin >> n;
cout<<"Введите количество столбцов:"<<endl;
cin >> m;
int k=i, h=j;
int a[n][m];
int max = a[0][0];
cout<<"Исходный массив:"<<endl;
for (i=0; i<n;i++)
{
for (j=0;j<m;j++)
{
a[i][j]=-10 + rand()%20;
cout<<a[i][j]<<" ";
}
cout<<endl;
}
for (i = 0; i < n; i++)
{
{
for (j = 0; j < m; j++)
{
sum += a[i][j];
}
cout<<"Сумма "<<i<<" строки равна: "<<sum<<endl;
sum = 0;
}
}
for (j = 0; j < m; j++)
{
for (i = 0; i < n; i++)
{
p *= a[i][j];
}
cout<<"Произведение "<<j<<" столбца равно: "<<p<<endl;
p = 1;
}
for(k=0, h=0; k<n && h<m; k++, h++)
{
if(a[k][h]>max)
{
max = a[k][h];
}
}
cout<<"Наибольшее число на главной диагонали: "<<max<<endl;
1. картинка
2. 2) палка
Объяснение:
1.
Общий порядок действий:
1) скобки
2) НЕ (¬, черта над выражением) - значение противоположно исходному высказыванию
3) И (∧) - истинно, когда оба исходных высказывания истинны
4) ИЛИ (∨) - ложно, когда оба исходных высказывания ложны
2.
(Первая буква слова согласная ИЛИ Вторая буква слова гласная) И Последняя буква гласная = 1 (истинно)
1) ирис
2) палка
3) словарь
И - истинно, когда оба исходных высказывания истинны
(Первая буква слова согласная ИЛИ Вторая буква слова гласная) = 1 (истинно)
Последняя буква гласная = 1 (истинно)
Проверим правую часть (Последняя буква гласная = 1 (истинно)):
1) ирис = 0 (ложно, с - согласная буква)
2) палка = 1 (истинно, а- гласная буква)
3) словарь = 0 (ложно, ь - не гласная и не согласная буква)
Осталось всего 1 слово (палка)
Проверим левую часть ((Первая буква слова согласная ИЛИ Вторая буква слова гласная) = 1 (истинно))
ИЛИ - истинно, когда любое из исходных высказываний истинно
Первая буква слова согласная = 1 (истинно)
ИЛИ
Вторая буква слова гласная = 1 (истинно)
2) палка = 1 (истинно, п - согласная буква, а - гласная буква)
1) ирис = 0 (ложно, и - гласная буква, р - согласная буква)
3) словарь = 1 (истинно, с - согласная буква, л - согласная буква)
Слово палка подходит и под левую часть