Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с массивом чисел

26K
11 июня 2008 года
kl1shny
16 / / 09.12.2007
Здраствуйте!...Нужно доделать программу, то есть само условие...проверки на четность и нечетность...и вывод полученого массива.

Вот само задание:
Число m, сотставлено из цифр числа n так , что сначала идут четные цифры числа n , а затем нечетные ( в том же порядке, что и в числе n )


Код:
uses crt;
label 1;
var i,k:integer;
 a:array[1..20] of integer;
begin clrscr;

1:write ('vvedite chislo - '); read(k);
if (k<=8) or (k>20) then begin
 write('!vvedite chislo ot 9 do 20!');
  readln;
   readln;
  clrscr;
 goto 1;
end;

for i:=1 to k do begin
 write('a[',i,']='); read(a);
end;



readln;
 readln;
end.
431
11 июня 2008 года
sherry
207 / / 16.10.2006
Не пойму одного - каким боком тут массивы? Как сказал один оч умный человек: "Зачем вызывать экскаватор, если нужно наполнить песком детское ведёрко?"

Код:
const
  m = 12345; {число, которое нужно преобразовать}
var
  i, n: integer;
  rez: real;
begin
  rez:=0; i:=0;
  n:=m;
  while n>0 do {отбираем нечётные числа}
   begin
    if Odd(n mod 10) then
     begin
       rez:= rez + (n mod 10)*exp(i*ln(10));
       inc(i);
     end;
    n:= n div 10;
   end;
  n:=m;

  while n>0 do {отбираем чётные числа}
   begin
    if not Odd(n mod 10) then
     begin
       rez:= rez + (n mod 10)*exp(i*ln(10));
       inc(i);
     end;
    n:= n div 10;
   end;

  writeln(rez:0:0);
  readln;
end.

Обращаю внимание на то, что результат формируется задом-наперёд

Если будут нужны подробные комментарии - обращайтесь сюда же.
431
12 июня 2008 года
sherry
207 / / 16.10.2006
Вот, как и просили, с массивами и строковым типом данных.

Код:
const
  mn = ['1', '3', '5', '7', '9'];  {множество нечётных цифр}
var
  m: string;
  n: array of char; {динамический массив, в котором будет храниться результат}
  i,r: integer;  {i - индекс элемента массива, r - размерность массива}
begin
  readln(m);
  r:=1;
  {обращаю внимание на то, что индекс первого элемента в динамическом массиве равен нулю!}
  {далее всё должно быть интуитивно понятно}
  for i:=1 to length(m) do {бежим по строке}
   if m in mn then  {если элемент строки - состоит в множестве нечётных цифр, то добавим сий элемент в массив}
    begin
      SetLength(n,r); {размер массива равен r}
      n[r-1]:= m; {присваивание}
      inc(r); {r увеличиваем на единичку}
    end;

  for i:=1 to length(m) do {то же самое для чётных чисел}
   if not (m in mn) then
    begin
      SetLength(n,r);
      n[r-1]:= m;
      inc(r);
    end;

  for i:=0 to r-1 do  {вывод на экран элементов массива}
   write(n);

 readln;
end.


> [COLOR="Blue"]if (k<=8) or (k>20) then begin[/COLOR]

И ещё. Запомните: метки - это зло! Сделайте лучше вот так:
 
Код:
Repeat
  write('Please, type value `k` ');
  readln(k);
Until (k<=8) or (k>20);
431
12 июня 2008 года
sherry
207 / / 16.10.2006
Немного подробнее о массивах (включая динамические), можно почитать ЗдЕсЬ.
Удачи!
26K
13 июня 2008 года
kl1shny
16 / / 09.12.2007
Благадарю за помощь)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог