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

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

Запросить ввод 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

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given an array arr of integers of the size of N, our task is to find the count of positive numbers and negative numbers in the array.

    Examples:

    Input: arr[] = [-9,7,-5,3,2]
    Output: Positive elements = 3, Negative elements = 2

    Input: arr[] = [5,4,-2,-1,-7]
    Output: Positive elements = 2, Negative elements = 3

    Approach:

    • Traverse the elements in the array one by one.
    • Find the element positive or not positive by using the condition element >=0. If the condition is satisfied increase the p_count.
    • Remove the p_count from the total number of elements to get count negative numbers in the array.
    • Print the positive and negative numbers count.

    Example:

    C++

    #include<bits/stdc++.h>

    using namespace std;

    int CountPositive(int arr[],int n){

      int p_count = 0;

      for(int i =0;i<n;i++){

        if (arr[i]>=0){

          p_count++;

        }

      }

      return p_count;

    }

    void printArray(int arr[],int n){

      cout<<"Array: ";

      for(int i = 0; i<n; i++){

        cout<<arr[i]<<" ";

      }

      cout<<"n";

    }

    int main()

    {

     int arr[] = {-9,7,-5,3,2 };

     int n;

     n = sizeof(arr) / sizeof(arr[0]);

     printArray(arr, n);

     int p_count = CountPositive(arr,n);

     cout<<"Count of Positive elements = "<<p_count<<", ";

     cout<<"Count of Negative elements = "<<n - p_count;

     return 0;

    }

    Output

    Array: -9 7 -5 3 2 
    Count of Positive elements = 3, Count of Negative elements = 2

    Time complexity: O(n) 
    Auxiliary space: O(1)

    Method: Using Recursion 

    C++

    #include<bits/stdc++.h>

    using namespace std;

    int CountPositive(int begin,int arr[],int n,int pos_count){

      if (begin==n) 

      return pos_count;

      if (arr[begin]>=0) 

        pos_count++;

      return CountPositive(begin+1,arr,n,pos_count); 

    }

    void printArray(int arr[],int n){

      cout<<"Array: ";

      for(int i = 0; i<n; i++){

        cout<<arr[i]<<" ";

      }

      cout<<"n";

    }

    int main()

    {

     int arr[] = {-9,7,-5,3,2 };

     int n;

     n = sizeof(arr) / sizeof(arr[0]);

     printArray(arr, n);

     int p_count = CountPositive(0,arr,n,0); 

     cout<<"Count of Positive elements = "<<p_count<<", ";

     cout<<"Count of Negative elements = "<<n - p_count;

     return 0;

    }

    Output

    Array: -9 7 -5 3 2 
    Count of Positive elements = 3, Count of Negative elements = 2

    Time complexity: O(n)
    Auxiliary space: O(n)

    Another approach using C++ Standard Template Library (STL) and ‘count_if()’function:

    C++

    #include <iostream>

    #include <algorithm>

    using namespace std;

    int main() {

      int arr[] = {-9,7,-5,3,2};

      int n = sizeof(arr) / sizeof(arr[0]);

      cout<<"Array: ";

      for(int i = 0; i<n; i++){

        cout<<arr[i]<<" ";

      }

      cout<<"n";

      int pos_count = count_if(arr, arr + n, [](int x) { return x >= 0; });

      int neg_count = count_if(arr, arr + n, [](int x) { return x < 0; });

      cout << "Count of Positive elements ="<< pos_count<<", ";

      cout << "Count of Negative elements = " << neg_count;

      return 0;

    }

    Output

    Array: -9 7 -5 3 2 
    Count of Positive elements =3, Count of Negative elements = 2

    Time complexity: O(n)
    Auxiliary space: O(n)

    Another Efficient Approach ( Using binary search ) :

    • If the array is not sorted , then first sort the array.
    • Using Binary Search to get the last index of negative number in the sorted array.
    • Initialize index as last index of negative number to -1 in  array because ,if there is no negative number in the array , then it will return -1 as last index of negative number.
    • Count of negative numbers will be ‘ index +1 ‘ because we are using 0-based indexing
    • Count of positive numbers will be ‘count of  total numbers – count of negative numbers  in the array .
    • Print final answer .

    Below is the implementation of the above approach:

    C++

    #include <bits/stdc++.h>

    using namespace std;

    int BinarySearch(int *arr, int n)

    {  

        int l = 0, r = n-1, index = -1;

        while(l <= r)

        {  

            int mid = (l + r) / 2;

            if(arr[mid]<0)

            {

                l = mid + 1;

                index=mid;

            }

            else

              

                  r = mid - 1;

              }

        }

        return index;

    }

    void printArray(int *arr,int n)

    {

      cout<<"Array: ";

      for(int i = 0; i<n; i++)

      {

        cout<<arr[i]<<" ";

      }

      cout<<endl;

    }

    int main()

    {  

        int arr[] = {-9,7,-5,3,2 };

        int n = sizeof(arr) / sizeof(arr[0]);

        printArray(arr, n);

        sort(arr,arr+n);

        int neg_count = BinarySearch(arr, n)+1;

        int pos_count = n - neg_count;

        cout << "Count of Positive elements = "<< pos_count<<", ";

        cout << "Count of Negative elements = " << neg_count<<endl;

        return 0;

    }

    Output

    Array: -9 7 -5 3 2 
    Count of Positive elements = 3, Count of Negative elements = 2

    Time complexity: O(n*log2n)
    Auxiliary space: O(1)

    Last Updated :
    27 Feb, 2023

    Like Article

    Save Article

    0 / 0 / 0

    Регистрация: 02.10.2010

    Сообщений: 25

    1

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

    04.10.2010, 23:14. Показов 30706. Ответов 31


    Студворк — интернет-сервис помощи студентам

    ,состоящем из n элементов ,вычислить количество отрицательных элементов массива!
    ForEveR, надежда на теебя!!))



    0



    ForEveR

    В астрале

    Эксперт С++

    8048 / 4805 / 655

    Регистрация: 24.06.2010

    Сообщений: 10,562

    04.10.2010, 23:16

    2

    cook, Да пожалста…

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    #include <iostream>
    #include <functional>
    #include <algorithm>
     
    int main()
    {
        int*Arr;
        int N;
        std::cout<<"Enter N: ";
        std::cin>>N;
        Arr=new int[N];
        for(int i=0; i<N; ++i)
            std::cin>>Arr[i];
        std::cout<<std::count_if(Arr, Arr+N, std::bind2nd(std::less<int>(), 0))<<'n';
        return 0;
    }



    0



    -comrade-

    364 / 365 / 167

    Регистрация: 11.06.2010

    Сообщений: 703

    04.10.2010, 23:17

    3

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    #include <iostream>
    #include <conio.h>
    #include <math.h>
     
    using namespace std;
     
    void main()
    {
        int i,n,k=0;
        cout<<"  N=";
        cin>>n;
        int *a=new int [n];
        cout<<"n  Enter elements: ";
         for(i=0;i<n;i++) cin>>a[i];
         for(i=0;i<n;i++) 
          if(a[i]<0) k++;
        cout<<"nn  k="<<k;
        delete []a;    
        getch();
    }



    0



    Эксперт С++

    2346 / 1719 / 148

    Регистрация: 06.03.2009

    Сообщений: 3,675

    04.10.2010, 23:17

    4



    0



    MILAN

    899 / 793 / 186

    Регистрация: 21.02.2009

    Сообщений: 1,722

    04.10.2010, 23:19

    5

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    #include <iostream>
    #include <ctime>
    using std::cout;
    using std::cin;
    using std::endl;
     
    int main()
    {
        setlocale( LC_ALL,"Russian" );
        int i,count=0;
        int mas[6]={-1,3,-4,-5,6,0};
        for(i=0; i<6; i++)
         {
             if(mas[i]<0)
             count++;
         }
         cout<<endl;
         cout<<"Количество елементов, менше 0 - "<<count;
     return 0;
    }



    0



    0 / 0 / 0

    Регистрация: 02.10.2010

    Сообщений: 25

    05.10.2010, 00:53

     [ТС]

    6

    MILAN, если не трудно можешь написать эту же программку только с запросом значений массива.!!



    0



    В астрале

    Эксперт С++

    8048 / 4805 / 655

    Регистрация: 24.06.2010

    Сообщений: 10,562

    05.10.2010, 00:55

    7

    cook, Функторы и алгоритмы пугают?)



    0



    0 / 0 / 0

    Регистрация: 02.10.2010

    Сообщений: 25

    05.10.2010, 00:57

     [ТС]

    8

    кто то мне подскажет решение этой проблемы:

    ╩юышўхёЄтю хыхьхэЄют, ьхэ°х 0 – 3
    Process returned 0 (0x0) execution time : 0.046 s
    Press any key to continue.
    я иммею ввиду язык(((



    0



    MILAN

    899 / 793 / 186

    Регистрация: 21.02.2009

    Сообщений: 1,722

    05.10.2010, 01:01

    9

    Так нормально?

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    #include <iostream>
    #include <ctime>
    using std::cout;
    using std::cin;
    using std::endl;
     
    int main()
    {
        setlocale( LC_ALL,"Russian" );
        int i,size=0,count=0;
        int* mas;
        cout<<"Введите количество елементов масива: ";
        cin>>size;
        cout<<endl;
        mas = new int[size];
        for(i=0;i<size;i++)
        {
            cout<<"mas["<<i+1<<"]=";
            cin>>mas[i];
            cout<<endl;
        }
        for(i=0; i<size; i++)
         {
             if(mas[i]<0)
             count++;
         }
         cout<<endl;
         cout<<"Количество елементов, менше 0 - "<<count;
         delete [] mas;
     return 0;
    }



    0



    ForEveR

    В астрале

    Эксперт С++

    8048 / 4805 / 655

    Регистрация: 24.06.2010

    Сообщений: 10,562

    05.10.2010, 01:02

    10

    А раз уж С++ тогда в начале main лучше будет я полагаю.

    C++
    1
    
    std::locale::global(std::locale(""));



    0



    MILAN

    899 / 793 / 186

    Регистрация: 21.02.2009

    Сообщений: 1,722

    05.10.2010, 01:04

    11

    Какая IDE?

    Добавлено через 1 минуту
    ForEveR, а так

    C++
    1
    
    setlocale( LC_ALL,"Russian" );



    0



    В астрале

    Эксперт С++

    8048 / 4805 / 655

    Регистрация: 24.06.2010

    Сообщений: 10,562

    05.10.2010, 01:05

    12

    MILAN, Эм. Да можно и так. Но это все же Сишное) В С++ есть стандартный класс locale как видите.



    0



    0 / 0 / 0

    Регистрация: 02.10.2010

    Сообщений: 25

    05.10.2010, 01:06

     [ТС]

    13

    ForEveR, вопрос касающийся тебя!!!Программка без ошибок ,но ничего не считает!!!
    Посмотри:
    Enter N: -2 4 6 7

    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application’s support team for more information.

    Process returned 3 (0x3) execution time : 32.297 s
    Press any key to continue.



    0



    ForEveR

    В астрале

    Эксперт С++

    8048 / 4805 / 655

    Регистрация: 24.06.2010

    Сообщений: 10,562

    05.10.2010, 01:06

    14

    cook, Э. Не может быть. Секунду.
    Нет блин. Я конечно все понимаю… Но размер массива -2 это уже интересно. Что он тогда считать должен?

    Код

    Enter n: 5//Размер массива
    0
    -1
    -2
    -3
    4
    3

    Пишет 3, что верно.

    Но память я там забыл очистить…

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    #include <iostream>
    #include <functional>
    #include <algorithm>
     
    int main()
    {
        int*Arr;
        int N;
        std::cout<<"Enter N: ";
        std::cin>>N;
        Arr=new int[N];
        for(int i=0; i<N; ++i)
            std::cin>>Arr[i];
        std::cout<<std::count_if(Arr, Arr+N, std::bind2nd(std::less<int>(), 0))<<'n';
        delete[] Arr;
        return 0;
    }

    Корректнее



    0



    MILAN

    899 / 793 / 186

    Регистрация: 21.02.2009

    Сообщений: 1,722

    05.10.2010, 01:10

    15

    Цитата
    Сообщение от ForEveR
    Посмотреть сообщение

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    #include <iostream>
    #include <functional>
    #include <algorithm>
     
    int main()
    {
        int*Arr;
        int N;
        std::cout<<"Enter N: ";
        std::cin>>N;
        Arr=new int[N];
        for(int i=0; i<N; ++i)
            std::cin>>Arr[i];
        std::cout<<std::count_if(Arr, Arr+N, std::bind2nd(std::less<int>(), 0))<<'n';
        delete[] Arr;
        return 0;
    }

    А почему память не очищаете?



    0



    В астрале

    Эксперт С++

    8048 / 4805 / 655

    Регистрация: 24.06.2010

    Сообщений: 10,562

    05.10.2010, 01:10

    16

    MILAN, Смотрим выше)



    0



    899 / 793 / 186

    Регистрация: 21.02.2009

    Сообщений: 1,722

    05.10.2010, 01:11

    17

    Не успел!!!!!, пока постил, вы все исправили!!!!



    0



    0 / 0 / 0

    Регистрация: 02.10.2010

    Сообщений: 25

    05.10.2010, 01:20

     [ТС]

    18

    Да так отлично!Большое спс!

    Добавлено через 4 минуты
    Почему язык в консоле иероглифами пишется!!!??????



    0



    ForEveR

    В астрале

    Эксперт С++

    8048 / 4805 / 655

    Регистрация: 24.06.2010

    Сообщений: 10,562

    05.10.2010, 01:21

    19

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    #include <iostream>
    #include <functional>
    #include <algorithm>
     
    int main()
    {
        std::locale::global(std::locale(""));
        int*Arr;
        int N;
        std::cout<<"Введите N: ";
        std::cin>>N;
        Arr=new int[N];
        for(int i=0; i<N; ++i)
            std::cin>>Arr[i];
        std::cout<<std::count_if(Arr, Arr+N, std::bind2nd(std::less<int>(), 0))<<'n';
        delete[] Arr;
        return 0;
    }

    А так?



    0



    0 / 0 / 0

    Регистрация: 02.10.2010

    Сообщений: 25

    05.10.2010, 01:29

     [ТС]

    20

    неа…все равно не хочит нормальные буквы писать(((



    0



    Количество положительных, отрицательных и равных нулю элементов массива

    Просмотров 10.8к. Обновлено 15 октября 2021

    Сгенерировать 20 случайных целых чисел в диапазоне от -5 до 4, записать их в ячейки массива. Посчитать сколько среди них положительных, отрицательных и нулевых значений. Вывести на экран элементы массива и посчитанные количества.

    1. Присвоить счетчикам положительных, отрицательных и нулевых чисел значения 0.
    2. В цикле
      1. генерировать случайное число и записывать его в соответствующую ячейку массива,
      2. выводить на экран,
      3. сравнивать с нулем и в зависимости от результата увеличить на 1 либо счетчик пложительных чисел, либо отрицательных, либо нулевых.
    3. Вывести на экран значения счетчиков.

    Pascal

    количество положительных элементов массива паскаль


    const N = 20;
    var
    a: array[1..N] of integer;
    i, pos, neg, zero: byte;
    begin
    randomize;
    pos := 0;
    neg := 0;
    zero := 0;
    for i:=1 to N do begin
    a[i] := random(10)-5;
    write(a[i]:3);
    if a[i] < 0 then
    neg := neg + 1
    else
    if a[i] > 0 then
    pos := pos + 1
    else
    zero := zero + 1;
    end;
    writeln;
    writeln('Положительных: ', pos);
    writeln('Отрицательных: ', neg);
    writeln('Равных нулю: ', zero);
    end.



    0 0 -4 -2 4 0 2 -4 3 0 0 -4 2 2 0 -3 -3 3 -3 -4
    Положительных: 6
    Отрицательных: 8
    Равных нулю: 6

    Язык Си


    #include
    #define N 20

    main() {
    srand(time(NULL));
    int a[N],i,neg,pos,zero;
    neg = 0;
    pos = 0;
    zero = 0;
    for (i=0; i< N; i++) {
    a[i] = rand() % 10 - 5;
    printf("%3d", a[i]);
    if (a[i] > 0) pos += 1;
    else if (a[i] < 0) neg += 1;
    else zero += 1;
    }
    printf("nПоложительных: %dn", pos);
    printf("Отрицательных: %dn", neg);
    printf("Равных нулю: %dn", zero);
    }



    -5 -4 0 -3 1 3 -2 -4 4 -4 2 -5 -1 -4 -3 -1 -4 -5 1 3
    Положительных: 6
    Отрицательных: 13
    Равных нулю: 1

    Python

    количество положительных элементов массива python (питон)


    from random import random
    neg = pos = zero = 0
    a = []
    for i in range(20):
    n = int(random() * 10) - 5
    a.append(n)
    print(n, end=' ')
    if n > 0:
    pos += 1
    elif n < 0:
    neg += 1
    else:
    zero += 1

    print("nПоложительных: ", pos)
    print("Отрицательных: ", neg)
    print("Равных нулю: ", zero)



    -4 3 -4 3 -2 3 4 -2 -4 3 -4 -3 0 1 4 -2 2 0 -3 -4
    Положительных: 8
    Отрицательных: 10
    Равных нулю: 2

    КуМир


    алг положительные элементы
    нач
    цел N = 20
    цел таб a[1:N]
    цел pos=0, neg=0, zero=0,i
    нц для i от 1 до N
    a[i] := int(rand(0,10))-5
    вывод a[i], " "
    если a[i] > 0 то pos := pos + 1
    иначе
    если a[i] < 0 то neg := neg + 1
    иначе zero := zero + 1
    все
    все
    кц
    вывод нс, "Положительных: ", pos
    вывод нс, "Отрицательных: ", neg
    вывод нс, "Равных нулю: ", zero
    кон

    Basic-256


    N = 20
    dim a(N)
    pos = 0
    neg = 0
    zero = 0
    for i=0 to N-1
    a[i] = int(rand()*10) - 5 # от 4 до -5
    print a[i]+ " ";
    if a[i] < 0 then
    neg = neg + 1
    else
    if a[i] > 0 then
    pos = pos+1
    else
    zero = zero + 1
    endif
    endif
    next i
    print
    print "Positive: " + pos
    print "Negative: " + neg
    print "Zero: " + zero



    3 4 2 1 3 -4 0 0 -1 4 4 -1 2 -5 -4 -3 3 2 4 -3
    Positive: 11
    Negative: 7
    Zero: 2

    аыфа акыфа



    Ученик

    (97),
    закрыт



    4 года назад

    написать надо на паскале и нарисовать блок схему, кто умеет, помогите пожалуйста

    Лучший ответ

    Ирина Анатольевна

    Просветленный

    (20120)


    5 лет назад

    var i, n, k: integer;
    a: array [1..100] of integer;
    begin
    write (‘n=’);
    readln (n);
    k:=0;
    for i:=1 to n do
    begin
    a[i]:= -9 + random (19);
    write (a[i]:4);
    if a[i] < 0 then inc(k);
    end;
    writeln;
    writeln (‘количество отрицательных элементов = ‘, k);
    end.

    Остальные ответы

    Президент интернета

    Просветленный

    (42390)


    5 лет назад

    Очень простая программа. Надо сделать цикл по массиву и найти количество отрицательных элементов массива.

    Похожие вопросы

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