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

ARTER616

6 / 5 / 4

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

Сообщений: 294

1

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

25.02.2017, 21:02. Показов 6470. Ответов 10

Метки нет (Все метки)


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

Найдите количество положительных элементов в заданном списке.

Формат входных данных

Вводится список целых чисел. Количество чисел не превосходит 100. Все числа списка находятся на одной строке. Числа по модулю не превосходят 100000.

Формат выходных данных

Выведете единственное число — количество положительных элементов.
Вот код, но судя по всему он не правильный, т.к. не проходит 60% тестов

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    const int size = 100;
    int arr[100], c = 0; 
    for(int i=0;i<100;i++)
    cin >> arr[i];
    for(int i=0;i<5;i++)
    if(arr[i]>0){ 
    c++;
}
    
    cout << c << endl;
}



0



7 / 9 / 4

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

Сообщений: 139

25.02.2017, 21:16

2

Во втором цикле for у тебя в условии не до 100, а до 5.



0



6 / 5 / 4

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

Сообщений: 294

25.02.2017, 21:18

 [ТС]

3

Теперь те ответы, которые были правильные стали неправильные а некоторые которые были неправильные стали правильные



0



7 / 9 / 4

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

Сообщений: 139

25.02.2017, 21:20

4

Так а почему у тебя в условии до 5 стоит? Ты же должен проверить 100 элементов массива. А проверяешь первые 5.



0



6 / 5 / 4

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

Сообщений: 294

25.02.2017, 21:22

 [ТС]

5

Ну ошибочка вышла… Правда после исправления задача лучше работать не стала…



0



7 / 9 / 4

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

Сообщений: 139

25.02.2017, 21:24

6

Тогда во втором цикле поставь после for() фигурные скобки {}



0



ARTER616

6 / 5 / 4

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

Сообщений: 294

25.02.2017, 21:26

 [ТС]

7

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

Ну ошибочка вышла… Правда после исправления задача лучше работать не стала…

Я случайно…

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

C++
1
2
3
4
5
for(int i=0;i<100;i++){
    if(arr[i]>0){ 
    c++;
}
 }



0



zss

Модератор

Эксперт С++

13099 / 10372 / 6206

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

Сообщений: 27,738

25.02.2017, 21:27

8

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    const int size = 100;
    int arr[size], c = 0,n;
    cin>>n;
    if(n>100 || n<0)n=100;
    for(int i=0;i<n;i++)
        cin >> arr[i];
    for(int i=0;i<n;i++)
        if(arr[i]>0) 
            c++;
    cout << c << endl;
}



0



6 / 5 / 4

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

Сообщений: 294

25.02.2017, 21:31

 [ТС]

9

А n это кол-во чисел? Просто если оно случайное, то как тогда?



0



-16 / 14 / 3

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

Сообщений: 154

25.02.2017, 21:49

10

14-ый читай.



0



6 / 5 / 4

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

Сообщений: 294

25.02.2017, 21:56

 [ТС]

11

14ый что?



0



Вопрос составлен мастерски, конечно
Но, пытаясь разгадать вашу загадку, могу предложить такие варианты

1) Только положительные

const positiveNums = arr.filter((num) => num > 0); // [16,54,72,47,4,25,46,4,27,4,76,12,4,47]

2) Только положительные и нечетные числа

const oddPositiveNums = arr.filter((num) => num > 0 && num % 2 !== 0); // [47,25,27,47]

3) Их сумма

const sum = arr
 .filter((num) => num > 0 && num % 2 !== 0)
 .reduce((acc, num) => acc += num); // 146

не могу понять как

    let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    let arr2 = [];
    for(let elem of arr) {
        if (elem % 2 === 2) {
            arr2.push(arr);
        }
    }
    console.log(arr2);

SwaD's user avatar

SwaD

7,8194 золотых знака13 серебряных знаков30 бронзовых знаков

задан 25 янв в 15:05

Андрей Маслов's user avatar

6

Скорее всего Вы ошибка в вопросе.
Положительные числа, это все числа больше нуля.
Четные числа это все числа, какие при делении на 2 будут без остатка.

Насчет кода:
При делению по модулю на 2, никогда не будет остаток 2. Всегда остаток будет меньше на 1 от делителя. Возможно elem % 2 === 2 заменив на elem % 2 === 0 решит Вашу проблему

ответ дан 25 янв в 15:19

Node_pro's user avatar

Node_proNode_pro

8,0895 золотых знаков32 серебряных знака51 бронзовый знак

1

let arr = [1,2,4,-1,7,11,76, -2,];
let arr1 = [];

for (elem of arr) {
    if (elem > 0) {
        arr1.push(elem);
    }
}
console.log(arr1) // выведет [1, 2, 4, 7, 11, 76]

ответ дан 6 мая в 5:23

KoDi's user avatar

KoDiKoDi

11 бронзовый знак

2

Формулировка задачи:

вот прога , а вот как сделать чтоб в массив Y переписывались только положительные числа

Код к задаче: «Как сделать чтоб в массиве были только положительные числа»

textual

Листинг программы

for i:=1 to n do readln(a[i]);
writeln('massiv Y');
for i:=n downto 1 do
if a[i]>=0 then
write('  ',a[i]);
readln;
end.

Полезно ли:

11   голосов , оценка 4.273 из 5

Похожие ответы

  1. Найти среднее арифметическое элементов массива, стоящих на чётных мечтах, и вывести все положительные элементы
  2. Для каждого столбца двумерного массива подсчитать сумму четных положительных элементов
  3. Расположить в порядке возрастания положительные элементы массива, кратные заданному числу
  4. В одномерном массиве подсчитать количество положительных и отрицательных чисел
  5. В двумерных массивах все положительные элементы заменить на заданные числа
  6. Переставить элементы массива так, чтобы сначала располагались все нули, затем единицы
  7. Найти индексы первого отрицательного и первого положительного элемента
  8. Как записать индекс числа
  9. Дана вещественная матрица M(4,3). Подсчитать число отрицательных и сумму положительных элементов
  10. Из массива А сформировать массив B
  11. Выбрать из файла положительные числа, вывести их на экран и записать в новый файл

Задачи:

  1. Подсчитать количество и сумму всех положительных чисел массива, а также элементов кратных 3.
  2. Подсчитать количество и сумму всех отрицательных чисел массива, а также элементов кратных 3.
  3. Предусмотреть ввод чисел с клавиатуры (через форму).
  4. Предусмотреть конец последовательности — число 0. Т.е. числа в массиве, идущие после 0, должны игнорироваться.

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

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

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

foreach($arr as $v)
{
	if($v > 0)
		$values[] = $v;
}

var_dump($values);

Вычисление суммы положительных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

foreach($arr as $v)
{
	if($v > 0)
		$sum += $v;
}

var_dump($sum);

Поиск положительных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

foreach($arr as $v)
{
	if($v > 0 and $v % 3 == 0)
		$values[] = $v;
}

var_dump($values);

Вычисление суммы положительных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

foreach($arr as $v)
{
	if($v > 0 and $v % 3 == 0)
		$sum += $v;
}

var_dump($sum);

Поиск отрицательных элементов с FOREACH

Поиск отрицательных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

foreach($arr as $v)
{
	if($v < 0)
		$values[] = $v;
}

var_dump($values);

Вычисление суммы отрицательных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

foreach($arr as $v)
{
	if($v < 0)
		$sum += $v;
}

var_dump($sum);

Поиск отрицательных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

foreach($arr as $v)
{
	if($v < 0 and $v % 3 == 0)
		$values[] = $v;
}

var_dump($values);

Вычисление суммы отрицательных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

foreach($arr as $v)
{
	if($v < 0 and $v % 3 == 0)
		$sum += $v;
}

var_dump($sum);

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

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

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

for($i = 0; $i < count($arr); $i++)
{
	if($arr[$i] > 0)
		$values[] = $arr[$i];
}

var_dump($values);

Вычисление суммы положительных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

for($i = 0; $i < count($arr); $i++)
{
	if($arr[$i] > 0)
		$sum += $arr[$i];
}

var_dump($sum);

Поиск положительных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

for($i = 0; $i < count($arr); $i++)
{
	if($arr[$i] > 0 and $arr[$i] % 3 == 0)
		$values[] = $arr[$i];
}

var_dump($values);

Вычисление суммы положительных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

for($i = 0; $i < count($arr); $i++)
{
	if($arr[$i] > 0 and $arr[$i] % 3 == 0)
		$sum += $arr[$i];
}

var_dump($sum);

Поиск отрицательных элементов с FOR

Поиск отрицательных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

for($i = 0; $i < count($arr); $i++)
{
	if($arr[$i] < 0)
		$values[] = $arr[$i];
}

var_dump($values);

Вычисление суммы отрицательных элементов:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

for($i = 0; $i < count($arr); $i++)
{
	if($arr[$i] < 0)
		$sum += $arr[$i];
}

var_dump($sum);

Поиск отрицательных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];

for($i = 0; $i < count($arr); $i++)
{
	if($arr[$i] < 0 and $arr[$i] % 3 == 0)
		$values[] = $arr[$i];
}

var_dump($values);

Вычисление суммы отрицательных элементов, кратных 3:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$sum = 0;

for($i = 0; $i < count($arr); $i++)
{
	if($arr[$i] < 0 and $arr[$i] % 3 == 0)
		$sum += $arr[$i];
}

var_dump($sum);

Поиск элементов с WHILE

Поиск чисел с while аналогичен поиску с for, только эта строчка:

for($i = 0; $i < count($arr); $i++)

Заменяется на эти:

$i = -1;

while(++$i < count($arr))

Пример для поиска положительных чисел:

<?php
$arr = [2, 4, -4, 12, -3, 1];
$values = [];
$i = -1;

while(++$i < count($arr))
{
	if($arr[$i] > 0)
		$values[] = $arr[$i];
}

var_dump($values);

Ввод чисел через форму

Простая форма, отправляемая методом GET, с PHP обработчиком:

<?php
if(isset($_GET['nums']))
{
	$arr = explode(' ', $_GET['nums']);
}
?>
<form>
	<input type="text" name="nums">
	<input type="submit" name="Поиск">
</form>

Введя в эту форму 1 2 35 -34, в переменной $arr мы получим массив [1, 2, 35, -34]. Правда вместо чисел в нём будут строки, но это неважно, поскольку перед сравнением значений PHP всё равно будет приводить их к числам.

Теперь вы можете добавить сюда код любого из описанных выше циклов, например вычисление суммы положительных чисел с циклом for:

<?php
if(isset($_GET['nums']))
{
	$arr = explode(' ', $_GET['nums']);
	$sum = 0;

	for($i = 0; $i < count($arr); $i++)
	{
		if($arr[$i] > 0)
			$sum += $arr[$i];
	}

	var_dump($sum);
}
?>
<form>
	<input type="text" name="nums">
	<input type="submit" name="Поиск">
</form>

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

Для реализации конца последовательности нужно в начало цикла foreach добавить следующий код:

if($v == 0)
    break;

Для цикла for код будет выглядеть так:

if($arr[$i] == 0)
    break;

Пример для поиска положительных элементов foreach:

<?php
$arr = [2, 0, 4, -4, 12, -3, 1];
$values = [];

foreach($arr as $v)
{
	if($v == 0)
		break;

	if($v > 0)
		$values[] = $v;
}

var_dump($values); // [2]

Пример для поиска положительных элементов for:

<?php
$arr = [2, 0, 4, -4, 12, -3, 1];
$values = [];

for($i = 0; $i < count($arr); $i++)
{
	if($arr[$i] == 0)
		break;

	if($arr[$i] > 0)
		$values[] = $arr[$i];
}

var_dump($values); // [2]

Понравилась статья? Поделить с друзьями:
  • Как исправить зарядку на андроид
  • Площадь можно найти как число пи
  • Runtime error abnormal program termination как исправить windows 10
  • Как найти постоянный налоговый расход
  • Как найти периметр треуголбника