- •Практикум на эвм Задачи для с#
- •Часть 1
- •Введение
- •Первая программа
- •Справка по c#
- •Основные типы данных
- •Простые типы данных
- •Модельная задача Операторы ввода, цикла. Вложение структур
- •Структура псевдокода
- •Реализация управляющих структур
- •Модельная задача Целые числа. Операторы for, while, if
- •Массивы
- •Модельная задача Задание массивов. Машинный ноль
- •Модельная задача Вложение управляющих структур
- •Процедуры и функции
- •Модельная задача Пример функции
- •Перегрузка функции
- •Передача массива в функцию
- •Векторы и матрицы
- •Модельная задача многомерные массивы, ввод из файла
- •Обработка символьной информации
- •Решение Найти самое длинное симметричное слово заданного предложения
- •Рекурсия
- •Решение Вычисление факториала целого положительного числа
- •Решение Рекурсивные функции. Работа со строками.
- •Решение Построить синтаксический анализатор для понятия скобки.
- •Форма отчета по лабораторной работе
- •Варианты для лабораторных работ
-
Процедуры и функции
-
Модельная задача Пример функции
-
Рассмотрим пример применения функции подсчета среднего арифметического нескольких чисел.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Program5._1
{
class Program
{
// Главная функция:
static void Main(string[] args)
{
int number_A = 5, number_B = 3, number_C = 10;
Console.Write("The integer mean " + number_A + " and ");
Console.Write(number_B + " is equal ");
Console.WriteLine(average(number_A, number_B) + ".");
Console.WriteLine();
Console.Write("The integer mean " + number_A + ", " + number_B + " and ");
Console.Write(number_C + " is equal ");
Console.WriteLine(average(number_A, number_B, number_C) + ".");
// Ожидание ввода произвольного символа перед завершением программы
Console.ReadKey();
}
// Конец главной функции
// Функция для вычисления целочисленного среднего значения 3-х целых чисел:
static int average(int first_number, int second_number, int third_number)
{
return ((first_number + second_number + third_number) / 3);
}
// Конец функции
//Функция для вычисления целочисленного среднего значения 2-х целых чисел:
static int average(int first_number, int second_number)
{
return ((first_number + second_number) / 2);
}
// Конец функции
}
}
-
Перегрузка функции
В примере заданы две разные функции с одним и тем же именем average. Такой прием называется перегрузкой. Какую именно функцию применить, компилятор решает по дополнительным признакам. В данном случае это число аргументов функции.
-
Передача массива в функцию
// Вычисление суммы элементов массива
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Program5._4
{
class Program
{
static void Main(string[] args)
{
int[] a = new int[] { 3, 5, 7, 9, 11, 13, 15 }; //Присвоение начальных значений
int s = sum(7, a);
Console.WriteLine(s);
Console.ReadKey();
}
static int sum (int n, int []a)
{
int s = 0;
for (int i = 0; i < n; i++)
s = s + a[i];
return s;
}
}
}
-
Расстояние между двумя словами равной длины – это количество позиций, в которых различаются эти слова. В заданном предложении найти пару наиболее далеко удаленных слов заданной длины.
Имеется два варианта решения. Можно вычленить и запомнить слова в массиве строк и далее организовать цикл по парам слов с анализом их расстояния.
Все это, более аккуратно, можно сделать в строке, отслеживая позиции слов.
-
Для заданного натурального N определить наименьшее число S, которое можно представить в виде суммы aN + bN по крайней мере двумя различными (a, b - натуральные числа; представления, различающиеся лишь порядком слагаемых, различными не считаются).
Математическая модель
Алгоритм поиска требуемого представления оформим в виде процедуры. Уникальность обеспечим циклом по парам точек.
Псевдокод
Цикл по I от 2 до N
Цикл по парам чисел J, K от 1
Если JN > I/2 То
Выход из цикла по парам
Если есть представление То
Увеличить счетчик представлений
Напечатать
Все Если
Все Если
Все цикл по парам
Если два представления ТО
Выйти из цикла по I
Все Если
Все цикл
-
Найти все простые числа не превосходящие заданного N двоичная запись которых представляет собой симметричную последовательность нулей и единиц (начинающуюся единицей!)
Математическая модель
Количество символов в двоичном представлении числа N определяется неравенством 2l ≤ N ≤ 2l+1. Получить значение j – того слева символа можно по формуле (N \ 2i - j +1) Mod 2, а j – того справа по формуле (N \ 2 j -1) Mod 2. Далее можно применить логику решения задачи 79. Для определения простоты числа применяется функция, реализующая алгоритм решета Эратосфена.
-
Перечислить все натуральные числа, не превосходящие заданного N, в двоичном представлении которых номера ненулевых разрядов образуют арифметическую прогрессию.
-
Среди простых чисел, не превосходящих заданного N, найти такое, в двоичном представлении которого максимальное число единиц.
-
Перечислить все пары «соседних» простых чисел, не превосходящих N, троичные представления которых получаются друг из друга записью цифр в обратном порядке (первая такая пара – это 5 и 7).
-
Задано множество точек в трехмерном пространстве. Найти минимум радиусов шаров с центрами в этих точках, содержащихся ровно n точек этого множества.
-
Указать то число заданного множества целых чисел, в двоичном представлении которого больше всего единиц.
-
Определить, является ли периодической последовательностью двоичная запись заданного натурального числа N, то есть имеет ли она вид aa…a, где a – некоторая непустая последовательность.
-
Многоугольник (не обязательно выпуклый) задан на плоскости перечислением координат вершин в порядке обхода его границы. Определить площадь многоугольника.
Учесть, что многоугольник может иметь весьма сложную границу и для вычисления его площади целесообразно применить идею интегральной площади.
-
Дано 3n точек на плоскости, причем никакие три из них не лежат на одной прямой. Построить множество n треугольников с вершинами в этих точках так, чтобы никакие два треугольника не пересекались и не содержали друг друга.
Построить процедуру, которая находит две такие точки множество, что проведенная через них прямая содержит с какой либо своей стороны только одну точку данного множества. Найденные три точки исключить из рассмотрения
-
На плоскости задано множество окружностей. Две окружности A и B назовем связанными, если они пересекаются, либо существует третья окружность C заданного множества, связанная с A и B. Выбрать максимальное подмножество попарно не связанных друг с другом окружностей.
Построить функцию, определяющую связность окружностей.
В задачах 91:94 «Серия» означает последовательность одинаковых символов, например «аааа», «?????» …
-
Для заданного текста определить длину содержащейся в нем максимальной серии символов, отличных от букв.
-
Характеристикой слова назовем длину содержащейся в нем максимальной серии. Упорядочить слова заданного предложения в соответствии с ростом их характеристик.
-
Отредактировать заданное предложение, удаляя из него слова-серии, a также те слова, которые уже встречались в предложении раньше.
-
Среди слов заданного предложения, которые не являются сериями, найти такое, которое имеет наибольшее число вхождений в предложение.