Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 08.03.2014
Сообщений: 99

Поменяйте местами последний элемент массива, кратный В и первый элемент кратный С

03.02.2016, 14:37. Показов 1543. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создайте одномерный массив, поменяйте местами последний элемент кратный В и первый элемент кратный С. В и С вводятся с клавиатуры.
Программа запускается и зависает после пересылки значений в процедуру lol, скорее всего в ней зацикливается.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
type  omas = array[1..100] of integer;//описание массива
const  n = 5;//константа
var//описание глобальных переменных
  a: omas;//описание глобальных переменных
  b, c: integer;//описание глобальных переменных
procedure init(var a: omas; n: integer);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i: integer;//Описание локальных переменных
begin//начало процедуры
  for i := 1 to n do//Цикл
    a[i] := random(100);//Вычисление
end;//конец процедуры
procedure print(var a: omas; n: integer);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i: integer;//Описание локальных переменных
begin//начало процедуры
  for i := 1 to n do//Цикл
    write(a[i], ' ');//вывод
end;//конец процедуры
procedure lol(var a: omas; n, b, c: integer);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i, x, y, z: integer;//Описание локальных переменных
begin//начало процедуры
  for i := 1 to n do//Цикл
  begin
    if (A[i] mod b) = 0 then begin//Условие (последний элемент кратный b)
      y := i;
    end;
    while z = 0 do 
    begin
      if (A[i] mod c) = 0 then //Условие (первый элемнт кратный c)
      begin
        c := i;
        z := 1;
      end;
    end;
  end;
  x := a[y]; a[y] := a[c]; a[c] := x;//Меняем местами элементы
end;//конец процедуры
begin//начало программы
  writeln('первый массив');//Вывод текста
  init(a, n);//Вызов процедуры и указание фактических параметров
  print(a, n);//Вызов процедуры и указание фактических параметров
  writeln;
  write('B=');
  readln(b);
  write('C=');
  readln(c);
  lol(a, n, b, c);//Вызов процедуры и указание фактических параметров
  print(a, n);//Вызов процедуры и указание фактических параметров
end.
Добавлено через 3 минуты
Причина в 39 строке, т.е. в том месте где элементы меняются местами
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.02.2016, 14:37
Ответы с готовыми решениями:

Поменять последний элемент массива, кратный своему порядковому номеру с первым элементом
Всем добрый вечер! Столкнулся с проблемой, нужно поменять последний элемент, кратный своему порядковому номеру с первым элементом...

Удалить из массива y размерностью 15 последний элемент кратный 6 или 5
удалить из массива y размерностью 15 последний элемент кратный 6 или 5.

Удалить из массива Y размерностью 15, последний элемент кратный 6 или 5
Удалить из массива Y размерностью 15, последний элемент кратный 6 или 5

3
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
03.02.2016, 17:13
Разнесите циклы проверки кратности.
while z = 0 do - парктически бесконечный цикл, i и z не меняются.
0
1 / 1 / 0
Регистрация: 08.03.2014
Сообщений: 99
04.02.2016, 17:13  [ТС]
Constantin Cat, Можно подробнее, пробовал так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure lol(var a: omas; n, b, c: integer);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i, x, y, z: integer;//Описание локальных переменных
begin//начало процедуры
  for i := 1 to n do//Цикл
    if (A[i] mod b) = 0 then //Условие (последний элемент кратный b)
      y := i;//приравнивание
  for i := 1 to n do//Цикл
    while z = 0 do
    begin
      if (A[i] mod c) = 0 then//Условие (первый элемнт кратный c)
      begin
        c := i;//приравнивание
        z := 1;//приравнивание
      end;
    end;
  x := a[y]; a[y] := a[c]; a[c] := x;//Меняем местами элементы
end;//конец процедуры
но все равно зацикливается
0
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
04.02.2016, 17:48
Лучший ответ Сообщение было отмечено Dmitryb98 как решение

Решение

Цитата Сообщение от Dmitryb98 Посмотреть сообщение
но все равно зацикливается
Pascal
1
2
3
while z = 0 do // вечный цикл
    begin
      if (A[i] mod c) = 0 then // т.к. Z может и не поменятся
Pascal
1
2
3
4
5
6
{первая проверка}
  for i := 1 to n do
    if a[i] mod b =0 then y:=i;
{вторая проверка}
  i:=1;
  while(a[i]mod c >0)and(i<=n)do inc(i);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2016, 17:48
Помогаю со студенческими работами здесь

Заменить первый элемент массива, кратный 5, нулём
1)Заменить первый элемент массива,кратный 5,нулём. 2)Заменить элементы массива с нечетными номерами на квадраты их номеров! 3)Из...

Заменить первый элемент массива, кратный 5, нулем
заменить первый элемент массива кратный 5 нулем

Поменять местами последний элемент, кратный заданному числу, и первый элемент
Создайте одномерный массив, поменяйте местами последний элемент кратный В и первый элемент. В вводится с клавиатуры. решить с процедурами

Удалить последний элемент массива, кратный 3
Помогите решить) &quot;Удалить последний элемент массива, кратный 3&quot;

Удалить из массива первый элемент, кратный 3
Дан одномерный целочисленный массив из N элементов. Удалить из него первый элемент массива, кратный 3


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru