Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Gluck
Статус: 7-й класс
Рейтинг: 860
∙ повысить рейтинг »
puporev
Статус: Профессионал
Рейтинг: 307
∙ повысить рейтинг »
mklokov
Статус: 8-й класс
Рейтинг: 153
∙ повысить рейтинг »

∙ Pascal / Delphi / Lazarus

Номер выпуска:1791
Дата выхода:16.11.2019, 09:45
Администратор рассылки:Зенченко Константин Николаевич (Старший модератор)
Подписчиков / экспертов:35 / 37
Вопросов / ответов:2 / 2

Консультация # 197031: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Вычислить количество четных элементов в области ниже строки k и выше главной диагонали....
Консультация # 197035: Здравствуйте! (PascalABC) У меня возникли сложности с написанием данной программы: Напечатать в обратном порядке элементы вещественного файла до элемента, номер которого равен значению серединного элемента другого целочисленного файла. Количество элементов в каждом файле неизвестно. У меня есть наработки ...

Консультация # 197031:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

Вычислить количество четных элементов в области ниже строки k и выше главной диагонали.

Дата отправки: 10.11.2019, 11:18
Вопрос задал: bodya (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует puporev (Профессионал):

Здравствуйте, bodya!
Для Паскаля или консоли Делфи.

Код (Pascal) :: выделить код
var a:array[1..15,1..15] of integer;
    n,m,k,i,j,q:integer;
begin
repeat
write('Введите размер матрицы от 3 до 15 n=');
readln(n);
until n in [3..15];
randomize;
writeln('Исходная матрица');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=10+random(90);
    write(a[i,j]:3);
   end;
  writeln;
 end;
repeat
write('Введите номер строки от 1 до ',n-2,' k=');
readln(k);
until k in [1..n-2];
q:=0;
for i:=k+1 to n-1 do
for j:=i+1 to n do
if a[i,j] mod 2=0 then inc(q);
write('Количество четных элементов ниже строки ',k,' и выше главной диагонали=',q)
end.

Консультировал: puporev (Профессионал)
Дата отправки: 10.11.2019, 13:02
Рейтинг ответа:

НЕ одобряю +2 одобряю!

Консультация # 197035:

Здравствуйте! (PascalABC) У меня возникли сложности с написанием данной программы: Напечатать в обратном порядке элементы вещественного файла до элемента, номер которого равен значению серединного элемента другого целочисленного файла. Количество элементов в каждом файле неизвестно. У меня есть наработки

Дата отправки: 10.11.2019, 18:23
Вопрос задал: IvanDorohov (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует puporev (Профессионал):

Здравствуйте, IvanDorohov!
Предлагаю такой вариант.

Код (Pascal) :: выделить код
var f:file of real;
    g:file of integer;
    x,y:real;
    a,b,c,n,i,j:integer;
begin
//создадим файлы с неизвестным количеством элементов
//вещественный
assign(f,'fileF');
rewrite(f);
writeln('Вводите в файл вещественные числа, окончание ввода 0');
repeat
readln(x);
if x<>0 then write(f,x);
until x=0;
//целый
assign(g,'fileG');
rewrite(g);
writeln('Вводите в файл целые числа, окончание ввода 0');
repeat
readln(a);
if a<>0 then write(g,a);
until a=0;
writeln('Содержание исходного файла вещественных чисел');
reset(f);
while not eof(f) do
 begin
  read(f,x);
  write(x,' ');
 end;
writeln;
writeln('Содержание исходного файла целых чисел');
reset(g);
while not eof(g) do
 begin
  read(g,a);
  write(a,' ');
 end;
writeln;
//сортировка файла целых чисел для поиска срединного элемента(медианы)
reset(g);
for i:=0 to filesize(g)-2 do
for j:=i+1 to filesize(g)-1 do
  begin
    seek(g,i);
    read(g,a);
    seek(g,j);
    read(g,b);
    if a>b then
      begin
       seek(g,i);
       write(g,b);
       seek(g,j);
       write(g,a);
      end;
   end;
writeln('Содержание отсортированого файла целых чисел');
reset(g);
while not eof(g) do
 begin
  read(g,a);
  write(a,' ');
 end;
writeln;
reset(g);
c:=filesize(g)div 2;
if odd(filesize(g))then //если размер файла нечетный
 begin
  seek(g,c); //медиана равна среднему элементу
  read(g,n);
 end
else //иначе
 begin
  seek(g,c);
  read(g,a);
  seek(g,c-1);
  read(g,b);
  n:=(a+b) div 2;//медиана равна полусумме двух центральных
 end;
writeln('Значение срединного элемента=',n);
close(g);
//печатаем в обратном порядке элеметы после n
reset(f);
if filesize(f)<n-1 then write('В файле вещественных чисел не хватает чисел для печати')
else
 begin
   writeln('Элементы файла вещественных чисел с конца до номера ',n);
   for i:=filesize(f)-1 downto n-1 do
    begin
     seek(f,i);
     read(f,x);
     write(x,' ');
    end;
  end;
close(f);
end.

Консультировал: puporev (Профессионал)
Дата отправки: 11.11.2019, 09:51

5
Спасибо большое, посмотрю вечером на пк
-----
Дата оценки: 11.11.2019, 12:33

Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное