Нужен код на c++: в произвольно заданном одномерном массиве определить два элемента с наибольшими значениями и обнулить все элементы, расположенные между найденными значениями.
int main() { int s, i; cout << "s = "; cin >> s; double a[s], m1, m2; int m1i, m2i, f, t;
/* Заполнение */ for (i = 0; i < s; i++) { cout << i << ':'; cin >> a[i]; }
/* Первый максимум */ m1i = 0; m1 = a[m1i]; for (i = 1; i < s; i++) { if (a[i] > m1) { m1 = a[i]; m1i = i; } }
/* Второй максимум */ m2i = 0; m2 = a[m2i]; for (i = 1; i < s; i++) { if (i == m1i) continue; if (a[i] > m2) { m2 = a[i]; m2i = i; } }
/* Порядок итерации */ if (m1 > m2) { f = m2i; t = m1i; } else { f = m1i; t = m2i; }
for (i = f + 1; i < t; i++) { a[i] = 0; }
for (i = 0; i < s; i++) { cout << a[i] << ' '; } return 0; }
Gstoremsk62
09.02.2020
#include <iostream> #include <conio.h>
using namespace std;
int main() { cout << "Enter size of array : "; int size; cin >> size; cout << endl; int *arr = new int[size]; for (int i = 0; i < size; i++) { cin >> arr[i]; } cout << "" << endl;
int Largest(arr[0]), largest_index;
for (int i = 0; i < size; i++) { if (Largest < arr[i]) Largest = arr[i]; } for (int i = 0; i < size; i++) { if (arr[i] == Largest) largest_index = i; }
int Middle(arr[0]), middle_index;
for (int i = 0; i < size; i++) { if (i != largest_index) { if (Middle < arr[i]) Middle = arr[i]; } } for (int i = 0; i < size; i++) { if (arr[i] == Middle) middle_index = i; } for (int i = 0; i < size; i++) { if (i < largest_index && i > middle_index) arr[i] = 0; } cout << "" << endl; for (int i = 0; i < size; i++) cout << arr[i] << endl; _getch(); return 0;
vtarasyuk
09.02.2020
Переводим 3 байт обоих адресов в двоичную систему счисления 152(10) = 10011000(2) 157(10) = 10011101(2)
Запишем их друг под другом
10011000 10011101
Нам нужен наибольший байт маски. В маске под единицами записывается адрес сети, под нулями - номер хоста. Адрес сети у этих адресов одинаковый, то есть для поиска наибольшего байта маски мы можем байты разделить так 10011 000 10011 101
Первые пять разрядов - это окончание адреса сети, последние три - начало хоста. Хосту в маске подсети соответствуют нули, адресу сети - единицы, получается, что наибольший байт маски равен
10011 000 10011 101 11111 000 - маска
11111000(2) = 248(10)
skvik71672
09.02.2020
//Pascal ABC.NET v3.0 сборка 1111
Var ma:array of array of integer; n,m,i,j,res:integer; b:boolean; begin randomize; res:=1; b:=false; read(m,n); setlength(ma,m); for i:=0 to m-1 do setlength(ma[i],n); writeln('First matrix:'); for i:=0 to m-1 do begin writeln; for j:=0 to n-1 do begin ma[i,j]:=random(10); write(ma[i,j]:5); end; end; if n>m then begin for i:=0 to m-1 do for j:=i+1 to n-1 do if ma[i,j]>0 then begin; res:=res*ma[i,j]; b:=true; end; end else begin for i:=0 to n-1 do for j:=i+1 to n-1 do if ma[i,j]>0 then begin; res:=res*ma[i,j]; b:=true; end; end; if b=false then res:=0; writeln; writeln('Final array:'); for i:=0 to m-1 do begin writeln; for j:=0 to n-1 do begin if ma[i,j]=0 then ma[i,j]:=res; write(ma[i,j]:5); end; end; writeln; writeln('res=',res); end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Нужен код на c++: в произвольно заданном одномерном массиве определить два элемента с наибольшими значениями и обнулить все элементы, расположенные между найденными значениями.
using namespace std;
int main()
{
int s, i;
cout << "s = ";
cin >> s;
double a[s], m1, m2;
int m1i, m2i, f, t;
/* Заполнение */
for (i = 0; i < s; i++)
{
cout << i << ':';
cin >> a[i];
}
/* Первый максимум */
m1i = 0;
m1 = a[m1i];
for (i = 1; i < s; i++)
{
if (a[i] > m1)
{
m1 = a[i];
m1i = i;
}
}
/* Второй максимум */
m2i = 0;
m2 = a[m2i];
for (i = 1; i < s; i++)
{
if (i == m1i) continue;
if (a[i] > m2)
{
m2 = a[i];
m2i = i;
}
}
/* Порядок итерации */
if (m1 > m2)
{
f = m2i;
t = m1i;
}
else
{
f = m1i;
t = m2i;
}
for (i = f + 1; i < t; i++)
{
a[i] = 0;
}
for (i = 0; i < s; i++)
{
cout << a[i] << ' ';
}
return 0;
}