Цитата:
Сообщение от HD-boy
Здравствуйте. Помогите пожалуйста с задачками на паскале. Задали на экзамен(
1. Даны целые числа a и b. Составить алгоритм для определения знака разности a-b. Разность не вычислять. Разрешается сравнивать числа a и b с нулем, а между собой можно сравнивать только модули a и b.
|
Код:
IF (a>0) AND (b>0) THEN
BEGIN
IF ABS(a)>ABS(b) THEN WriteLn('Positive')
ELSE
IF ABS(a)<ABS(b) THEN WriteLn('Negative')
ELSE
WriteLn('Zero')
END ELSE
IF (a<0) AND (b<0) THEN
BEGIN
IF ABS(a)>ABS(b) THEN WriteLn('Negative')
ELSE
IF ABS(a)<ABS(b) THEN WriteLn('Positive')
ELSE
WriteLn('Zero')
END ELSE
IF (a>0) AND (b<0) THEN
WriteLn('Positive')
ELSE
IF (a<0) AND (b>0) THEN
WriteLn('Negative')
ELSE
IF (a=0) AND (b>0) THEN
WriteLn('Negative')
ELSE
IF (a=0) AND (b<0) THEN
WriteLn('Positive')
ELSE
IF (a<0) AND (b=0) THEN
WriteLn('Negative')
ELSE
IF (a>0) AND (b=0) THEN
WriteLn('Positive')
ELSE
IF (a=0) AND (b=0) THEN
WriteLn('Zero');
Цитата:
2. Составить алгоритм, в соответствии с которым с клавиатуры вводится последовательность чисел, признак окончаия ввода - нуль. Найти максимальное их введенных чисел. Определить, сколько раз оно встречалось в последовательности и превышает ли число его вхождение одну треть от общего количества введенных чисел.
|
Код:
VAR
A:ARRAY[1..100] of INTEGER;
i,Max,N,Q:INTEGER;
BEGIN
i:=0;
REPEAT
INC(i);
Write('A[',i,']= ');
ReadLn(A[i]);
UNTIL A[i]=0;
N:=i-1;
Max:=A[1];
FOR i:=2 TO N DO
IF A[i]>Max THEN Max:=A[i];
Q:=0;
FOR i:=1 TO N DO
IF A[i]=Max THEN INC(Q);
WriteLn('The maximum value ',Max,' has ',Q,' entries');
IF 1.0*Q/N>1.0/3 THEN
WriteLn('Exceeds') ELSE WriteLn('Does not exceed');
END.