Файл: Листинг кода домашних работ 3 варианта на языке С#.docx

Добавлен: 12.02.2019

Просмотров: 373

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Министерство образования Российской Федерации

ФГБОУ ВО «Омский государственный технический университет»

Кафедра «Информатика и вычислительная техника»















Пояснительная записка к расчетно-графической работе

По дисциплине «Проектирование и тестирование ПО»

на тему:

«Листинг кода домашних работ 3 варианта на языке С#»





Выполнил: ст.гр. ИСТ-151

Проверил: доц., к.н.

Калекин Д. В.















Омск 2017



Далее представлены задачи с 1 по 9. Выполнено не только условие задачи, но и защита от некорректного ввода данных.

ЗАДАЧА 1. РАБОТА С ЧИСЛАМИ

Определить количество повторений каждой из цифр 1,2,...,9 в числе N^N (N в степени N), N <= 1000.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Numerics;

namespace lab1_1_voron_3var {

class Program{

static void Main(string[] args) {

bool repeat = true;

do {

try {

Console.WriteLine("Введите число N в диапозоне от 1 до 1000");

var number = int.Parse(Console.ReadLine());

Console.WriteLine("N = " + number);

if (number < 1 || number > 1000) {

WrongNumberException2 we = new WrongNumberException2();

throw we;

}

BigInteger powedNumber = number;

for (int i = 0; i < number; i++)

powedNumber = number * number;

Console.WriteLine("N^N = " + powedNumber);

var numberCounter = new int[10];

while (powedNumber != 0) {

var index = (int) (powedNumber % 10);

numberCounter[index]++;

powedNumber /= 10;

}

for (var i = 1; i < numberCounter.Count(); i++)

Console.WriteLine("Число - " + i + ", повторений - " + numberCounter[i]);

Console.ReadLine();

repeat = false;

}

catch (WrongNumberException2 ex) {

Console.WriteLine("Ошибка: " + "N должно быть в диапозоне от 1 до 1000, ай-яй-яй!");

Console.ReadLine();

repeat = true;

}

catch (Exception ex) {

Console.WriteLine("Ошибка: " + ex.Message);

Console.ReadLine();

repeat = true;

} } while (repeat);

} } }

ЗАДАЧА 2. РАБОТА СО СТРОКАМИ

Дана строка-предложение на русском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace lab1_2_voron_3var {

class Program {

static string UCFirst(string s) {

return s.Substring(0, 1).ToUpper() + s.Substring(1, s.Length-1);

}

static void Main(string[] args) {

String str = "Ах вот если бы да кабы ратный подвиг совершить! Мне бы только знамя шить.";

string[] elems = str.Split(new char[] { ' ' }); //new char[]{' ', ',', '!', '?', '.'}

for (int i = 0; i < elems.Length; i++) {

elems[i] = UCFirst(elems[i]);

}

Console.WriteLine("GO: "+string.Join(" ", elems));

Console.ReadLine();

Console.WriteLine("До: {0}", str);

char[] split = str.ToCharArray();

for (int n = 1; n < split.Length; n++)

if (split[n - 1] == ' ')

if (split[n] == 'ё') split[n] = 'Ё';

else split[n] = Convert.ToChar(Convert.ToInt32(split[n]) - 32);

String temp = new String(split);

Console.WriteLine("После: {0}", temp);

Console.ReadKey();

}}}

ЗАДАЧА 3. ПОИСК В МАССИВЕ

Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Lab3_voronina {

class Program {

static void Main(string[] args) {

int str;

Console.WriteLine("Введите размерность массива:");

str = Convert.ToInt32(Console.ReadLine());

int[] a = new int[str];

Console.Clear();

Random ran = new Random();

for (int i = 0; i < str; i++) {

a[i] = ran.Next(-15, 15);

Console.Write("{0}\t", a[i]);

Console.WriteLine();

}

Dictionary<int, int> dict = a.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count());

var max = dict.Aggregate((l, r) => l.Value > r.Value ? l : r);

if (max.Value == 1) {

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

}

else

Console.WriteLine("Больше всего встречается {0} - {1} раз", max.Key, max.Value);

Console.WriteLine();

Console.ReadLine();

}}}

ЗАДАЧА 4. ПЕРЕСТАНОВКА

Пользователь вводит массив: 2 3 4 1 7 9 12 8 9 10. Переставить элементы массива таким образом, чтобы суммы двух его частей отличались не более чем в 1,5 раза. Если этого сделать нельзя, то указать это.


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Text.RegularExpressions;

namespace DZ_4 {

class Program {

static void Main(string[] args) {

int[] arr1 = { 2, 3, 4, 1, 7, 9, 21, 8, 9, 1 };

int[] ms1 = new int[5]; int[] ms2 = new int[5]; double s = 1.5;

arr1 = arr1.OrderBy(n => Guid.NewGuid()).ToArray(); //рандомная перестановка элементов массива

for (int i = 0; i < arr1.Length / 2; i++) {

ms1[i] = arr1[i]; ms2[i] = arr1[i + arr1.Length / 2];

}

for (int j = 0; j < ms1.Length; j++) {

Console.Write(ms1[j] + " ");

}

Console.Write( "\n");

for (int j = 0; j < ms1.Length; j++) {

Console.Write(ms2[j] + " ");

}

int summa1 = 0; int summa2 = 0;

for (int i = 0; i < ms1.Length; ++i) {

summa1 = summa1 + ms1[i];

}

for (int i = 0; i < ms2.Length; ++i) {

summa2 = summa2 + ms2[i];

}

Console.WriteLine("\n");

if (summa1/summa2 >= s || summa2 / summa1 >=s) {

Console.WriteLine("Summa ms1 " + summa1 + "\n");

Console.WriteLine("Summa ms2 " + summa2 + "\n");

Console.WriteLine("Sorry, maybe another time! \n");

}

еlse {

Console.WriteLine("Summa ms2 " + summa2 + "\n");

Console.WriteLine("Summa ms1 " + summa1 + "\n");

}

Console.ReadKey();

}}}

ЗАДАЧА 5 .ВСТАВКА В МАССИВ

Дан массив размера N. Вставить ноль после каждого четного элемента и осуществить циклический сдвиг элементов массива вправо на одну позицию.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace DZ_5 {

class Program {

static void Main(string[] args) {

int str;

Console.WriteLine("Enter the number of elements in the array, please: ");

str = Convert.ToInt32(Console.ReadLine());

int[] arr = new int[str];

int[] arr2 = new int[str];

Console.Clear();

Random ran = new Random();

for (int i = 0; i < str; i++) {

arr[i] = ran.Next(-15, 15);

Console.Write("{0}\t", arr[i]);

Console.WriteLine();

}

Console.Write(" \n");

Console.Write(" Original : \n");

Console.WriteLine(String.Join(" ", arr));

for (int i = 0; i < arr.Length; i++) {

if (arr[i] % 2 == 0) {

Array.Resize(ref arr, arr.Length + 1);

for (int j = arr.Length - 1; j > i; j--) {

arr[j] = arr[j - 1];

}

arr[i + 1] = 0; i += 1;

}}

Console.Write(" With 0 : \n");

Console.WriteLine(string.Join(" ", arr));

Console.Write(" With cyclic shift: \n");

Console.WriteLine(string.Join(" ", RightShift(arr, 1)) + "\r\n");

Console.Write(" \n");

Console.ReadKey();

}

static int[] RightShift(int[] arr, int count) {

count = count % arr.Length;

int[] tmp = new int[arr.Length];

for (int i = arr.Length - 1; i >= 0; i--)

tmp[i] = arr[(i - count + arr.Length) % arr.Length];

return tmp;

}}}

ЗАДАЧА 6. УДАЛЕНИЕ ИЗ МАССИВА

Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Заменить серию, длина которой больше 3 , на один нулевой элемент.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace numbers {

class Program {

static void Main(string[] args) {

IList<int> answer = new List<int>();

Console.WriteLine("В каждой строчке напишите числа массива");

String currentLine;

while ((currentLine = Console.ReadLine()) != "") {

answer.Add(Convert.ToInt32(currentLine));

}

int lenght = 1;

for (int i = 0; i < answer.Count-1; i++) {

int temp = answer.ElementAt(i);

if (temp == answer.ElementAt(i + 1)) {

lenght++;

}

еlse {

if (lenght > 3) {

for (int g = i; g > i - lenght; g--) {

if (g == i - lenght + 1) {

List<int> first = new List<int>();

for (int a = 0; a < g; a++) {

first.Add(answer.ElementAt(a));

}

first.Add(0);

List<int> second = new List<int>();

for (int a = g + 1; a < answer.Count; a++) {

second.Add(answer.ElementAt(a));

}

first.AddRange(second);

answer = first;

}

еlse {

answer.RemoveAt(g);

}}}

lenght = 1;

}}

for (int i = 0; i < answer.Count; i++){

Console.WriteLine(answer.ElementAt(i));

}

Console.ReadKey();

}}}

ЗАДАЧА 7. ПОИСК И ПЕРЕСТАНОВКА В ДВУМЕРНОМ МАССИВЕ

Найти количество цифр, встречающихся в четных элементах массива больше одного раза и количество цифр в нечетных элементах массива, встречающихся больше одного раза. Определить, чего больше и вывести эти цифры с количеством.

using System;

namespace DZ_7 {

class Program {

static void Main(string[] args) {

Boolean chet = false;

int[] ChetNumber = new int[10]; int[] NeChetNumber = new int[10]; String number;

while ((number = Console.ReadLine())!= ""){

int temp = Convert.ToInt32(number);


if(temp < 10 && temp > -1){

if(chet) {

ChetNumber[temp]++;

}

else {

NeChetNumber[temp]++;

}}}

int chetcount = 0; int nechetcount = 0;

for(int I = 0; I < 10; I++){

if (ChetNumber[I]>1) {

chetcount++;

}

if (NeChetNumber[I]>1) {

nechetcount++;

}}

if (chetcount>nechetcount){

for(int i=0; i < ChetNumber.Length; i++){

if (i > 1){

Console.Write("{0}\t", ChetNumber[i]);

}}}

if (chetcount < nechetcount){

for (int i = 0; i < ChetNumber.Length; i++){

if (i > 1){

Console.Write("{0}\t", NeChetNumber[i]);

}}}

Console.WriteLine();

}}}

ЗАДАЧА 8. ВСТАВКА И УДАЛЕНИЕ В ДВУМЕРНОМ МАССИВЕ

Добавить в массив столбец нулей 0 после каждого столбца с элементом, большим по модулю среднего арифметического положительных элементов.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace DZ_8{

class Program{

static void Main(string[] args){

Console.OutputEncoding = Encoding.UTF8;

Console.Write("Введите количество столбцов: ");

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

while (columns < 1){

Console.Write("Введите значение больше 0: ");

columns = Convert.ToInt32(Console.ReadLine());

}

Console.Write("Введите количество строк: ");

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

while (rows < 1){

Console.Write("Введите значение больше 0: ");

rows = Convert.ToInt32(Console.ReadLine());

}

List<int> EmptyRow = makeZeroColumn(rows); //столбец нулей

List<List<int>> list = makeRandomList(rows, columns);

outputList(rows, list);

double average = calcAvgOfPositive(list);

if (average != 0){

Console.WriteLine("Средние значение положительных элементов равно = " + average);

for (int i = 0; i < list.Count; i++){

if (list[i].Exists(value => Math.Abs(value) > average)){

list.Insert(i + 1, EmptyRow);

}

}

Console.WriteLine("Выводим новый массив");

outputList(rows, list);

}

else Console.WriteLine("Нет положительных элементов.");

while (Console.ReadKey().Key != ConsoleKey.Escape) ;

}

private static void outputList(int rows, List<List<int>> list){

for (int rowIndex = 0; rowIndex < rows; rowIndex++) //вывод массива{

for (int columnIndex = 0; columnIndex < list.Count; columnIndex++){

Console.Write("{0,3} ", list[columnIndex][rowIndex].ToString());

}

Console.WriteLine();

}}

private static double calcAvgOfPositive(List<List<int>> columns){

return columns.SelectMany(row => row.FindAll(value => value > 0)).DefaultIfEmpty(0).Average();

}

private static List<List<int>> makeRandomList(int rows, int columns){

List<List<int>> Array = new List<List<int>>(); //динамический двумерный массив

Random rnd = new Random(); // переделано то, что забивается рандомом

for (int i = 0; i < columns; i++){

List<int> ArrayRow = new List<int>();

for (int j = 0; j < rows; j++){

ArrayRow.Add(rnd.Next(-10, 10));

}

Array.Add(ArrayRow);

}

return Array;

}

private static List<int> makeZeroColumn(int rows) {

List<int> EmptyRow = new List<int>();

for (int j = 0; j < rows; j++){

EmptyRow.Add(0);

}

return EmptyRow;

}}}

ЗАДАЧА 9. СОРТИРОВКИ МАССИВОВ

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace DZ_9{

class Program{

static void Main(string[] args){

int str, stol;

Console.WriteLine("Enter the number of rows, please:");

str = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Enter the number of columns, please:");

stol = Convert.ToInt32(Console.ReadLine());

int[,] arr = new int[str, stol];

Console.Clear();

Random ran = new Random();

for (int i = 0; i < str; i++) {

for (int j = 0; j < stol; j++){

arr[i, j] = ran.Next(-10, 10);

}

Console.WriteLine();

}

Console.WriteLine("Original \n \n");

Show(arr);

SortRow(arr);

Console.WriteLine("Sorting from left to right *Descendingly* \n \n");

Show(arr);

SortCol(arr);

Console.WriteLine("Sorting from top down *Descendingly* \n \n");

Show(arr);

Console.ReadKey();

}

static void SortRow(int[,] m){

List<int> t = new List<int>();

for (int i = 0; i < m.GetLength(0); i++){

for (int j = 0; j < m.GetLength(1); j++) t.Add(m[i, j]);

t = t.OrderByDescending(x => x).ToList();

for (int j = 0; j < m.GetLength(1); j++) m[i, j] = t[j];

t.Clear();

}

}

static void SortCol(int[,] m){

List<int> t = new List<int>();

for (int i = 0; i < m.GetLength(1); i++){

for (int j = 0; j < m.GetLength(0); j++) t.Add(m[j, i]);

t = t.OrderByDescending(x => x).ToList();

for (int j = 0; j < m.GetLength(0); j++) m[j, i] = t[j];

t.Clear();

}

}

static void Show(int[,] m){

for (int i = 0; i < m.GetLength(0); i++){

for (int j = 0; j < m.GetLength(1); j++){

Console.Write(m[i, j] + "\t");

}

Console.WriteLine();

}

Console.WriteLine();

}}}