ПаскальАВС В массиве от 1..1000, числа указываются вручную нужно: 1)перевернуть массив 2)...

0 голосов
153 просмотров

ПаскальАВС В массиве от 1..1000, числа указываются вручную нужно: 1)перевернуть массив 2) найти в нем числа, у которых первая цифра больше последней и вывести на экран П.с. Желательно с комментарием чтобы мне было понятно)


Информатика (20 баллов) | 153 просмотров
Дано ответов: 2
0 голосов

Program n_1;

var a:array [1..1000] of integer; i, buf:integer;

begin

  for i:=1 to 1000 do read(a[i]); //Вводим массив

   for i:=1 to 500 do begin //Переворачиваем массив

       buf:=a[i];

       a[i]:=a[1001-i];

       a[1001-i]:=buf;

   end;

   for i:=1 to 1000 do write(a[i], ' '); //Выводим перевернутый массив

   writeln(); //Переносим строку

   for i:=1 to 1000 do begin //Выводим нужные нам числа

       buf:=a[i];

       while buf>9 do buf:=buf div 10; //buf равно старшему разряду

       if buf>a[i] mod 10 then write(a[i], ' '); //Если старший разряд больше младшего, то выводим

   end;

end.

_______________________________________

Часть, выделенная полужирным, эквивалентна

for i:=1000 downto 1 do read(a[i]); //Заполняем массив с конца и тем самым он сразу становится перевернутым.

(3.5k баллов)
0

Да, все так

0

Я скопировала и вставила как у вас

0

хмм... у меня все работает. Сейчас перепроверю на другом компьютере.

0

я скопировал и вставил, тоже работает

0

Пишет причем на сл. строке после begin Ошибка: ожидался индентификатор, но «» обнаружено

0

Проверил на windows7 PascalABC, ошибок нет. Отправьте строку с ошибкой.

0

Var a:array [1..1000] of integer; i, buf: integer;Begin (Ставит мне тут ошибку) For i:=1 to 1000 do read(a[i])

0

Можете пожалуйста написать то, с помощью чего вы проверяете работоспособность программы. Я даже вручную не смог воспроизвести данную ошибку.

0

https://www.jdoodle.com/execute-pascal-onlineЭто один из онлайн-компиляторов. Можете проверить здесь.

0

Но ошибка

0 голосов

программа с комментариями, если все равно не понятно спрашивай

для проверки программы рекомендую n поставить где нибудь на 10 потому что вводить 1000 чисел с клавиатуры то еще удавольствие :))

числа можно вводить по одному или одной строкой через пробел

const

   n = 1000; // длина массива

var

   d : array of integer := new integer[n]; // объявляем и создаем массив

   a, b : integer;

   

begin

   // вводим числа в массив //

   writeln('введите данные в массив:');

   for var i := 0 to n-1 do begin

       read(a);

       d[i] := a;

   end;

   writeln('введен массив d=', d); // выводим массив на экран

   // переворачиваем данные в массиве                                //

   // для этого меняем первое с последним, второе с предпоследним    //

   // и так до середины                                              //

   for var i := 0 to (n div 2)-1 do begin

       a := d[i];

       d[i] := d[n-i-1];

       d[n-i-1] := a;

   end;

   writeln('переворачиваем массив d=', d); // выводим перевернутый массив

   write('числа у которых первая цифра больше последней:');

   // ищем и ввыводим числа с заданным условием //

   for var i := 0 to n-1 do begin

       // находим чему равна 1 цифра //

       b := d[i];

       repeat

           b := b div 10;

       until b < 10;

       if b > d[i] mod 10 then write(' ', d[i]); // сравниваем первую и последнюю цифры и ели первая больше то выводим число

   end;

end.

(1.2k баллов)
0

К создателю программы)

0

Спасибо вам всем большое))

0

Попробую

0

где??? в моей программе вы можете ввести ровно нужное количество чисел. Если ввести в строку больше чем нужно то из буфера прочитается только нужное количество

0

Там просто ввод данных и все

0

не те комментарии

0

Это к кому сейчас?

0

Еще докапалась)

0

Пиши хоть сколько чисел

0

пожалйста