Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2012, 12:16   #1
Solnze2
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 32
По умолчанию Работа с массивами

Дан вектор A(n). Подсчитать количество элементов максимальных по величине и если оно больше 2, то все элементы вектора с четными индексами заменить на 0.
Solnze2 вне форума Ответить с цитированием
Старый 23.09.2012, 14:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Легко. Показывай ввод вектора.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2012, 14:22   #3
Solnze2
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 32
По умолчанию

Ну, вот какой то набросок программы не уверена, что правильно:
Код:
program lab2;
const
  nmax=100;
var
  a: array[1..nmax] of integer;
  i,j,n,k,max: integer;
begin
  write('Skolko elementov v vektore? ');
  readln(n);
  write('a[1] = ');
  readln(a[1]);
  max:=a[1]; k:=0;
  for i:=2 to n do
  begin
    write('a[',i,'] = ');
    readln(a[i]);
    if a[i]>max then max:=a[i];
  end;
  for i:=1 to n do if a[i]=max then inc(k);
  if k>2 then for i:=1 to n do 
    if i mod 2=0 then a[i]:=0;
  writeln('Poluchenii massiv:');
  for i:=1 to n do write(a[i],' ');
  readln;
end.

Последний раз редактировалось Stilet; 23.09.2012 в 15:15.
Solnze2 вне форума Ответить с цитированием
Старый 23.09.2012, 15:17   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну, че?
Нормалек. Красота прям таки.
Запускай в паскале - каков результ будет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.09.2012, 00:06   #5
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Чуть исправил, если тема конечно актуальна
Код:
program lab2;
const
  nmax=100;
var
  a: array[1..nmax] of integer;
  i,j,n,k,max: integer;
begin
 write('Skolko elementov v vektore? ');
  readln(n);
  for i:=1 to n do begin
    write('a[',i,'] = ');readln(a[i]);
  end;
 max:=a[1]; k:=0;
 for i:=1 to n do begin 
    if a[i]>max then max:=a[i];
  end;
  for i:=1 to n do begin
     if a[i]=max then inc(k);
  end;
  if k>2 then begin 
    for i:=1 to n do begin
      if (a[i] = max) and ( i mod 2 = 0) then a[i]:=0;
     end;
  { Вывод массива с нулями }
  { если K < 2 то выводим данный исходный массив с 1 максимумом}
  writeln('Poluchenii massiv:');
  for i:=1 to n do write(a[i],' ');
  readln;
end.
Люблю на ты.Я человек простой

Последний раз редактировалось Leshii; 24.09.2012 в 00:12.
Leshii вне форума Ответить с цитированием
Старый 24.09.2012, 03:38   #6
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Леший, чет ты не то сделал.. Цитирую условие (болд мой):
Цитата:
.. то все элементы вектора с четными индексами заменить на 0.
Решение, приведенное Солнцем2, совершенно верное (я правда не прверял его на деле, только просмотрел). Единственное, что режет глаз, это цикл замены на нули по ВСЕМ элементам массива с проверкой индекса на четность:
Код:
  if k>2 then for i:=1 to n do 
    if i mod 2=0 then a[i]:=0;
Это двойная лишняя работа. Я бы сделал так:
Код:
  if k>2 then for i:=1 to n div 2 do a[i*2]:=0;
- и цикл вдвое короче, и никаких проверок не надо.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 24.09.2012, 19:04   #7
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Подсчитать количество элементов максимальных по величине и если оно больше 2, ...

Я вот когда писал думал,"оно" - одинаковые максимумы которые надо обнулить, или же надо присвоить всем четным элемента 0 если максимумов больше чем 2.

Вот собственно и думал что надо было занулить максимумы.

Но видимо не понял условие. Или же автор исправил его после того как я посмотрел и написал =)
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами Slam893 Помощь студентам 10 23.04.2012 01:40
работа с массивами CHOSEN1 Помощь студентам 1 08.12.2010 20:14
работа с массивами Pitbull_03 Помощь студентам 1 25.03.2010 15:52
Работа с массивами GaSST Microsoft Office Excel 5 24.03.2010 05:12
Работа с массивами mchip Microsoft Office Excel 4 11.03.2009 17:11