Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 22

Определить номера двух симметричных элементов массива

29.10.2014, 20:25. Показов 7764. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пара элементов в массиве называется симметричной , если эти элементы находятся на одинаковом расстоянии от концов массива. Так в массиве размером N симметричными будут пары элементов с порядковыми номерами 1 и N , 2 и N - 1 и т.д. (при нумерации с единицы). Напишите программу, которая заполняет массив из N элементов случайными целыми числами в диапазоне [ A , B ] и определяет номера двух симметричных элементов этого массива, сумма которых чётная и максимальная среди всех пар симметричных элементов. Если ни одной такой пары нет, нужно вывести два нуля. Если есть несколько таких пар, нужно вывести номера элементов, составляющих пару, ближайшую к центру массива.

Входные данные
Входная строка содержит три числа: границы диапазона случайных чисел A и B , а также размер массива N . Все числа разделены пробелами. Гарантируется, что 0 < N ≤ 10000 .

Выходные данные
В первой строке программа должна вывести N элементов построенного массива, разделив их пробелами, а во второй строке – номера двух симметричных элементов массива, имеющих максимальную чётную сумму. Если ни одной такой пары нет, нужно вывести два нуля.

У меня вот такая программа, но почему то она не проходит все тесты в тестирующей программе. В чем ошибка, что еще не учтено?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var
  c: array[1..10000] of integer;
  a, b, n, i, max, max1, max2, p, k, v, m: integer;
 
begin
  randomize;
  max := -10000;
  Readln(a, b, n);
  for i := 1 to n do 
  begin
    c[i] := random(b - a + 1) + a; Write(c[i], ' '); 
  end;
  if ((n mod 2) = 0) then k := n div 2 else k := n div 2;
  for p := 1 to k do 
  begin
    m := c[p] + c[n - p + 1];
    if ((m mod 2) = 0) and (m >= max) then 
    begin
      max := m; max1 := p; max2 := n - p + 1; inc(v); 
    end; 
  end;
  Writeln(' ');
  if (v = 0) then 
    Writeln(0, ' ', 0)
  else
    Writeln(max1, ' ', max2);
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.10.2014, 20:25
Ответы с готовыми решениями:

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

Найти номера двух ближайших элементов из массива
дан массив размера N. Найти номера двух ближайших элементов из этого массива (то есть элементов с наименьшим модулем разности) и вывести их...

Определить порядковые номера и значения первого положительного и последнего отрицательного элементов массива Z.
Нужна помощь с задачей https://www.cyberforum.ru/attachment.php?attachmentid=28986&amp;stc=1&amp;d=1272332730

7
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
30.10.2014, 11:55
nasutka15, ваш код править не стал. нарисовал свой, есть один косяк в заполнении массива - знак берется с наибольшей границы
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var
  a,b,i,n,il,ir:integer;
  ar:array of integer;
begin
  repeat
    write('A,B,N=');
    readln(a,b,n);
  until (n in [1..10000]) and (a<b);
  setlength(ar,n+1);
  for i:=1 to n do begin
    repeat
      if abs(a)>abs(b) then 
        ar[i]:=sign(a)*random(abs(a))+1 
      else 
        ar[i]:=sign(b)*random(abs(b))+1;
    until (ar[i] in [a..b]);  
    write(ar[i],'  ');
  end;
  writeln;
  il:=0;ir:=0;
  for i:=1 to n div 2 do 
    if (abs(ar[il]+ar[ir])<=abs(ar[i]+ar[1+n-i])) and  (not odd (ar[i]+ar[1+n-i])) and (ar[i]+ar[1+n-i]<>0) then 
      begin 
         il:=i;
         ir:=1+n-i;
     end;
  writeln(il,'  ',ir);
end.
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 22
30.10.2014, 17:34  [ТС]
ваш код не запускается у меня в паскале
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
31.10.2014, 08:12
nasutka15, а какой у вас паскаль?
Написана для PascalABC.Net
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 22
31.10.2014, 14:20  [ТС]
о, точно, блин(( а не можете исправить код для простого паскаля АВС?
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
31.10.2014, 15:25
Попробуйте так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var
  a,b,i,n,il,ir:integer;
  ar:array[1..10000] of integer;
function sign(x:real):integer;
begin
  if x>0 then sign:=1 else if x<0 then sign:=-1 else sign:=0;
end;
begin
  randomize;
  repeat
    write('A,B,N=');
    readln(a,b,n);
  until (n >=1) and (n<=10000) and (a<b);
  for i:=1 to n do begin
    repeat
      if abs(a)>abs(b) then ar[i]:=sign(a)*random(abs(a))+1
      else ar[i]:=sign(b)*random(abs(b))+1;
    until (ar[i]>=a) and (ar[i]<=b);
    write(ar[i],'  ');
  end;
  writeln;
  il:=0;ir:=0;
  for i:=1 to n div 2 do 
    if (abs(ar[il]+ar[ir])<=abs(ar[i]+ar[1+n-i])) and  (not odd (ar[i]+ar[1+n-i])) and (ar[i]+ar[1+n-i]<>0) then 
      begin 
         il:=i;
         ir:=1+n-i;
     end;
  writeln(il,'  ',ir);
end.
Добавлено через 6 минут
Цитата Сообщение от Joy Посмотреть сообщение
ar:array[1..10000] of integer;
- опечатка должно быть:

Pascal
1
ar:array[0..10000] of integer;
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
31.10.2014, 15:49
Цитата Сообщение от Joy Посмотреть сообщение
опечатка должно быть:
Pascal
1
ar:array[0..10000] of integer;
почему это?!
n не может быть ноль по условию задачи
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
31.10.2014, 18:52
если 0 0 значит нет пар. чтобы не было выхода за пределы массива поэтому с 0 должен быть массив см. строки 22-25
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.10.2014, 18:52
Помогаю со студенческими работами здесь

слить 2 массива А и В по 100 элементов в массив С из 200 элементов так , чтобы элементы массива А имели номера от 51 до 150.
Помогите пожалуйста слить 2 массива А и В по 100 элементов в массив С из 200 элементов так , чтобы элементы массива А имели номера от 51 до...

Алгоритм поиска номера первого из двух последовательных элементов в целочисленном массиве из 10 элементов, произведение которых максимально
Доброго времени суток. Помогите пожалуйста решить задачу. Условие: Опишите на языке программирования(Pascal) алгоритм поиска номера...

Напишите программу поиска номера первого из двух последовательных элементов в целочисленном массиве из 30 элементов, сумма которых максимальна
Всем привет!) надеюсь поможете сделать несколько программ с массивом. И наконец-то, третья, напишите программу поиска номера первого...

Найти номера двух ближайших чисел из массива.
помогите еще,пожалуйста.... Дан массив размера N. Найти номера двух ближайших чисел из этого массива.

Определить количество элементов больших суммы всех элементов и написать их номера.
Дан массив. Определить количество элементов больших суммы всех элементов и написать их номера.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru