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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2018, 17:17   #1
furymaxim
Пользователь
 
Регистрация: 25.11.2017
Сообщений: 28
По умолчанию Указание первоначального адреса элемента массива

Был дан массив из 3-х разрядных чисел,необходимо было найти суммы цифр каждого числа и выстроить их по убыванию с указанием их первоначальных адресов. например,в начале было число 526 ,стоял на 5ом месте исходного массива, сумма его цифр 13, он получился самым большим в новом массиве,но мы должны указать его начальное место,то есть "был на 5ом месте исходного массива"

Код:
program;
const n=10;
Type MyType=record
   number:integer;
   indexPrev:byte;
end;
Type ArrMyType = array[1..n] of MyType;
var
 i,j: integer;
 a:array[1..n] of MyType;
 
function f(x:integer):integer;
var
  d,s: integer;
begin
  s:=0;
  while x > 0 do
   begin
    d:= x mod 10;
    s:= s + d;
    x:= x div 10;
   end;
   f:=s;
end;

procedure swap(var x,y: integer);
   var t: integer;
 begin
    t := x;
    x := y;
    y := t
 end; 
 

begin
writeln('Исходный массив');
for i:=1 to n do
  begin
    a[i].number:=random(100)+500;
    a[i].indexPrev:=i; 
    write(i,' эл. = ',a[i].number,' ');
  end;
writeln;
writeln('Cумма цифр в числе,без сортировки');  
for i:=1 to n do
 a[i].number := f(a[i].number);
for i:=1 to n do
  write(' y ',i,' эл. = ',a[i].number, ' ');
//метод пузырька  
for i:=1 to n-1 do
 for j:=i+1 to n do
  if a[i].number < a[j].number then
   swap(a[i].number,a[j].number); 
writeln;   
writeln('Новый массив');
for i:=1 to n do
write(a[i].number,' ','первоначальный адрес = '); //???
end.

Как вывести первоначальный адрес?
furymaxim вне форума Ответить с цитированием
Старый 23.04.2018, 20:46   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Например, перед сортировкой, создай второй массив с порядковым номером, или используй двумерный: второй столбец - это порядковый номер элемента.
В процессе сортировки обрабатывай обе компоненты - либо второй массив, либо второй столбец...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++.Определите среднее значение элементов массива Х(20). Найдите индекс элемента массива, наиболее близкого к среднему значению. dunhill55 Помощь студентам 1 16.12.2012 19:02
Адреса элементов динамического массива меняются... Altera Общие вопросы Delphi 6 07.09.2009 07:31
Обновление первоначального состояния формы street-walker Общие вопросы Delphi 2 13.05.2009 00:07
PHP: использование элемента массива как массива Sudia Помощь студентам 1 20.02.2009 20:48
Указание точного адреса файла на диске Vladya Помощь студентам 4 04.11.2008 20:48