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

Задачка — мне дан двумерный массив. Нужно создать программу, чтобы найти положительные элементы массива и заменить на число b и найти индекс числа b.
Пытался писать так:

 b=int(input('b ='))
 a=[[-12,6,9], [-49,25,5], [b,5,-27]]
 
 for i in a:
        for j in i:
            print(j,end=" ")
        print
 
        if j > 0:
               list.append(j)
               print (*[i for i in a if b in i])
        
 print(b)

Grundy's user avatar

Grundy

79.9k9 золотых знаков76 серебряных знаков133 бронзовых знака

задан 27 ноя 2020 в 13:00

Али Алиев's user avatar

1

что мешает задачу решить в лоб как в математике 5 класса?

a = [[-12,6,9],[-49,25,5],[7,5,-27]]
b = 11

for i in range(len(a)):
    for j in range(len(a[i])):
        if a[i][j] > 0:
            a[i][j] = b

print(a)

или если хочется в 1 строчку, то можно так:

c = [[b if elem > 0 else elem for elem in line] for line in a]

ответ дан 27 ноя 2020 в 13:04

Zhihar's user avatar

ZhiharZhihar

36.9k4 золотых знака25 серебряных знаков67 бронзовых знаков

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

Помогите пожалуйста!!
Задание: Дан одномерный массив размерностью n, найти все положительные элементы: 1.Учесть что если пользователь ввел не число, а букву то выдать сообщение повторить ввод. 2.или использовать всевозможные действия против ошибок!! ввод с клавиатуры.
Буду очень благодарен!!

Код к задаче: «Дан одномерный массив размерностью n, найти все положительные элементы»

textual

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

const
  Max_Value = 100;
var
  arr: array[1..Max_Value] of integer;
  err, n: integer;
  St: string;
  i: byte;
begin
  writeln('Введите размереность массива до ', Max_Value, ': ');
  repeat
    write('N: ');
    readln(St);
    val(St, n, err);
  until (n in [1..Max_Value]) and (err = 0);
  writeln('Массив: ');
  i:=1;
  repeat
    repeat
      readln(St);
      val(St, arr[i], err);
    until (err = 0);
    i:=i + 1;
  until (i = n+1);
  writeln('Положительные: ');
  for i:=1 to n do
    if arr[i] > 0 then write(arr[i], ' ');
end.

Кроме того, как написали выше, что ты упускаешь нулевой элемент, ты так же поймаешь исключение IndexOutOfRange, потому что попытаешься обратиться к элементу массива с индексом 5, которого у тебя нет. Так же тебе нужно вынести int nm из цикла и инициализировать нулем, иначе каждую итерацию с положительным числом у тебя будет сбрасываться сумма.

Сonsole.WriteLine(«Сумма всех положительных числе:» + nm); — это тоже стоит написать после цикла, а не внутри него, а то у тебя сейчас выводится каждое положительное число отдельно.

В итоге, это должно выглядеть вот так:

class Pragram
{
static void Count()
{
int[] num = { 5, -7, -1, 3, 9 };
int nm = 0;
for (int i = 0; i < num.Length; i++)
{
int number = num[i];
if (number > 0)
{
nm += number;
}
}
Console.WriteLine(«Сумма всех положительных числе:» + nm);
}

static void Main()
{
Count();
Console.ReadLine();
}
}

Изображение:

Решение задач с массивами на Pascal

Решение заданий на составление программы для поиска элементов в массиве и нахождение суммы элементов.

Задача 1.

Дан одномерный массив из 50 элементов. Массив заполнен
случайными числами от -100 до 100.
Вывести на экран все положительные элементы массива.

var
   a: integer;
   z: array [1..50] of integer;

begin
   for a := 1 to 50 do
     begin
       z[a] := random(201) — 100;
       if z[a] > 0 then
         write(z[a],’ ‘);
     end;
end.

Задача 2.

Дан одномерный массив из 100 элементов.
Массив заполнен случайными числами от -100 до 100.
Найти сумму тех элементов массива, которые одновременно
имеют четные и отрицательные значения.
var
   a, sum: integer;
   z: array [1..100] of integer;

begin
   sum := 0;
     for a := 1 to 100 do
       begin
         z[a] := random(201) — 100;
         if (z[a] mod 2 = 0) and (z[a] < 0) then
           sum := sum + z[a];
       end;
   write(‘Сумма отриц. элементов = ‘, sum);
end.

Видео с решением

Задачи:

  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]

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти поиск каналов на телекарте
  • Как исправить оптические искажения
  • Как найти адекватного тиммейта
  • Как правильно составить договор аренды гаража образец
  • Как найти потерянный регион в майнкрафте

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии