Значительное количество задач вынес в подраздел Задачи 2, в котором кроме условий появляются и их решения.
Здесь предлагаю для самопроверки решить несколько простых задач для студентов-первокурсников, которые начинают изучать программирование.
Задачи повышенного уровня сложности решайте после проработки примеров решения задач по теме «Массивы».
Вам будет полезен раздел Примеры решения задач начинающими программистами — соавторами сайта с комментариями.
Простые задачи
Решены задачи 1-3, 6, 10, 13-15. Не решены 4-5, 7-9, 11,12, 16-33.
Задача 1. Введите с клавиатуры строку произвольной длины и подсчитайте процент вхождения заданного символа в строку.
Задача 2. Задан массив действительных чисел размерности 10х10. Найти суммы элементов каждой строки, произведения элементов каждого столбца, и максимальный элемент главной диагонали (подсказка: все элементы, для которых номер строки совпадает с номером столбца).
Задача 3. В заданной строке текста определите количество слов. Каждое слово отделено друг от друга пробелом.
Задача 4. Задан одномерный массив целых чисел. Образуйте из него два отсортированных по возрастанию массива, содержащих четные и нечетные числа. Подсказка: четное число делится на 2 без остатка. Есть пример развернутого решения задачи.
Задача 5. В заданном массиве действительных чисел найдите разность между максимальным и минимальным числом.
Задача 6. В одномерном массиве из 100 чисел M[] подсчитайте количество элементов, удовлетворяющих условию 0 < M[i] <125.
Задача 7. Определите, является ли исходная строка символов палиндромом (читается одинаково с начала и с конца). Регистры символов и пробелы игнорируйте.
Задача 8. Задана квадратная матрица целых чисел. Подсчитайте количество отрицательных и положительных элементов, а также выведите на печать координаты нулевых элементов (номер строки и номер столбца).
Задача 9. Введите с клавиатуры строку произвольной длины и подсчитайте процент вхождения гласных букв латинского алфавита в строку (не различая регистры).
Задача 10. Задан массив действительных чисел из N элементов (используйте генератор случайных чисел). Определить количество элементов, значения которых находятся в диапазоне от -100 до +100.
Задача 11. Задано пять произвольных целых чисел (элементы массива). Определить, является ли их расположение в массиве упорядоченным (т.е. по возрастанию или по убыванию) или неупорядоченным.
Задача 12. Задан массив действительных чисел из N элементов (используйте генератор случайных чисел). Определить количество элементов, значения которых находятся вне диапазона от -10 до +10.
Задача 13. В двухмерном массиве переставьте попарно соседние строки, т.е. 1-ю со 2-ой, 3-ю с 4-й и т.д. Результат выведите на экран.
Задача 14. Определите, присутствует ли в тексте, заданном в виде строки, некоторое слово (различие регистра игнорируйте).
Задача 15. Задан генератором случайных чисел одномерный массив из действительных чисел. Найдите максимальное и минимальное число этого массива.
Задача 16. Напишите методы для ввода одномерного массива с клавиатуры и для вывода его содержимого на экран.
Задача 17. В массиве строк (список фамилий) определите самую длинную фамилию.
Задача 18. Найдите сумму и произведение элементов квадратной матрицы размерности 10х10.
Задача 19. Задано три треугольника со своими сторонами (a, b, c). Найти треугольник с наибольшим периметром или наибольшей площадью. Всегда ли это будет один и тот же треугольник?
Задача 20. Сформируйте массив целых чисел по алгоритму Фибоначчи: 1-й и 2-й элемент равны 1, а каждый последующий равен сумме двух предыдущих, т.е.: 1, 1, 2, 3, 5, 8, … . Найдите сумму и произведение его N членов.
Задача 21. Задан двумерный массив чисел (используйте генератор случайных чисел). Отсортируйте каждую нечетную строку по возрастанию, а каждую четную – по убыванию, после чего выведите значение k-го столбца.
Задача 22. Сформируйте одномерный массив действительных чисел как геометрическую последовательность со знаменателем ½, начиная с 1, т.е.: 1,0 0,5 0,25 0,125 и т.д. Чему будет равна сумма 100 его членов с точностью до 10-10?
Задача 23. Дано: информация о студенте вуза содержит следующие элементы:
а) фамилия, имя;
б) шифр группы;
в) массив оценок по каждой дисциплине за семестр (от 2 до 5).
Информация о студенте является элементом массива М[ ].
Требуется определить фамилии студентов, которые будут включены в приказ на отчисление по результатам сессии (условие – по трем или более дисциплинам каждая оценка — двойка).
Задача 24. Известны (вводятся с клавиатуры) размеры 10 треугольников (задаются три стороны). Напишите функцию, вычисляющую площадь треугольника по формуле Герона и с ее помощью определите номер треугольника с наибольшей площадью.
Задача 25. Вычислите сумму членов последовательности, начинающейся с единицы, в которой каждый следующий член в три раза больше предыдущего, т.е. {1, 3, 9, 27, 81,…}, причем последний член последовательности не должен превышать 1000.
Задача 26. Задан массив целых чисел A[20]. Создать другой массив целых чисел B[ ], в который войдут все числа исходного массива, удовлетворяющие условию: А[i] <= 888, после чего отсортировать элементы массива В[ ] по убыванию.
Задача 27. Введите с клавиатуры строку произвольной длины, расположите символы в строке в порядке возрастания их кода и образуйте новую строку, в которой символы будут расположены в обратном порядке относительно отсортированной строки.
Задача 28. Дано: информация о каждом жителе города содержит следующие элементы:
а) фамилия, имя, отчество;
б) домашний адрес (улица, дом);
в) дата рождения.
Информация о жителе является элементом одного большого массива М[ ].
Требуется составить списки избирателей, живущих по заданному адресу в алфавитном порядке.
Примечание: Правом участия в выборах обладают люди не моложе 18 лет.
Задача 29. Составьте процедуры, которые бы вычисляли сумму и произведение двух матриц (не обязательно квадратных) с проверкой размерностей.
Задача 30. Дано: информация о студенте вуза содержит следующие элементы:
а) фамилия, имя;
б) шифр группы;
в) массив оценок по каждой дисциплине за семестр (от 2 до 5).
Информация о студенте является элементом массива М[ ].
Требуется определить фамилии студентов, которые будут включены в приказ на стипендию по результатам сессии (условие – оценки по всем дисциплинам не ниже четверки).
Задача 31. Вычислите сумму членов последовательности, в которой каждый следующий член в три раза меньше предыдущего, начиная с единицы, т.е.:
S=1+1/3+1/9+1/27+…
с погрешностью 10-3.
Задача 32. Отсортируйте введенный список фамилий по алфавиту и выведите его на экран.
Задача 33. Напишите функцию, вычисляющую экспоненту через ряд с заданной точностью 10-15, сравните результат с константой System.Math.E.
Задачи повышенного уровня сложности
Восемь ферзей 2
Постановка задачи. Можно ли поставить на пустой шахматной доске восемь ферзей так, чтобы ни один из них не «атаковал» другого, т.е. никакие два ферзя не стояли бы на одном и том же столбце или на одной и той же строке или на одной и той же диагонали? Определите максимально возможное число расстановок 8 ферзей в соответствии с указанными правилами. Дополните задачу некоторыми условиями, например, чтобы ферзей нельзя было ставить на главные диагонали, или чтобы первый ферзь был поставлен на строго определенную клетку шахматной доски (например, а2). Придумайте алгоритм, не использующий полный перебор, как в примере решения задачи «Восемь ферзей».
Решето Эратосфена
Простое число – это любое целое число, которое точно делится без остатка только само на себя и 1. Решето Эратосфена работает следующим образом:
1) Создайте массив, все элементы которого имеют начальное значение 1 (истина). Элементы массива с простыми индексами останутся равными 1. Все другие элементы массива, в конечном счете, установятся равными нулю.
2) Начиная с индекса массива 2 (индекс 1 должен быть простым) каждый раз отыскивается элемент массива с единичным значением, циклически обрабатывается оставшаяся часть массива и устанавливается в нуль каждый элемент массива, чей индекс кратен индексу элемента с единичным значением. Для индекса 2 все элементы в массиве с большим чем 2 индексом и кратные 2 установятся равными нулю (индексы 4, 6, 8, …); для индекса 3 все элементы с индексом свыше 3 и кратные 3, установятся равными нулю (индексы 6, 9, 12, …) и т.д.
3) Когда процесс закончится, элементы массива с единичным значением указывают, что их индексы – простые числа. Эти индексы могут быть напечатаны.
Напишите программу, которая использует массив из 100 млн элементов для определения и печати простых чисел между N_min и N_max. Элемент 0 массива во внимание не принимайте.
Сравните эффективность алгоритма с алгоритмом решения задачи «Простые числа». Критерий эффективности – время решения задачи.
Путешествие коня
Математик Л. Эйлер предложил головоломку:
Может ли шахматная фигура «конь» обойти все 64 клетки шахматной доски, побывав на каждой из них только один раз? Конь ходит L-образно (на две клетки в каком-либо направлении и затем на одну клетку в перпендикулярном направлении).
Таким образом, из клетки в середине пустой доски конь может сделать восемь различных ходов (пронумеруем их от 0 до 7). На листе бумаги 8х8 попытайтесь выполнить путешествие коня вручную. Пометьте цифрой 1 первую клетку, куда вы поставите коня, цифрой 2 — вторую, цифрой 3 – третью и т.д.
Разработайте программу путешествия коня на шахматной доске. Введите счетчик, который изменяется от 1 до 64. Записывайте в массив номер последней клетки, на которую передвинулся конь. Помните, что для контроля каждого возможного хода нужно видеть, был ли уже конь на этой клетке и, конечно же, проверять, не выйдет ли конь за пределы шахматной доски.
Запустите программу. Сколько ходов сделал ваш конь?
Измените программу, используя опыт игры «в ручную», либо генератор случайных чисел (при выборе хода).
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
![]() |
![]() |
![]() |
![]() |
Задача 4. Задан одномерный массив целых чисел. Образуйте из него два отсортированных по возрастанию массива, содержащих четные и нечетные числа.
Программирование структур принятия решений, использующих if… else
На плоскости заданы две точки А1 (х1, у1 ), А2 (х2, y2) и прямая Ах + Ву + С=0. Определить: 1) лежат ли точки по одну сторону от прямой (числа Ах, + Ву, + С и Ах2 + Ву2 + С имеют одинаковые знаки); 2) лежат ли точки по разные стороны от прямой (числа имеют разные знаки); 3) одна из точек (или обе) лежит на прямой, если одно из этих чисел (или оба) равно нулю.
Программирование структур принятия решений, использующих if…else
На плоскости заданы две точки А1(х1,у1), А2(х2,у2) и прямая Ах+Ву+С=0.
Определить:
1) лежат ли точки по одну сторону от прямой (числа Ах1+Ву1+С и Ах2+Ву2+С имеют одинаковые знаки);
2) лежат ли точки по разные стороны от прямой числа (числа имеют разные знаки);
3) одна из точек (или обе) ежит на прямой, если одно из этих чисел (или оба) равно нулю
Задача 7. Определите, является ли исходная строка символов палиндромом (читается одинаково с начала и с конца). Регистры символов и пробелы игнорируйте.
Немного громоздко, но верно.
Задача 5. В заданном массиве действительных чисел найдите разность между максимальным и минимальным числом.
Вот мое решение.
Тимур, верно!
Библиотеку Linq сейчас используют все чаще: один оператор — и минимум найден.
Task15 Задан генератором случайных чисел одномерный массив из действительных чисел. Найдите максимальное и минимальное число этого массива.
Евгений! Делить алгоритм на отдельные методы — навык полезный, равно как и использование библиотеки LINQ.
Task13. В двухмерном массиве переставьте попарно соседние строки, т.е. 1-ю со 2-ой, 3-ю с 4-й и т.д. Результат выведите на экран.
Евгений, верно.
Task14. Определите, присутствует ли в тексте, заданном в виде строки, некоторое слово (различие регистра игнорируйте).
Евгений, верно!
И полезный пример использования тернарного оператора.
вот вам задача от меня :)
примите строку слов, на месте каждого пробела вставьте %2B, а цифры если имеются в строке уберите, итог верните в исходное место — то, которое принимало первоначальную строку в начале
//Задача 3. В заданной строке текста определите количество слов. Каждое слово отделено друг от друга пробелом.
Alexey, that’s right.
Задача 1. Введите с клавиатуры строку произвольной длины и подсчитайте процент вхождения заданного символа в строку.
Аркадий, верно.
Задача 1. Введите с клавиатуры строку произвольной длины и подсчитайте процент вхождения заданного символа в строку.
Решение:
Александр! Работает. А если строку объявить не через массив, а как string? Например, так:
Задача 10. Задан массив действительных чисел из N элементов (используйте генератор случайных чисел). Определить количество элементов, значения которых находятся в диапазоне от -100 до +100.
Решение:
Нурс! Две ошибки: синтаксическая — заголовок цикла for и семантическая (смысловая) — Вы не задаете элементы массива, а только их количество (от 1 до 9). Смотрите мои замечания к задаче 6. Тестируйте программу лучше.
Задача 6. В одномерном массиве из 100 чисел M[] подсчитайте количество элементов, удовлетворяющих условию 0 < M[i] <125.
Моё решение:
Нурс! Немного поправил Ваше решение.
Вопрос от Ивана https://c-sharp.pro/?p=1797#comment-1206, как решить?
Задача 2. Задан массив действительных чисел размерности 10х10. Найти суммы элементов каждой строки, произведения элементов каждого столбца, и максимальный элемент главной диагонали (подсказка: все элементы, для которых номер строки совпадает с номером столбца).
ОТВЕТ:
1) Введите массив A[10,10]
2) В цикле по строкам найдите суммы элементов каждой строки, выведите на печать
3) В цикле по столбцам найдите произведения элементов каждого столбца, выведите на печать
4) В цикле найдите максимальный элемент среди A[i,i], где i=0,1,…,9, выведите его на печать.
И все.
Вот, как вариант:
Александр! Задача решена.
Поиск максимального элемента короче писать так:
Вы три раза использовали вложенные циклы. Это как-то нерационально! Мое решение тоже не идеально, но все вычисления реализованы в одном вложенном цикле.
Татьяна! В целом Вы правы. Только я бы еще вынес поиск максимального элемента за границы цикла по j, и тогда не было бы необходимости проверять i==j. Видимо об этом Вы написали, говоря об неидеальности. Успехов.