Как найти количество отрицательных элементов последовательности

Есть такое задание:

Запросить ввод k чисел. Вводить можно отрицательные, положительные
числа, ноль. Числа могут повторяться. Найти количество отрицательных
чисел среди вводимых. Вывести ответ с пояснением.

В программе используется оператор цикла for, оператор проверки условия if
Вот код, до которого я дошел:

k = int(input('Введите любое число '))
a = 0
for k in range(k, 1):
 if k < 0:
   print(k)

Как это сделать правильно?

Jack_oS's user avatar

Jack_oS

12.5k7 золотых знаков18 серебряных знаков48 бронзовых знаков

задан 20 апр 2021 в 7:39

WaP1's user avatar

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_oS's user avatar

Jack_oSJack_oS

12.5k7 золотых знаков18 серебряных знаков48 бронзовых знаков

1

Функциональным стилем в одну строку чисто по приколу:

print('Отрицательных чисел:', sum(map(lambda x: int(input('Введите число: ')) < 0, range(int(input('Введите количество чисел: '))))))

ответ дан 20 апр 2021 в 8:29

CrazyElf's user avatar

CrazyElfCrazyElf

65.4k5 золотых знаков19 серебряных знаков50 бронзовых знаков

a = 0
for i in range(int(input('Введите любое число: '))):
    a += int(input()) < 0
print(a)

ответ дан 20 апр 2021 в 7:46

Kuchizu's user avatar

KuchizuKuchizu

1,1986 серебряных знаков13 бронзовых знаков

1

Последовательности в Паскале. Рассматриваются алгоритмы для работы с последовательностями

Сайт labs-org.ru предоставляет лабораторные задания по теме для закрепления теоретического материала и получения практических навыков программирования на Паскале. Краткие теоретические сведения позволят получить необходимый для этого минимум знаний. Решенные наглядные примеры и лабораторные задания изложены по мере увеличения их сложности, что позволит с легкостью изучить материал с нуля. Желаем удачи!

Работа с последовательностями

  

Последовательность — это набор элементов, которые могут обрабатываться друг за другом

Последовательность:

  • Не хранит все свои элементы в памяти
  • В текущий момент в памяти есть только один элемент
  • Последовательность — это алгоритм для получения значений по одному (последовательно по очереди)
  • Основной цикл для работы — foreach
  • У последовательности нельзя изменить какой-либо отдельный элемент
  • Объявление последовательности

    var s: sequence of integer;

    Ввод последовательности

  • ReadSeqInteger
  • ReadSeqReal
  • 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()
    • Повторение блока последовательности:

      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 используется для того, чтобы ограничить вывод до указанного количества элементов

    • Repeat
    • Бесконечная последовательность чисел:

      var q:=55.Repeat.Take(10).Println; // 55 55 55 55 55 55 55 55 55 55
    • Step
    • Генерация бесконечной последовательности с шагом:

      var q:=5.Step(2).Take(10).Println; // 5 7 9 11 13 15 17 19 21 23
    • Iterate
    • Генерация бесконечной последовательности, созданной по правилу Лямбда-выражения:

      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;
    • begin
      var sq:=SeqGen(5,x->x+1);
      sq.println; // 1 2 3 4 5
      end.
    • SeqGen(count: integer; first: T; next: T -> T): sequence of T;
    • begin
      var sq:=SeqGen(5, 4, x->x+1);
      sq.println; // 4 5 6 7 8
      end.
    • SeqGen(count: integer; first,second: T; next: (T,T) -> T): sequence of T;
    • begin
      var sq:=SeqGen(5, 1,3, (x,y)->x+y);
      sq.println; // 1 3 4 7 11
      end.
    • SeqWhile(first: T; next: T -> T; pred: T -> boolean): sequence of T;
    • 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.
    • SeqWhile(first,second: T; next: (T,T) -> T; pred: T -> boolean): sequence of T;
    • 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, аkk-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-1k-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 классов. Здесь размещен ответ по заданным параметрам. Если этот
    вариант ответа не полностью вас удовлетворяет, то с помощью автоматического
    умного поиска можно найти другие вопросы по этой же теме, в категории
    Информатика. В случае если ответы на похожие вопросы не раскрывают в полном
    объеме необходимую информацию, то воспользуйтесь кнопкой в верхней части
    сайта и сформулируйте свой вопрос иначе. Также на этой странице вы сможете
    ознакомиться с вариантами ответов пользователей.

    Добавить комментарий