Предмет: Информатика,
автор: leravaleriyastepa
Составить программу в PASCAL.
1. В последовательности чисел подсчитать произведение чисел, кратных 3.
2. В последовательности чисел сравнить, что больше сумма положительных или произведение отрицательных.
3. В последовательности чисел определить предпоследнее отрицательное число. (При решении введите дополнительную переменную для хранения предпоследнего отрицательного числа).
Ответы
Автор ответа:
0
Первая задача (проверил, вроде работает, константа N - количество чисел в последовательности):
const N = 10;
var number, count, i : integer;
begin
count := 1;
for i := 1 to N do
begin
write('Input number: ');
readln(number);
if (number mod 3 = 0) and (number <> 0) then
count := count * number;
end;
if (count = 1) then
count := 0;
writeln('Result: ',count);
readln;
end.
Вторая задача (проверил, работает, но мог недопонять условие):
const N = 10;
var number, positive, negative, i : integer;
begin
negative := 1; positive := 0;
for i := 1 to N do
begin
write('Input number: ');
readln(number);
if (number > 0) then
positive := positive + number;
if (number < 0) then
negative := negative * number;
end;
writeln('Positive sum: ',positive);
writeln('Negative mul: ',negative);
if (positive > negative) then
writeln('Sum of positive numbers bigger than mul of negative numbers.')
else if (positive < negative) then
writeln('Sum of positive numbers lesser than mul of negative numbers.')
else
writeln('Sum of positive numbers and mul of negative numbers are equal.');
readln;
end.
Третья задача (проверил, работает):
const N = 10;
var number, lastneg, prevneg, i : integer;
begin
lastneg := 100; prevneg := 100;
for i := 1 to N do
begin
write('Input number: ');
readln(number);
if (number < 0) then
if (lastneg > 0) then
lastneg := number
else
begin
prevneg := lastneg;
lastneg := number;
end;
end;
if (prevneg > 0) then
writeln('This sequence of numbers contains less than two negative numbers.')
else
writeln('Penultimate negative number: ',prevneg);
readln;
end.
const N = 10;
var number, count, i : integer;
begin
count := 1;
for i := 1 to N do
begin
write('Input number: ');
readln(number);
if (number mod 3 = 0) and (number <> 0) then
count := count * number;
end;
if (count = 1) then
count := 0;
writeln('Result: ',count);
readln;
end.
Вторая задача (проверил, работает, но мог недопонять условие):
const N = 10;
var number, positive, negative, i : integer;
begin
negative := 1; positive := 0;
for i := 1 to N do
begin
write('Input number: ');
readln(number);
if (number > 0) then
positive := positive + number;
if (number < 0) then
negative := negative * number;
end;
writeln('Positive sum: ',positive);
writeln('Negative mul: ',negative);
if (positive > negative) then
writeln('Sum of positive numbers bigger than mul of negative numbers.')
else if (positive < negative) then
writeln('Sum of positive numbers lesser than mul of negative numbers.')
else
writeln('Sum of positive numbers and mul of negative numbers are equal.');
readln;
end.
Третья задача (проверил, работает):
const N = 10;
var number, lastneg, prevneg, i : integer;
begin
lastneg := 100; prevneg := 100;
for i := 1 to N do
begin
write('Input number: ');
readln(number);
if (number < 0) then
if (lastneg > 0) then
lastneg := number
else
begin
prevneg := lastneg;
lastneg := number;
end;
end;
if (prevneg > 0) then
writeln('This sequence of numbers contains less than two negative numbers.')
else
writeln('Penultimate negative number: ',prevneg);
readln;
end.
Автор ответа:
0
Все работает спасибо, а можно ли сделать так что бы я вот так ввела последовательность чисел ( -2 0 4 5 2 10 12 3 10) ну вообщем в строчку и что бы без константы? пожалуйста
Автор ответа:
0
Если число членов последовательности неизменно (то есть их всегда девять, как в вашем примере), то строчку объявления константы удалите и везде в тексте программы вместо N поставьте цифру 9
Автор ответа:
0
нет там может быть разная последовательность не только 9
Автор ответа:
0
тогда нужно или обязательно указывать количество чисел в последовательности (для этого я ввел константу), или выработать признак конца строки (например считывать числа, пока не будет введен 0) - однако тут тоже нужно определиться, какое число не может быть в последовательности (0 - может, значит он не подходит)
Автор ответа:
0
var
1 Задача
n, pr, i, a: integer;
begin
readln(n);
pr := 0;
for i := 1 to n do
begin
read(a);
if (a mod 3 = 0) then
if (pr > 0) then
pr := pr * a
else
pr := a;
end;
writeln(pr);
end.
2 Задача
var
n, i, pl, ot, a: integer;
begin
readln(n);
pl := 0;
ot := 0;
for i := 1 to n do
begin
read(a);
if (a >= 0) then
inc(pl, a)
else
begin
if (ot <> 0) then
ot := ot * a
else
ot := a;
end;
end;
if (pl > ot) then
writeln('Polozitelnii)
else
writeln('Otricat');
end.
var
n, i, a, posl, prd: integer;
begin
readln(n);
posl := 0;
prd := 0;
for i := 1 to n do
begin
read(a);
if (a < 0) then
begin
prd := posl;
posl := a;
end;
end;
if (posl = 0) then
writeln('Нет отрицательных')
else
writeln(prd);
end.
1 Задача
n, pr, i, a: integer;
begin
readln(n);
pr := 0;
for i := 1 to n do
begin
read(a);
if (a mod 3 = 0) then
if (pr > 0) then
pr := pr * a
else
pr := a;
end;
writeln(pr);
end.
2 Задача
var
n, i, pl, ot, a: integer;
begin
readln(n);
pl := 0;
ot := 0;
for i := 1 to n do
begin
read(a);
if (a >= 0) then
inc(pl, a)
else
begin
if (ot <> 0) then
ot := ot * a
else
ot := a;
end;
end;
if (pl > ot) then
writeln('Polozitelnii)
else
writeln('Otricat');
end.
var
n, i, a, posl, prd: integer;
begin
readln(n);
posl := 0;
prd := 0;
for i := 1 to n do
begin
read(a);
if (a < 0) then
begin
prd := posl;
posl := a;
end;
end;
if (posl = 0) then
writeln('Нет отрицательных')
else
writeln(prd);
end.
Автор ответа:
0
извините у меня во второй задаче пишет ошибка
Похожие вопросы
Предмет: Қазақ тiлi,
автор: samu21
Предмет: Физика,
автор: doktor28021954
Предмет: Русский язык,
автор: LARAFUK
Предмет: Математика,
автор: табаракова
Предмет: Биология,
автор: aramyn