Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 03.11.2020
Сообщений: 26

Сформировать стек из N чисел и найти произведение элементов стека кратных 3 и 4, вывести результат.

20.11.2020, 19:35. Показов 3787. Ответов 5

Студворк — интернет-сервис помощи студентам
Только приступил к изучению стеков и хотел бы попросить помощи в объяснении этого задания. Сформировать стек из N чисел и найти произведение элементов стека кратных 3 и 4, вывести результат.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2020, 19:35
Ответы с готовыми решениями:

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

Найти произведение элементов стека и поместить результат в стек
Сформировать стек из 5 чисел. Найти произведение 3-го и 4-го чисел из стека. Результат поместить в стек. если можно хотелось бы с...

Сформировать стек из 6 цифр. Вывести стек на экран. Удалить элементы из стека, увеличить каждый из них на единицу и снов
Сформировать стек из 6 цифр. Вывести стек на экран. Удалить элементы из стека, увеличить каждый из них на единицу и снова поместить в стек...

5
454 / 278 / 163
Регистрация: 17.04.2019
Сообщений: 1,637
20.11.2020, 20:42
sergey7y2, можете использовать класс Stack. Или нужна собственная реализация этого класса?
0
0 / 0 / 0
Регистрация: 03.11.2020
Сообщений: 26
20.11.2020, 20:54  [ТС]
ProgItEasy, как правильно использовать этот класс в этой задаче?
0
619 / 399 / 187
Регистрация: 28.11.2019
Сообщений: 867
20.11.2020, 21:28
Заполнить стек:
C#
1
2
3
4
5
6
7
8
9
10
            Random rand = new Random();
            Stack<int> nums = new Stack<int>();
            Console.Write("введите N: ");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine("стек:");
            for (int i = 0; i < n; i++)
            {
                nums.Push(rand.Next(1, 10));
                Console.Write(nums.Peek() + " ");
            }
Цитата Сообщение от sergey7y2 Посмотреть сообщение
и найти произведение элементов стека кратных 3 и 4
А вот это мне непонятно. Произведение чего на что ? Допустим, в стеке 100 чисел. Что считать ? Произведение пар чисел, или каких-то групп чисел, или еще как-то. Стек стоит применять тогда, когда есть необходимость в алгоритме "последний вошел - первый вышел". Вы можете "вытащить" из стека только последний элемент, который туда "положили". Стек это не массив и перебрать его так просто не получится, либо придется его переводить в массив. Ну, можно конечно использовать linq и ElementAt для доступа по индексу. Или имеется ввиду просто вытаскивать из стека по два числа и перемножать их ?
0
454 / 278 / 163
Регистрация: 17.04.2019
Сообщений: 1,637
20.11.2020, 21:36
sergey7y2,
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
32
33
34
35
36
37
38
39
40
using System;
using System.Collections.Generic;
using System.Linq;
                    
public class Program
{
    public static void Main()
    {
        int numbersStackSize = 0;
        Stack<int> numbersStack = new Stack<int>();
        int currentNumber = 0;
        List<int> numbersInStackMultiplesOfThreeAndFour = new List<int>();
        
        Console.Write("Введите размер стека: ");
        numbersStackSize = Int32.Parse(Console.ReadLine());
        while (numbersStackSize < 1)
        {
            Console.WriteLine("Ошибка: размер стека не может быть меньше 1!");
            Console.Write("Повторите ввод: ");
            numbersStackSize = Int32.Parse(Console.ReadLine());
        }
        
        Console.WriteLine("Заполните стек целыми числами:");
        for (int i = 1; i <= numbersStackSize; i++)
        {
            Console.Write($"Введите значение {i}-го элемента: ");
            currentNumber = Int32.Parse(Console.ReadLine());
            numbersStack.Push(currentNumber);
        }
        
        numbersInStackMultiplesOfThreeAndFour = numbersStack.Where(element => ((element % 3 == 0) && (element % 4 == 0) && (element != 0))).ToList();
        Console.WriteLine($"Полученный стек: {String.Join("; ", numbersStack)}");
        if (numbersInStackMultiplesOfThreeAndFour.Count == 0)
            Console.WriteLine("Элементы, которые кратны 3 и 4, отсутствуют!");
        else
            Console.WriteLine($"Произведение элементов, которые кратны 3 и 4: {numbersInStackMultiplesOfThreeAndFour.Aggregate((element, product) => product*element)}");
            
        Console.ReadKey(true);
    }
}
Добавлено через 3 минуты
randok, да такие задания - это просто сферический конь в вакууме, который ничего общего с реальной практикой не имеет. Поэтому не стоит искать смысл там, где его нет.
1
619 / 399 / 187
Регистрация: 28.11.2019
Сообщений: 867
20.11.2020, 22:25
Мда, надо иногда отдыхать. Я почему-то подумал, что надо найти произведения, кратные 3 или 4, а не произведение кратных элементов.

Добавлено через 18 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            long mult = 1;
            Random rand = new Random();
            Stack<int> nums = new Stack<int>();
            Console.Write("введите N: ");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine("стек:");
            for (int i = 0; i < n; i++)
            {
                nums.Push(rand.Next(0, 100));
                Console.Write(nums.Peek() + " ");
            }
            for (int i = 0; i < n; i++)
            {
                int el = nums.Pop();
                if (el != 0 && el % 3 == 0 && el % 4 == 0) mult *= el;
            }
            Console.WriteLine();
            Console.WriteLine(mult == 1? "чисел, кратных 3 и 4 нет" : $"{mult}" );
            Console.ReadKey();
Либо сразу при заполнении считать элементы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            long mult = 1;
            Random rand = new Random();
            Stack<int> nums = new Stack<int>();
            Console.Write("введите N: ");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine("стек:");
            for (int i = 0; i < n; i++)
            {
                int el = rand.Next(0, 100);
                nums.Push(el);
                if (el != 0 && el % 3 == 0 && el % 4 == 0) mult *= el;
                Console.Write(el + " ");
            }
            Console.WriteLine();
            Console.WriteLine(mult == 1? "чисел, кратных 3 и 4 нет" : $"{mult}" );
            Console.ReadKey();
Но это уже "читерство" и тут не важно, стек это или не стек.

Добавлено через 13 минут
С самостоятельным заполнением стека и проверкой ввода:
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
        public static void Main()
        {
            int Check()
            {
                int num;
                while (!int.TryParse(Console.ReadLine(), out num)) Console.WriteLine("Нужно ввести число!");
                return num;
            }
            long mult = 1;
            Stack<int> nums = new Stack<int>();
            Console.Write("введите N: ");
            int n = Check();
            for (int i = 0; i < n; i++)
            {
                Console.Write($"введите {i+1}-е число: ");
                nums.Push(Check());
            }
            Console.WriteLine("стек:");
            for (int i = 0; i < n; i++)
            {
                Console.Write(nums.Peek() + " ");
                int el = nums.Pop();
                if (el != 0 && el % 3 == 0 && el % 4 == 0) mult *= el;
            }
            Console.WriteLine();
            Console.WriteLine(mult == 1? "чисел, кратных 3 и 4 нет" : $"произведение: {mult}" );
            Console.ReadKey();
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2020, 22:25
Помогаю со студенческими работами здесь

Сформировать типизированный файл по формуле, найти произведение чисел, кратных 2 и 10
Помогите решить задачу, пожалуйста. Типизированные файлы. А) Формировать М1(из 10 компонент) первая половина по формуле 3i, вторая по...

Сформировать одномерный массив. Найти произведение элементов, кратных 5
сформировать одномерный массив. Найти произведение элементов, кратных 5. через массивы решить и через процедуры.. помогите!

Даны n натуральных чисел. Найти произведение элементов, кратных 3 и 5
Даны n натуральных чисел. Найти произведение элементов, кратных 3 и 5.

Сформировать стек по файлу чисел. Удалить из стека узлы с минимальным значением информационного поля
Сформировать стек по файлу чисел. Удалить из стека узлы с минимальным значением информационного поля. Использовать дополнительный стек.

Дан массив натуральных чисел. Найти произведение элементов, кратных данному К
Дан массив натуральных чисел. Найти произведение элементов, кратных данному К.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru