Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВИК ПО ПРОГРАММИРОВАНИЮ.docx
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
189.04 Кб
Скачать

Код программы и схема алгоритма

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

/*Вариант 2 Дано натуральное число N. Определить длину периода 1/n. Период дроби равен периоду в последовательности

остатков. Построить гра-фик зависимости периода от N. */

int n = Convert.ToInt32(Console.ReadLine());

string s = (1.0 / n).ToString(); // Результат от деления записываем в стороковую переменную s

Console.WriteLine(s);

s = s.Substring(2, s.Length - 2); // Убираем целую часть и запятую и перезаписываем значение в переменную s

Console.WriteLine(s);

int[] m = new int[s.Length];

for (int i = 0; i < s.Length; i++) // Каждую цифру числа, записываем в массив m

{

m[i] = Convert.ToInt32(s.Substring(i, 1));

Console.Write(m[i]);

} Console.ReadLine();

for (int i = 1; i < m.Length; i++) // Сравниваем числа с 0 элементом

{

if (m[i] == m[0])

{

int index = i; // Запоминаем его порядковый номер

int P = index;

for (i = 0; i < index; i++) // Сравниваем числа от 0 до index - 1 с элементами от index до m.length - 1

{

if (m[i] == m[index])

{

if (index < m.Length - 1)

{

index++;

Console.WriteLine("Период равен P=" + P);

Console.ReadLine();

}

}

}

}

else

{

{

Console.WriteLine("Периода нет");

Console.ReadLine();

}

}

}

}

}

}

Результат машинного тестирования программы

При N равное 3, период остатка от деления 1/N будет равняться 1.

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

Даны два массива: x[1] ≤… ≤ x[k], y[1] ≤ … ≤ y[l] и число q. Найти сумму вида x[i] + y[j], наиболее близкую к числу q (число действий порядка k + l, дополнительная память – фиксированное число переменных, массивы не изменять).

Спецификация задачи

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

- число q;

- массив x;

- массив y.

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

- значение суммы самой близкой к числу q;

- порядковый номер числа q в массиве.

Математическая постановка задачи

Таблица 2

Характеристика переменных

Имя переменной

Смысл переменной

Назначение переменной

Ограничения

q

Десятичное число

Исходная

k

Размерность массива x

Исходная

x

Одномерный массив

Исходная

l

Размерность массива y

Исходная

y

Одномерный массив

Исходная

z

Одномерный массив

Промежуточная

we

Булева переменная

Промежуточная

nomer

Порядковый номер числа q

Промежуточная

v, v1

Определяют ближайшую сумму к числу q

Результат

Как только ввели число q, начинаем складывать элементы массивов x и y. Результат суммы записываем в массив z. Далее сортируем элементы массива по возрастанию и перезаписываем их. Следующим шагов выполняется ряд условий, которые и находят самую близкую сумму двух массивов x и y к числу q.

Схема алгоритма. Описание

Схема алгоритма содержит следующие типовые структурные элементы: внешний цикл и вложенные друг в друга структуры ветвления. В цикле начинается перебор массива z, до тех пор пока не найдем число q в массиве z. Далее проверяем, если число q - это последний элемент массива, то самой близкой суммой к числу q будет равняться стоящий перед ним элемент. Если же это не так, то в следующем условии проверяем, не является ли число q нулевым элементов массива. Тогда ближайшей к нему суммой будет следующий после него элемент. В конце задаем структуры ветвления, на случай если наше число q стоит в середине массива. В них сравнивается число, стоящее перед и после значения q. В зависимости от их значения, выводится ближайшая сумма элементов массива x и y к числу q.