Есть такое задание:
Запросить ввод k чисел. Вводить можно отрицательные, положительные
числа, ноль. Числа могут повторяться. Найти количество отрицательных
чисел среди вводимых. Вывести ответ с пояснением.
В программе используется оператор цикла for
, оператор проверки условия if
…
Вот код, до которого я дошел:
k = int(input('Введите любое число '))
a = 0
for k in range(k, 1):
if k < 0:
print(k)
Как это сделать правильно?
Jack_oS
12.5k7 золотых знаков18 серебряных знаков48 бронзовых знаков
задан 20 апр 2021 в 7:39
2
Вам для “найти количество отрицательных” нужен какой-то счетчик этих самых “отрицательных”, negatives
в данном случае (или а
, как у вас), который при выполнении условия нужно увеличивать на 1, а после цикла – вывести его на печать:
k = int(input('Количество чисел: '))
negatives = 0
for _ in range(k):
num = int(input(f'Введите {_+1}-е число: '))
if num < 0:
negatives += 1
print(f'Вы ввели {negatives} отрицательных чисел')
ответ дан 20 апр 2021 в 7:45
Jack_oSJack_oS
12.5k7 золотых знаков18 серебряных знаков48 бронзовых знаков
1
Функциональным стилем в одну строку чисто по приколу:
print('Отрицательных чисел:', sum(map(lambda x: int(input('Введите число: ')) < 0, range(int(input('Введите количество чисел: '))))))
ответ дан 20 апр 2021 в 8:29
CrazyElfCrazyElf
65.4k5 золотых знаков19 серебряных знаков50 бронзовых знаков
a = 0
for i in range(int(input('Введите любое число: '))):
a += int(input()) < 0
print(a)
ответ дан 20 апр 2021 в 7:46
KuchizuKuchizu
1,1986 серебряных знаков13 бронзовых знаков
1
Последовательности в Паскале. Рассматриваются алгоритмы для работы с последовательностями
Сайт labs-org.ru предоставляет лабораторные задания по теме для закрепления теоретического материала и получения практических навыков программирования на Паскале. Краткие теоретические сведения позволят получить необходимый для этого минимум знаний. Решенные наглядные примеры и лабораторные задания изложены по мере увеличения их сложности, что позволит с легкостью изучить материал с нуля. Желаем удачи!
Работа с последовательностями
Последовательность — это набор элементов, которые могут обрабатываться друг за другом
Последовательность:
foreach
Объявление последовательности
var s: sequence of integer;
Ввод последовательности
begin var q:=ReadSeqReal(10); var s:=0.0; foreach var x in q do s+=x; print(s) end.
Генерация последовательностей и вывод
Seq(1,3,5,7,9) .Print; // 1 3 5 7 9 print(Range(1,10)); // [1 2 3 4 5 6 7 8 9 10] print(Range(1,10,2)); // [1 3 5 7 9] print(Range('a','k')); // [a,b,c,d,e,f,g,h,i,j,k] sequence of char var q:=SeqRandomInteger(5,10,20); print(q); // [12,18,16,14,16] var q:=SeqRandomReal(3, 1.0, 5.0); print(q); // [4.98996168374548,2.22339218166815,2.81110574389394] print(SeqFill(10,55)); // 55 55 55 55 55 55 55 55 55 55 print(Partition(0.0, 6.0, 4)); // divide equally into 4 parts [0, 1.5, 3, 4.5, 6]
Задание seq01:
Создайте функцию для вычисления произведения 5 введенных элементов последовательности.
Примечание: заголовок функции:
function Product(q: sequence of real):real;
Пример вывода:
Пожалуйста, введите 5 вещественных чисел: 1.2 3.1 6.7 2.8 3.4 произведение: 237.27648
[файл: seq01.pas
]
Задание seq02:
Создайте последовательность целых чисел от -20
до 30
с шагом 3
(функция Range
).
Пример вывода:
[-20,-17,-14,-11,-8,-5,-2,1,4,7,10,13,16,19,22,25,28]
[файл: seq02.pas
]
Задание seq03:
Создайте N
случайных чисел последовательности от -50
до 100
(функция SeqRandom
).
Пример вывода:
введите n >>15 [-23,13,-27,2,46,-26,10,92,60,-9,75,28,85,7,18]
[файл: seq03.pas
]
Генерация бесконечных последовательностей
Cycle()
Repeat
Step
Iterate
Повторение блока последовательности:
Seq(1,2,10,5).Cycle().Take(15).Println; // 1 2 10 5 1 2 10 5 1 2 10 5 1 2 10
Take
используется для того, чтобы ограничить вывод до указанного количества элементов
Бесконечная последовательность чисел:
var q:=55.Repeat.Take(10).Println; // 55 55 55 55 55 55 55 55 55 55
Генерация бесконечной последовательности с шагом:
var q:=5.Step(2).Take(10).Println; // 5 7 9 11 13 15 17 19 21 23
Генерация бесконечной последовательности, созданной по правилу Лямбда-выражения:
var q:=10.Iterate(x->x-2).Take(10).Println; // 10 8 6 4 2 0 -2 -4 -6 -8
Генерация последовательностей с лямбда-выражением
SeqGen(count: integer; f: integer -> T): sequence of T;
SeqGen(count: integer; first: T; next: T -> T): sequence of T;
SeqGen(count: integer; first,second: T; next: (T,T) -> T): sequence of T;
SeqWhile(first: T; next: T -> T; pred: T -> boolean): sequence of T;
SeqWhile(first,second: T; next: (T,T) -> T; pred: T -> boolean): sequence of T;
begin var sq:=SeqGen(5,x->x+1); sq.println; // 1 2 3 4 5 end.
begin var sq:=SeqGen(5, 4, x->x+1); sq.println; // 4 5 6 7 8 end.
begin var sq:=SeqGen(5, 1,3, (x,y)->x+y); sq.println; // 1 3 4 7 11 end.
Condition is added:
begin var sq := seqWhile(2, x->x*2, x->x <= 1024); sq.println; // 2 4 8 16 32 64 128 256 512 1024 end.
begin var sq := seqWhile(1, 1, (x, y)-> x + y, x -> x <= 1000); sq.println; // 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 end.
Задание seq-04:
Используя лямбда-выражение создайте последовательность из N
четных чисел, начиная с числа 10 (использовать SeqGen
)
Примерный вывод:
Enter n >> 7 10 12 14 16 18 20 22
[Файл: seq04.pas
]
Методы последовательностей
В pascalabc.net возможно использование следующих методов последовательностей:
s.Sum s.Average s.Min s.Max s.Count s.Count(условие) s.All(условие) s.Any(условие) s.Print s.Println s.PrintLines
Пример:
Создать функцию, которая ищет в последовательности количество максимальных элементов.
Примерный вывод:
1 5 2 10 1 10 кол-во максимальных элементов 2
✍ Решение:
function findCountMax(a: sequence of integer):integer; begin var k:=a.Max(); foreach var i in a do if i=k then result+=1; end; begin var c:=Seq(1,5,2,10,1,10); c.Println(); println('кол-во максимальных элементов ',findCountMax(c)); end.
Пример:
Создать последовательность, используя метод Seq
. Посчитать количество вхождений заданного x
в последовательности. Использовать метод count ()
.
Примерный вывод:
-1 2 3 -5 2 -7 8 2 11 введите x: 2 2 встречается в последовательности 3 раза
✍ Алгоритм:
begin var c:=Seq(-1,2,3,-5,2,-7,8,2,11); c.Println(); var x:=readinteger('введитеx:'); var n:=c.count(c->c=x); println($'{x} встречается в последовательности {n} раза'); end.
Задание seqMeth01:
Создайте последовательность, используя метод Seq
. Посчитайте количество отрицательных элементов последовательности. Необходимо использовать метод count ()
.
Примерный вывод:
-1 2 3 -5 6 -7 8 9 11 количество отрицательных элементов 3
[Файл: seqMeth-01.pas
]
+++++++++++++++++++++++
Задание seqMeth02:
Создать функцию, которая выдает количество нечетных элементов последовательности. Следует использовать метод IsOdd
и лямбда-выражение.
Пример вывода:
1 5 2 10 1 10 кол-во нечетных элементов 3
[Файл: seqMeth-02.pas
]
Задание:
Используя метод Seq
определите последовательность. Посчитайте количество отрицательных элементов последовательности. Следует использовать метод count(условие)
.
Примерный вывод:
-1 2 3 -5 6 -7 8 9 11 количество отрицательных элементов 3
[файл: seq-05.pas
]
{0.2 points}
Task 7:
To do: Create the following sequence: 1 3 9 27 81 243 729 2187 6561 19683
(SeqGen
should be used)
The resulting example:
3 9 27 81 243 729 2187 6561 19683
[Program name: 16task-07.pas
]
{0.3 points}
Task 8:
To do: Create a sequence of 15 numbers: 2 1 0.5 0.25 0.125 0.0625 0.03125 0.015625 ...
(specifying the first element and the function to get the next one) (SeqGen
should be used)
The resulting example:
2 1 0.5 0.25 0.125 0.0625 0.03125 0.015625 0.0078125 0.00390625 0.001953125 0.0009765625 0.00048828125 0.000244140625 0.0001220703125
[Program name: 16task-08.pas
]
{0.2 points}
Task 9:
To do: Create the following sequence: 2017 2012 2007 2002 1997 1992 1987 1982 1977 1972
(SeqGen
should be used)
The resulting example:
2017 2012 2007 2002 1997 1992 1987 1982 1977 1972
[Program name: 16task-09.pas
]
Lab:
To do: Create a sequence of N Fibonacci numbers
The resulting example:
Enter n >>8 1 1 2 3 5 8 13 21
✍ Algorithm:
begin var n:=readInteger('Enter n'); var sq:=SeqGen(n,1,1,(x,y)->x+y); sq.println(); end.
Lab:
To do: Create a sequence of N
numbers generated by the iterative process: а1=2
, аk=(аk-1+1)*аk-1
, k
= 2,3,… (SeqGen
should be used)
The resulting example:
Enter n 7 2 6 42 1806 3263442 -1461943274 -757910022
✍ Algorithm:
begin var n:=readInteger('Enter n'); var sq:=SeqGen(n,2,x->(x+1)*x); sq.println(); end.
{0.4 points}
Task 10:
To do: Create a sequence of N
numbers generated by the iterative process: a1 = 5
, ak = ak-1 / 2-1
, k
= 2,3, … (SeqGen
should be used)
The resulting example:
Enter n >> 9 5 1.5 -0.25 -1.125 -1.5625 -1.78125 -1.890625 -1.9453125 -1.97265625
[Program name: 16task-10.pas
]
{0.4 points}
Task 11:
To do: Create a sequence of N
numbers generated by the iterative process: а1=1
, а2=2
, аk=аk-1+2аk-2
, k
=3,… (SeqGen
should be used)
The resulting example:
Enter n >>7 1 2 4 8 16 32 64
[Program name: 16task-11.pas
]
{0.4 points}
Task 12:
To do: Create a sequence of N
numbers generated by the iterative process: а1=1
, а2=2
, аk=(аk-1+аk-2)/2
, k
=3,… (SeqGen
should be used)
The resulting example:
Enter n >> 7 1 2 1.5 1.75 1.625 1.6875 1.65625
[Program name: 16task-12.pas
]
Условие
3. СОСТАВИТЬ АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ НА ЯЗЫКЕ ПАСКАЛЬ И НАРИСОВАТЬ ЕГО БЛОК-СХЕМУ
Даны последовательность чисел и число n – количество элементов последовательности. Найти количество отрицательных элементов последовательности.
информатика ВУЗ
759
Все решения
const N = 30;
var
a: array[1..N] of integer;
i, neg: byte;
begin
randomize;
neg := 0;
for i:=1 to N do begin
a[i] := random(100) – 50;
write(a[i]:4);
if a[i] < 0 then
neg := neg + 1
end;
writeln;
writeln(‘Отрицательных: ‘, neg);
end.
Написать комментарий
Дана последовательность n вещественных чисел определить количество отрицательных чисел в этой последовательности.
Вы перешли к вопросу Дана последовательность n вещественных чисел определить количество отрицательных чисел в этой последовательности?. Он относится к категории Информатика,
для 10 – 11 классов. Здесь размещен ответ по заданным параметрам. Если этот
вариант ответа не полностью вас удовлетворяет, то с помощью автоматического
умного поиска можно найти другие вопросы по этой же теме, в категории
Информатика. В случае если ответы на похожие вопросы не раскрывают в полном
объеме необходимую информацию, то воспользуйтесь кнопкой в верхней части
сайта и сформулируйте свой вопрос иначе. Также на этой странице вы сможете
ознакомиться с вариантами ответов пользователей.