Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
3 / 3 / 3
Регистрация: 15.01.2011
Сообщений: 13
1

Заменить число в массиве на его адрес по возрастанию/убыванию

14.01.2013, 12:08. Показов 862. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
имеется массив a:=array [1..5] of byte , заполненный числами от 0 до 99, необходимо записать в него вместо чисел их адреса по возрастанию/убыванию. Например: 10 5 23 28 17, по возрастанию должен выглядеть так 2 1 4 5 3, по убыванию будет вот так 4 5 2 1 3
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2013, 12:08
Ответы с готовыми решениями:

Если первое число отрицательно, то его значение заменить его модулем; в противном случае второе число заменить
Доброго времени суток. В университете задали эти задания по информатике (PascalABC). Сама полный...

Найти в массиве самое большое число и заменить его на 9
3. Ввести с клавиатуры массив из К чисел (К также вводится с клавиатуры). Затем найти в нем самое...

Найти первое отрицательное число в массиве, заменить его на ноль
Здравствуйте! Задача: написать функцию определения первого отрицательного числа в массиве....

В одномерном массиве заменить каждое отрицательное число полусуммой его соседей справа и слева
В одномерном массиве A1, A2, ... , An заменить каждое отрицательное число полусуммой его соседей...

14
Фрилансер
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,587
Записей в блоге: 1
14.01.2013, 12:12 2
Дополнительный массив можно использовать?
0
3 / 3 / 3
Регистрация: 15.01.2011
Сообщений: 13
14.01.2013, 12:14  [ТС] 3
если необходимо, то да, меня устроит любой вариант решения данной проблемы >.<
0
Фрилансер
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,587
Записей в блоге: 1
14.01.2013, 12:27 4
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
52
Const n=5;
Var A,B:array[1..5] of byte;
    i,j,t:byte;
    ch:char;
Begin
    write('v/u = ');readln(ch);{v-возр-ию,u-убыванию}
    For i:=1 to n do
    Begin
      A[i]:=random(99);
      write(A[i]:3);
    End;
    writeln;
    Case ch of
     'v':Begin
         For i:=1 to n do
          B[i]:=i;
         For i:=n downto 2 do
          For j:=2 to i do
           if A[j]<A[j-1] then
           Begin
             t:=A[j];
             A[j]:=A[j-1];
             A[j-1]:=t;
             t:=B[j];
             B[j]:=B[j-1];
             B[j-1]:=t;
           End;
          For i:=1 to n do
           A[i]:=B[i];
         End;
     'u':Begin
         For i:=1 to n do
          B[i]:=i;
         For i:=n downto 2 do
          For j:=2 to i do
           if A[j]>A[j-1] then
           Begin
             t:=A[j];
             A[j]:=A[j-1];
             A[j-1]:=t;
             t:=B[j];
             B[j]:=B[j-1];
             B[j-1]:=t;
           End;
          For i:=1 to n do
           A[i]:=B[i];
         End;
     End;
     For i:=1 to n do
      write(A[i]:4);
     readln;
End.
Тестируй...
1
3 / 3 / 3
Регистрация: 15.01.2011
Сообщений: 13
14.01.2013, 12:31  [ТС] 5
Цитата Сообщение от CodeR Посмотреть сообщение
Pascal
1
....
Тестируй...
все работает, благодарю. это то что надо
0
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
14.01.2013, 14:23 6
Цитата Сообщение от memphis92 Посмотреть сообщение
все работает...
Точно-точно работает?
Не знаю как у тебя, но у меня выдаёт странные циферки - не в порядке возрастания или убывания.
Хотя раз тебя устраивает, то я не буду докапываться...
0
Фрилансер
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,587
Записей в блоге: 1
14.01.2013, 14:24 7
Цитата Сообщение от Yurek Посмотреть сообщение
Не знаю как у тебя, но у меня выдаёт странные циферки - не в порядке возрастания или убывани
кинь скрин)
0
Фрилансер
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,587
Записей в блоге: 1
14.01.2013, 14:33 8
У меня всё ок
Миниатюры
Заменить число в массиве на его адрес по возрастанию/убыванию   Заменить число в массиве на его адрес по возрастанию/убыванию  
0
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
14.01.2013, 15:03 9
Читаю задание:
Цитата Сообщение от memphis92 Посмотреть сообщение
...Например: 10 5 23 28 17, по возрастанию должен выглядеть так 2 1 4 5 3, по убыванию будет вот так 4 5 2 1 3
То есть меньшее число 5 и этот элемент массива замещается 1-кой, следующий 10 и он замещается 2-кой, и так далее, по возрастанию или убыванию.
CodeR, теперь смотрим что выдаёт программа:
Массив - 59 87 16 75 71
Индексы - 3 1 5 4 2
То есть меньшее число - это 87 ?
Расставим числа в порядке их индексирования программой: 87 71 59 75 16
Не похоже ни на порядок возрастания ни на порядок убывания.

У меня уже возникают сомнения, что я чего-то не понимаю. Двух человек всё устраивает, а меня нет - наверное не улавливаю сути
0
Фрилансер
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,587
Записей в блоге: 1
14.01.2013, 15:08 10
Цитата Сообщение от Yurek Посмотреть сообщение
Массив - 59 87 16 75 71
Индексы - 3 1 5 4 2
Там было по возрастанию элементов расставить индексы, теперь смотрим
16 59 71 75 87
Вот так если индексы перевести в массив чисел (исходный)
0
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
14.01.2013, 15:28 11
Цитата Сообщение от CodeR Посмотреть сообщение
16 59 71 75 87
А как ты их так лихо расставил, на основании чего? Индексов выданных программой? Так они расставляют другой порядок, который выше привёл.
Прогнал программу с исходными данными как в задании. Привожу результат:
Массив - 10 5 23 28 17
Индексы - 2 1 5 3 4
10 5 23 28 17, по возрастанию должен выглядеть так 2 1 4 5 3
Не сходится.
0
Фрилансер
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,587
Записей в блоге: 1
14.01.2013, 15:35 12
Цитата Сообщение от Yurek Посмотреть сообщение
А как ты их так лихо расставил, на основании чего? Индексов выданных программой?
да на основание индексов программы...я понял задание так: надо упорядочить массив и раставить индексы в соответствие тому где находились исходные элементы...
0
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
14.01.2013, 15:52 13
Цитата Сообщение от CodeR Посмотреть сообщение
...надо упорядочить массив...
Вот может быть здесь главное недопонимание. Мне показалось, что в задании этого нет и надо просто пройти элементы массива в порядке возрастания/убывания значений элементов и присвоить этим элементам их порядковые номера в этой возрастающей/убывающей последовательности. Думаю так.
Наверное только заказчик сможет уточнить или тот кто ему задание выдал (препод)
0
3 / 3 / 3
Регистрация: 15.01.2011
Сообщений: 13
15.01.2013, 01:25  [ТС] 14
сразу не заметил что программа работает не корректно... но помогла мне додуматься до правильного варианта, вот что получилось у меня:
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
uses crt;
const c=1;//  2-убывание 1-возрастание
      n=5;
var max,madres:array [1..5] of integer;
    i,j:integer;
begin
for i:=1 to n do
 max[i]:=random(100);
if c=1 then
 begin
 for i:=1 to n do
  madres[i]:=1;
 for i:=1 to n do
  for j:=1 to n do
   if max[i]>max[j] then inc(madres[i]);
 end
else
 begin
 for i:=1 to n do
  madres[i]:=n;
 for i:=1 to n do
  for j:=1 to n do
   if max[i]>max[j] then dec(madres[i]);
 end;
for i:=1 to n do
 write(max[i]:3);
writeln;
for i:=1 to n do
 write(madres[i]:3);
end.
но столкнулся с еще 1 проблемой, если в массиве встречаются одинаковые числa, то им присваиваются одинаковые значения...а необходимо что бы числа в получившемся массиве не повторялись и были в диапазоне 1..n
0
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
15.01.2013, 03:07 15
Цитата Сообщение от memphis92 Посмотреть сообщение
...столкнулся с еще 1 проблемой, если в массиве встречаются одинаковые числa...
Так это проблема генерации уникальных случайных чисел. Если нужны именно не введённые откуда-то числа, а сгенерированные непорторяющиеся, то тоже можно организовать. Недавно отвечал на такую тему Поиск со случайным перебором.
0
15.01.2013, 03:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2013, 03:07
Помогаю со студенческими работами здесь

В массиве отсортировать положительные числа по возрастанию, отрицательные по убыванию
Приветствую! Помогите, пожалуйста, с решением задачи. В массиве отсортировать положительные числа...

Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию
Задание: Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию....

В массиве отсортировать четные строчки по возрастанию, а нечетные по убыванию
Дан двумерный массив с рандомными значениями , как отсортировать четные строчки по возрастанию, а...

Если массив А упорядочен по возрастанию, то упорядочить его по убыванию
Здравствуйте! Прошу помочь дописать код. Сижу уже 2 часа и не знаю как реализовать момент с...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru