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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2011, 16:16   #1
Ebon
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 26
По умолчанию Массивы

Дан массив целых чисел сформировать наибольшее возможное число из цифр максимального и минимального элементов массива.
Нахождение макс. и мин. элементов:
Код:
Program abc;
const m=3;
var
a: array [1..m] of integer;
i, q, min, max, z: integer;
begin
for i:=1 to m do
begin
write ('a[',i,']=');
readln (a[i]);
end;
max:=a[1];
min:=a[1];
for i:=1 to m do
begin
if max<a[i] then max:=a[i];
if min>a[i] then min:=a[i];
end;
writeln('z=',z);
end.
А как не используя строку сформировать наибольшее число?
Ebon вне форума Ответить с цитированием
Старый 22.12.2011, 16:21   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Разбить на цифры -->загнать в массив --->отсортировать по убыванию--->получить число---> вывести
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 22.12.2011, 16:31   #3
Ebon
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 26
По умолчанию

Разбить на цифры и загнать в массив при помощи каких операторов делается?
Ebon вне форума Ответить с цитированием
Старый 22.12.2011, 16:39   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

при помощи
Код:
while ,+,:=,div и mod
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 22.12.2011, 16:58   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот готовый код.
попробуйте в нём разобраться...

Код:
program abc;
uses crt;
const m = 7;
var
  a: array[1..m] of integer;
  i, j, q, min, max, z: integer;
  Digits: array[1..30] of integer; {массив для хранения отдельных циферок}
  KolDigits: integer; {количество циферок в массиве Digits}
  N, OneDigit: integer;



begin
  randomize;
  for i := 1 to m do
  begin
    write('a[', i, ']=');
{readln (a[i]);} a[i] := Random(500) + 10; write(a[i], '  ');
  end;
  writeln;
  max := a[1];
  min := a[1];
  for i := 2 to m do
  begin
    if max < a[i] then max := a[i];
    if min > a[i] then min := a[i];
  end;

  WriteLn(' max = ', max, ' min = ', min);

  KolDigits := 0;

  {разобьём число max на цифры}
  N := max;
  repeat
    OneDigit := N mod 10;
    N := N div 10;
    inc(KolDigits);
    Digits[KolDigits] := OneDigit;
  until N = 0;

  {разобьём число min на цифры}
  N := min;
  repeat
    OneDigit := N mod 10;
    N := N div 10;
    inc(KolDigits);
    Digits[ KolDigits ] := OneDigit;
  until N = 0;

  {отсортируем массив Digits по убыванию}

  {сортировка массива методом простых обменов ("пузырька") }
  for i:=1 to KolDigits-1 do
    for j:=i+1 to KolDigits do
      if Digits[i] < Digits[j]then
        begin
          q := Digits[i];
          Digits[i]:=Digits[j];
          Digits[j]:=q
        end;

  {выведем максимальное число}
  WriteLn;
  Write('Максимальное число из найденных цифр: ');
  for i:=1 to KolDigits do Write(Digits[ i ]);
  WriteLn;

  Readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.12.2011, 17:09   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

только число я бы вот так вывел)
Код:
 max:=0
 for i:=1 to KolDigits do
 max:=max*10+Digits[ i ];
 Write(max);
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 22.12.2011, 23:17   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
только число я бы вот так вывел)
элементарно может не хватить разрядности.
попробуйте занесите в массив
Код:
for i:=1 to m do a[i] := MaxInt;
и расскажете, чему там max получился равным...

впрочем, хозяин — барин!

Последний раз редактировалось Serge_Bliznykov; 22.12.2011 в 23:20.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.12.2011, 19:16   #8
Ebon
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 26
По умолчанию

Спасибо. Еще я добавил в программу функций, но почему-то значение не вычисляет, посмотрите, что не так:
Код:
program abc;
const m=2;
type
st=array[1..m] of integer;
digits=array[1..30] of integer;
var
a:st;
b:digits;
i, j, q, min, max, z: integer;
KolDigits: integer;
N, OneDigit: integer;

function fr(max: integer):integer;
var
a: st;
b: digits;
KolDigits, p: integer;
N, OneDigit: integer;
begin
N := max;
repeat
OneDigit := N mod 10;
N := N div 10;
inc(KolDigits);
b[KolDigits] := OneDigit;
until N = 0;
fr:=b[koldigits];
end;

begin
for i := 1 to m do
begin
write('a[', i, ']=');
readln (a[i]);
end;
writeln;
max := a[1];
min := a[1];
for i := 2 to m do
begin
if max < a[i] then max := a[i];
if min > a[i] then min := a[i];
end;
KolDigits := 0;

b[koldigits]:=fr(max);
b[koldigits]:=fr(min);

for i:=1 to KolDigits-1 do
for j:=i+1 to KolDigits do
if b[i] < b[j] then
begin
q := b[i];
b[i]:=b[j];
b[j]:=q
end;

Write('Naibolshee chislo: ');
for i:=1 to KolDigits do Write(b[i]);
Readln
end.
Ebon вне форума Ответить с цитированием
Старый 23.12.2011, 19:42   #9
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
попробуйте занесите в массив
Serge_Bliznykov,вы меня конечно извините, но если в массиве цифры[0..9] откуда там окажется MaxInT?
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
указатели на массивы и массивы указателей blacktener Общие вопросы C/C++ 16 13.06.2011 20:45
Динамические массивы и массивы варианты N@stya Помощь студентам 0 11.06.2010 21:09
С++, Массивы, динамические массивы. -Sunshine- Помощь студентам 1 19.04.2010 02:17
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
массивы .... Sashko Общие вопросы C/C++ 3 26.03.2009 21:07