• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задача на массивы в Паскале

  • Автор темы Автор темы Disel'
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Disel'

Ученик
Регистрация
17 Май 2011
Сообщения
2
Реакции
0
Баллы
0
Помогите плиз решить задачу в паскале. И если можно в одной программе.




В одномерном массиве, состоящем из n вещественных элементов, вычислить:

1) номер максимального по модулю элемента массива;

2) сумму элементов массива, расположенных после первого положительного элемента.

3) преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале [a,b] а потом - все остальные.
 
1)
Код:
const n=10;
var mas:array[1..n] of real;
max_el:real;
i:integer;
begin
for i:=1 to n do
readln(mas[i]);
max_el:=mas[1];
for i:=2 to n do
if abs(mas[i])>abs(max_el) then max_el:=mas[i];
writeln('Max element =', max_el);
readln
end.
2)
Код:
const n=10;
var mas:array[1..n] of real;
s:real;
b:boolean;
i:integer;
begin
for i:=1 to n do
readln(mas[i]);
max_el:=0;
b:=false;
for i:=1 to n do begin
if (mas[i])>0) and (not b) then b:=not b;
if b then s:=s+mas[i]; end;
writeln('Sum =', s);
readln
end.
Надоело писать :)
 
Ладно, вот Вам всё "в одном флаконе":
Код:
const
 n=10;
var
 mas,m1,m2:array[1..n] of real;
 max_el,s,a,b:real;
 i,j1,j2:integer;
 bu:boolean;

begin
 for i:=1 to n do
  begin
   write('mas[',i:2,']= ');
   readln(mas[i]);
  end;
 for i:=1 to n do
  write(mas[i]:8:2);
 writeln;
 max_el:=mas[1];
 for i:=2 to n do
  if abs(mas[i])>abs(max_el) then max_el:=mas[i];
 writeln('Max element =', max_el:8:2);

 s:=0;
 bu:=false;
 for i:=1 to n do
  begin
   if (mas[i]>0) and (not bu) then bu:=not bu;
   if bu then s:=s+mas[i];
  end;
 writeln('Sum = ', s:10:2);

 writeln('Borders (a<b):');
 write('a= ');
 readln(a);
 write('b= ');
 readln(b);
 j1:=0;
 j2:=0;
 for i:=1 to n do
  begin
   if (frac(mas[i])>=a) and (frac(mas[i])<=b) then
    begin
     j1:=j1+1;
     m1[j1]:=mas[i];
    end
   else
    begin
     j2:=j2+1;
     m2[j2]:=mas[i];
    end;
  end;
 for i:=1 to j1 do
  mas[i]:=m1[i];
 for i:=j1+1 to n do
  mas[i]:=m2[i-j1];
 for i:=1 to n do
  write(mas[i]:8:2);
 readln
end.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху