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

от admin

Вывести массив 3

Задан массив из n целых чисел. Вывести только его положительные элементы, не меняя первоначальный порядок.

Входные данные

Первая строка содержит число n (1 ≤ n ≤ 100). Во второй строке записаны n целых чисел, каждое из которых не превышает по модулю 100.

Выходные данные

В первой строке вывести количество положительных элементов массива. Во второй строке вывести сами положительные элементы. Если положительных элементов в массиве нет, то вывести “NO”.

Матрица : вывести положительные числа. Если таковых нет — вывести надпись об отсутствии таковых чисел — C++

Как вывести надпись об отсутствии положительных чисел в данном коде?

Кстати, так, как у вас написано — вы будете выводить Положительные числа : для каждого положительного числа.

Harry's user avatar

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Лабораторная работа №4 «Создание массива»

Практически любую задачу в программировании можно решить несколькими способами и эта задача не исключение. Как минимум, в данном случае, мы можем решить задачу, используя два способа — через обобщенные классы ( List ) и через использование LINQ. Так как конкретный способ не указан, то решим задачу двумя способами.

Второй момент, который вносит некоторую неопределенность, это способ задания последовательности: числа будут заданы непосредственно в исходном коде, или же мы дадим пользователю возможность вводить числа с клавиатуры? Воспользуемся более сложным вариантом и дадим пользователю вводить числа с клавиатуры.

Что стоит помнить

Самое главное и важное, что стоит помнить перед тем, как начать решать задачу — это, то, что длина массива НЕ может изменяться. То есть, задав один раз длину массива, например, на 10 элементов, мы не сможем её изменить во время работы программы. Отсюда и вытекает потребность использование помимо самого массива дополнительных возможностей C# — или класса List или возможностей LINQ, так как мы не можем предусмотреть ни то, какое количество чисел введет пользователь, ни то, сколько из этих чисел окажутся положительными. Задать в этом случае итоговый массив, например, на 1000 000 элементов — очевидная глупость и лишний расход ресурсов компьютера.

Решение задачи

Создание последовательности чисел пользователем

Пусть пользователь заранее задаст какое количество чисел он хочет записать и последовательно их вводит:

Так как по условиям задачи неизвестно какие числа могут вводиться (целые или с плавающей запятой), то будем считать, что можно вводить как целые, так и дробные числа и зададим наш массив как double[] .

Как только пользователь определяется с количеством чисел, то создается массив заданной длины:

Затем запускается цикл while , в котором пользователь вводит числа до тех пор, пока массив не заполнится значениями. Если пользователь допускает ошибку, например, вводит не число, а символ, то программа просит его ввести число повторно. Именно поэтому мы использовали цикл while , а не for .

После того, как массив заполнен, в консоль выводится соответствующее сообщение.

Выбор положительных элементов последовательности

Перебор элементов массива мы можем проводить в любом цикле, но, при этом, следует не забывать сохранять необходимые нам числа (положительные) где-либо.

Использование List

Так как класс List находится в пространстве имен System.Collections.Generic , то необходимо его подключить. Массив мы перебираем в цикле foreach и, если находим число больше нуля, то добавляем его в список list . После прохождения цикла выводим количество положительных чисел пользователю.

Использование LINQ

Опять же, чтобы воспользоваться возможностями LINQ, мы подключаем пространство имен System.Linq . После этого, используя метод расширения Where (о нем можно прочитать здесь) мы выбираем все положительные числа из массива и сохраняем их в переменной result .

Вывод итогового массива пользователю

Чтобы вывести итоговый массив (содержащий положительные числа), достаточно одной строки кода и знания методов работы со строками в C#:

Исходный код программы

Ниже представлен полный исходный код программы, включающий в себя оба решения задачи — как со списком List, так и с LINQ:

Итого

Для выполнения этой лабораторной работы нам понадобилось: знание того, что из себя представляет массив, умение использовать классы (в частности List ) и, в качестве альтернативы, умение пользоваться методами расширения LINQ. Кстати, если уж совсем досконально подходить к решению задачи, то создать массив из списка или из переменной result можно очень просто:

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

В следующем примере кода показано, как создать одномерный массив целых чисел с элементами от 0 до 9:

int[] arrayName = new int[10];

Создание и одновременно инициализация массива:

В следующем примере кода используется индекс для доступа к элементу с индексом 2:

int[] oldNumbers = ; int number = oldNumbers[2]; // 3

В следующем примере кода показано, как использовать цикл for для итерации по массиву:

int[] oldNumbers = ; for (int i = 0; i < oldNumbers.Length; i++)

Использование цикла foreach :

foreach (var x in oldNumbers ) Console.Write($" ");

Функция Random

Рассмотрим пример инициализации массива из пяти элементов байтового типа со случайными значениями:
1. Создайте экземпляр генератора случайных чисел, используя системное значение в качестве начального:

var rand = new Random();

2. Сгенерируйте и отобразите 5 случайных значений:

var bytes = new byte[5]; rand.NextBytes(bytes); Console.WriteLine("Five random byte values:"); // output: foreach (byte byteValue in bytes) Console.Write(" ", byteValue); Console.WriteLine();

Задания и лабораторные си шарп

Выполнить: Дан массив целых чисел (значения элементов: -1, -2, 3, 4, 5, 6, 7). Создайте функцию для вывода массива. Создайте еще одну функцию для вычисления числа нечетных элементов в этом массиве, а также числа положительных элементов в нем.

Указание 1: Создайте функцию Print для вывода элементов массива.
Указание 2: Создайте функцию CountOddPositive с циклом foreach и операторами if , чтобы проверить, является ли элемент нечетным или положительным.

Пример выполнения:

[Название проекта: Lesson_7Lab1 , название файла L7Lab1.cs ]

  1. Создайте консольное приложение с именем Lesson_7Lab1 .
  2. В окне Обозреватель решений (Solution Explorer) найдите файл Program.cs и переименуйте его в L7Lab1.cs .
  3. Подключите класс Console , чтобы постоянно не писать его название при обращении к его методам:

To do: Дан массив вещественных чисел (значения элементов: 1.1 , -2.3 , 3.7 , 4.1 , 5.6 , 6.1 , 7.1 ).
1. Создайте функцию для печати массива.
2. Создайте еще одну функцию для поиска минимального и максимального элементов массива. При этом использовать стандартные min и max функции запрещено.

Указание 1: Поиск максимального и минимального значения осуществлен в Лабораторной работе 4 5-го урока.

Указание 2: Создайте функцию Print для печати элементов массива.

Указание 3: Создайте функцию FindMaxMin с циклом foreach и оператором if для поиска максимального и минимального значения. Заголовок функции должен выглядеть следующим образом:

static void FindMaxMin(double[] arr, ref double max, ref double min)

Пример выполнения:

[Название проекта: Lesson_7Task1 , название файла L7Task1.cs ]

Выполнить:
1. Создайте функцию FillRandomArray для заполнения массива из 10 элементов случайно сгенерированными числами диапазона от -10 до 15.
2. Создайте еще одну функцию PrintArray для вывода элементов массива.
3. Создайте функцию DivisibleBy3 для подсчета и вывода количества элементов массива, кратных 3.

Пример выполнения:

[Название проекта: Lesson_7Lab2 , название файла L7Lab2.cs ]

  1. Создайте приложение с именем Lesson_7Lab2 . Переименуйте файл Program.cs в L7Lab2.cs .
  2. Подключите класс Console :

. using static System.Console; .

Выполнить: Дан целочисленный массив (15 элементов, сгенерированных случайным образом в диапазоне от 1 до 10). Требуется определить, есть ли в массиве элемент, равный N ( N вводится). Выведите «да» или «нет» один раз. Для поиска элемента используйте цикл foreach .
1. Для заполнения и вывода элементов массива требуется создать функцию.
2. Создайте еще одну функцию FindN для поиска элемента, равного N ( N — один из параметров функции).

Указание 1: Для выхода из цикла используйте оператор break :

Указание 2: Для проверки того, найден ли искомый элемент, используйте логическую переменную:

Примерный результат:

Дополнительное задание: Выведите также индекс найденного элемента.

[Название проекта: Lesson_7Task2 , название файла L7Task2.cs ]

Выполнить: Задан массив вещественных чисел ( double ) (10 элементов, сгенерированных случайным образом в диапазоне от -5.0 до 5.0 ).
1. Создайте функцию для заполнения и вывода элементов массива.
2. Создайте еще одну функцию для подсчета и печати суммы троек рядом стоящих элементов: a[1]+a[2]+a[3] , a[2]+a[3]+a[4] , a[3]+a[4]+a[5] , …… , a[8]+a[9]+a[10] .

Указание 1: Для генерации случайных вещественных чисел используйте границы:

Читать:
Как удалить защищенную папку

// например, от -20 до 20: Random rand = new Random(); . a[i]=rand.NextDouble() * 40 — 20;

Указание 2: Для вывода вещественных значений с указанием количества цифр после десятичной точки:

// две цифры после десятичной точки Write(" ",arr[i] ); // например 1.21

Лабораторная работа №4 «Создание массива»

Практически любую задачу в программировании можно решить несколькими способами и эта задача не исключение. Как минимум, в данном случае, мы можем решить задачу, используя два способа — через обобщенные классы ( List ) и через использование LINQ. Так как конкретный способ не указан, то решим задачу двумя способами.

Второй момент, который вносит некоторую неопределенность, это способ задания последовательности: числа будут заданы непосредственно в исходном коде, или же мы дадим пользователю возможность вводить числа с клавиатуры? Воспользуемся более сложным вариантом и дадим пользователю вводить числа с клавиатуры.

Что стоит помнить

Самое главное и важное, что стоит помнить перед тем, как начать решать задачу — это, то, что длина массива НЕ может изменяться. То есть, задав один раз длину массива, например, на 10 элементов, мы не сможем её изменить во время работы программы. Отсюда и вытекает потребность использование помимо самого массива дополнительных возможностей C# — или класса List или возможностей LINQ, так как мы не можем предусмотреть ни то, какое количество чисел введет пользователь, ни то, сколько из этих чисел окажутся положительными. Задать в этом случае итоговый массив, например, на 1000 000 элементов — очевидная глупость и лишний расход ресурсов компьютера.

Решение задачи

Создание последовательности чисел пользователем

Пусть пользователь заранее задаст какое количество чисел он хочет записать и последовательно их вводит:

Так как по условиям задачи неизвестно какие числа могут вводиться (целые или с плавающей запятой), то будем считать, что можно вводить как целые, так и дробные числа и зададим наш массив как double[] .

Как только пользователь определяется с количеством чисел, то создается массив заданной длины:

Затем запускается цикл while , в котором пользователь вводит числа до тех пор, пока массив не заполнится значениями. Если пользователь допускает ошибку, например, вводит не число, а символ, то программа просит его ввести число повторно. Именно поэтому мы использовали цикл while , а не for .

После того, как массив заполнен, в консоль выводится соответствующее сообщение.

Выбор положительных элементов последовательности

Перебор элементов массива мы можем проводить в любом цикле, но, при этом, следует не забывать сохранять необходимые нам числа (положительные) где-либо.

Использование List

Так как класс List находится в пространстве имен System.Collections.Generic , то необходимо его подключить. Массив мы перебираем в цикле foreach и, если находим число больше нуля, то добавляем его в список list . После прохождения цикла выводим количество положительных чисел пользователю.

Использование LINQ

Опять же, чтобы воспользоваться возможностями LINQ, мы подключаем пространство имен System.Linq . После этого, используя метод расширения Where (о нем можно прочитать здесь) мы выбираем все положительные числа из массива и сохраняем их в переменной result .

Вывод итогового массива пользователю

Чтобы вывести итоговый массив (содержащий положительные числа), достаточно одной строки кода и знания методов работы со строками в C#:

Исходный код программы

Ниже представлен полный исходный код программы, включающий в себя оба решения задачи — как со списком List, так и с LINQ:

Итого

Для выполнения этой лабораторной работы нам понадобилось: знание того, что из себя представляет массив, умение использовать классы (в частности List ) и, в качестве альтернативы, умение пользоваться методами расширения LINQ. Кстати, если уж совсем досконально подходить к решению задачи, то создать массив из списка или из переменной result можно очень просто:

Вывод номеров строк двумерного массива, содержащих только положительные числа

И еще, как сделать вывод номеров строк с положительными элементами?

Это можно понимать по разному: либо как «в строке присутствует хотя бы один положительный элемент«, либо как » все элементы строки положительны». Второй вариант интереснее. Но надо все-таки уточнить.

Внешний цикл — по номерам строк. Внутренний цикл — по строке (по одномерному массиву). Во внутреннем цикле анализируешь строку и устанавливаешь или сбрасываешь переменную-флаг (типа bool ). По окончании цикла в зависимости от переменной-флага выводишь или не выводишь номер строки (т.е. текущее содержимое переменной-счетчика внешнего цикла).

Фтьiкай, смотри, почти все готово, только не могу я правильно применить bool.. Не догоняю как(

mychernenko, так

вы не заполните массив рандомными числами от a до b, т.к. выражение a + rand() % b переводится следующим образом: генерировать числа от a до a + (b — 1).

Эту задачу предлагаю решить так:

А теперь программу можно переписать так:

Почему сразу на свалку? ��
Croessmah, вы перед тем как куда-то посылать, объяснили бы причину по которой посылаете.

Чем идея посчитать количество чисел между a и b в цикле, хуже формулы (b + 1) — a ?

Чем идея посчитать количество чисел между a и b в цикле, хуже формулы (b + 1) — a?

хотя бы производительностью и читабельностью, не?

С учетом замечаний Croessmah и наглядности отображения строк, перепишем программу так:

С учетом замечаний Croessmah и наглядности отображения строк, перепишем программу так:

Не работает предпросмотр ��

Можно мне тоже вставить свои пять копеек?

Доброе время суток форумчане!
Пожалуй и я вставлю свои пять копеек. �� Croessmah, затронул тему производительности.

Чем идея посчитать количество чисел между a и b в цикле, хуже формулы (b + 1) — a?

хотя бы производительностью и читабельностью, не?

Всегда лучше сделать один раз вычисление, чем повторять его в цикле на каждой итерации. Ваш участок кода, Фтьiкай, этому противоречит.

Лучше написать так

Сразу отвечу и beginner, почему лучше произвести сразу арифметическое вычисление по поиску количества элементов ряда, чем вычислять его в цикле.

Чем идея посчитать количество чисел между a и b в цикле, хуже формулы (b + 1) — a?

Запустите две тестовые программы по поиску количества элементов между двумя числами.
Одна из них

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

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

К слову. gcc фрагмент

не смог оптимизировать, тогда как

Всегда лучше сделать один раз вычисление, чем повторять его в цикле на каждой итерации. Ваш участок кода, Фтьiкай, этому противоречит.

Я не стал вдаваться в столь тщательную оптимизацию )))

Но в принципе, полностью согласен.

Оптимизирующие компиляторы — это, с одной стороны, хорошо: программы быстрее работают и занимают меньше памяти. Но с другой стороны, появляется некая недетерминированность: заранее неизвестно сможет компилятор соптимизировать (читай, исправить недочёт кодера) некий фрагмент, или нет. А с третьей стороны, вера (слепая вера!) в оптимизирующий компилятор приводит к снижению мотивации к повышению уровня знаний и опыта кодера (типа: «написал говнокод — ерунда, компилятор соптимизирует»).

Отсюда вывод: на компилятор надейся, а сам не плошай. Что бы повысить качество конечного продукта, необходимо писать качественный код. Тогда компилятор с большей вероятностью сделает необходимые оптимизации. Вообще, по моему мнению, оптимизирующий компилятор предназначен для оптимизаций сгенерированного (самим компилятором!) машинного кода, а не для исправления ляпов кодера.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

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

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

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

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

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

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

Вывести на экран только положительные числа заданного массива
Дан массив из 10 вещественных чисел вывести на экран только положительные числа заданного массива.

Вывести на экран только положительные целые числа из диапазона от А до В
Решить задачу, используя операторы циклов while и do…while Вывести на экран только положительные.

Обрезание массива: оставить только положительные числа
Здравствуйте, уважаемые пользователи форума. Недавно начал изучать программирование, и при решении.

Related Posts