![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
timan |
![]()
Сообщение
#1
|
Гость ![]() |
В одномерном массиве, состоящем из n вещественных элементов вычислить:
1. Кол-во элементов меньших С. 2. Сумму целых частей элементов массива, расположенных после последнего отрицательного элемента. Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающие от максимального не более чем на 20 %, а потом– все остальные. |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
1. Кол-во элементов меньших С.
Код uses crt; const n=5; var x:array[1..n] of extended; i,k:integer; c:extended; Begin clrscr; write('c='); readln(c); writeln; k:=0; for i:=1 to n do begin readln(x[i]); if x[i]<c then inc(k); end; writeln; writeln('k=',k); readln; end. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
murphy |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающие от максимального не более чем на 20 %, а потом– все остальные. Что то такое Код program jjh; const n=5; B: array[1..n] of real = (2.5, -2.0, 1.5, 2.4, -15.45); var A: array[1..n] of real; max, bu: real; i, j, k: byte; function findmax(X:array of real): real; var i,n: byte; m: real; begin m:=X[1]; for i:=0 to high(X)-1 do if X[i]>m then m:=X[i]; findmax:=m; end; function otl (m, r: real): boolean; begin if (abs(m-r)/m)*100>20 then otl:=false else otl:=true; end; begin max:=findmax(B); writeln(max:5:2); k:=0; for i:=1 to n do if not(otl(max ,B[i])) then begin inc(k); A[k]:=B[i]; {bu:=B[i]; for j :=i downto k do B[j]:=b[j-1]; b[k]:=bu;} {B[j]:=B[j]+B[k]; B[k]:=B[j]-B[k]; B[j]:=B[j]-B[k]; inc(k);} end; for i:=1 to n do if otl(max ,B[i]) then begin inc(k); A[k]:=B[i]; end; for i:=1 to n do write(A[i]:7:2); readln end. Не тестировал и не компелировал... -------------------- collect the infotrons and find Exit
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
murphy
Цитата Не тестировал и не компелировал... Вот и напрасно - запутался в значениях... Вот твоя программа, немного подправленная: Код const n=5; B: array[1..n] of real = (2.5, -2.0, 2.4, 2.4, -15.45); var A: array[1..n] of real; max: real; i, k: byte; bLoop: boolean; function findmax(X:array of real): real; var i,n: byte; m: real; begin m:=X[0]; for i:=1 to Pred(high(X)) do if X[i]>m then m:=X[i]; findmax:=m; end; function otl(m, r: real): boolean; begin otl := ((abs(m-r)/m)*100 <= 20) end; begin max:=findmax(B); writeln(max:5:2); k:=0; for bLoop := true downto false do for i:=1 to n do if otl(max ,B[i]) = bLoop then begin inc(k); A[k]:=B[i] end; for i:=1 to n do write(A[i]:7:2); readln end. ![]() |
murphy |
![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Репутация: ![]() ![]() ![]() |
:p2:
-------------------- collect the infotrons and find Exit
|
Guest |
![]()
Сообщение
#6
|
Гость ![]() |
А как вычеслить Пункт 2
Сумму целых частей элементов массива, расположенных после последнего отрицательного элемента. |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Проходи по массиву из конца в начало, пока не встретится отрицательный элемент. Допустим это элемент с индексом K... Потом иди опять к концу от элемента K+1 до конца массива, суммируя целые части элементов (их находишь через функцию Int)...
|
Guest |
![]()
Сообщение
#8
|
Гость ![]() |
А можно на примере
![]() |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
const
n = 5;
a: array[1 .. n] of real =
(2.5, 2.0, -2.4, -2.4, 15.45);
var
i, s: integer;
begin
i := succ(n);
while (i > 0) and (a[pred(i)] > 0) do dec(i);
s := 0;
while i <= n do begin
s := s + trunc(a[i]); { Trunc будет лучше чем Int }
inc(i)
end;
writeln('s = ', s)
end.
Вообще-то вот так... |
![]() ![]() |
![]() |
Текстовая версия | 18.04.2025 12:52 |