Васильевичь Виктория457
?>

Нужен код на c++: в произвольно заданном одномерном массиве определить два элемента с наибольшими значениями и обнулить все элементы, расположенные между найденными значениями.

Информатика

Ответы

Anton661
#include <iostream>
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;
}
Gstoremsk62
#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
Переводим 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
//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++: в произвольно заданном одномерном массиве определить два элемента с наибольшими значениями и обнулить все элементы, расположенные между найденными значениями.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

abroskin2002
Khlistova1488
Андреевнатест707
ilukianienko458
kraevaea
yulyaderesh
pisikak999
picsell
lazareva
info8
Golubitskaya378
drevile57
dpolkovnikov
soa8690
Бегун-Марина