Есть такое задание:
Запросить ввод 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
Improve Article
Save Article
Like Article
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 = 2Input: 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 элементов ,вычислить количество отрицательных элементов массива!
0 |
ForEveR В астрале 8048 / 4805 / 655 Регистрация: 24.06.2010 Сообщений: 10,562 |
||||
04.10.2010, 23:16 |
2 |
|||
cook, Да пожалста…
0 |
-comrade- 364 / 365 / 167 Регистрация: 11.06.2010 Сообщений: 703 |
||||
04.10.2010, 23:17 |
3 |
|||
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 |
|||
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
0 |
MILAN 899 / 793 / 186 Регистрация: 21.02.2009 Сообщений: 1,722 |
||||
05.10.2010, 01:01 |
9 |
|||
Так нормально?
0 |
ForEveR В астрале 8048 / 4805 / 655 Регистрация: 24.06.2010 Сообщений: 10,562 |
||||
05.10.2010, 01:02 |
10 |
|||
А раз уж С++ тогда в начале main лучше будет я полагаю.
0 |
MILAN 899 / 793 / 186 Регистрация: 21.02.2009 Сообщений: 1,722 |
||||
05.10.2010, 01:04 |
11 |
|||
Какая IDE? Добавлено через 1 минуту
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, вопрос касающийся тебя!!!Программка без ошибок ,но ничего не считает!!! This application has requested the Runtime to terminate it in an unusual way. Process returned 3 (0x3) execution time : 32.297 s
0 |
ForEveR В астрале 8048 / 4805 / 655 Регистрация: 24.06.2010 Сообщений: 10,562 |
||||
05.10.2010, 01:06 |
14 |
|||
cook, Э. Не может быть. Секунду. Код Enter n: 5//Размер массива 0 -1 -2 -3 4 3 Пишет 3, что верно. Но память я там забыл очистить…
Корректнее
0 |
MILAN 899 / 793 / 186 Регистрация: 21.02.2009 Сообщений: 1,722 |
||||
05.10.2010, 01:10 |
15 |
|||
А почему память не очищаете?
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 |
|||
А так?
0 |
0 / 0 / 0 Регистрация: 02.10.2010 Сообщений: 25 |
|
05.10.2010, 01:29 [ТС] |
20 |
неа…все равно не хочит нормальные буквы писать(((
0 |
Количество положительных, отрицательных и равных нулю элементов массива
Просмотров 10.8к. Обновлено 15 октября 2021
Сгенерировать 20 случайных целых чисел в диапазоне от -5 до 4, записать их в ячейки массива. Посчитать сколько среди них положительных, отрицательных и нулевых значений. Вывести на экран элементы массива и посчитанные количества.
- Присвоить счетчикам положительных, отрицательных и нулевых чисел значения 0.
- В цикле
- генерировать случайное число и записывать его в соответствующую ячейку массива,
- выводить на экран,
- сравнивать с нулем и в зависимости от результата увеличить на 1 либо счетчик пложительных чисел, либо отрицательных, либо нулевых.
- Вывести на экран значения счетчиков.
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 20main() {
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 += 1print("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 "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 лет назад
Очень простая программа. Надо сделать цикл по массиву и найти количество отрицательных элементов массива.
Похожие вопросы