Функции и массивы на C#

Автор работы: Пользователь скрыл имя, 09 Декабря 2014 в 10:34, практическая работа

Описание работы

Задание
1) Получение практических навыков при работe с одномерными, многомерными и рваными массивами.
2) Получение практических навыков при работe с функциями, передаче данных в функции различными способами, получение результатов из функций различными способами.
3) Получение практических навыков при создании диалоговых консольных приложений.

Файлы: 1 файл

Отчет по ЛР1.docx

— 49.03 Кб (Скачать файл)

 

 

Отчет по практической работе №1 «Функции и массивы»

Задание

  1. Получение практических навыков при работe с одномерными, многомерными и рваными массивами.

  1. Получение практических навыков при работe с функциями, передаче данных в функции различными способами, получение результатов из функций различными способами.

  1. Получение практических навыков при создании диалоговых консольных приложений.

 

Вариант

Задание к одномерному массиву

Задание к двумерному массиву

Задание к рваному массиву

17

Добавить после каждого четного элемента элемент со значением 0

Удалить все строки, в которых есть хотя бы один 0

Добавить К строк в конец массива


 

Анализ задачи

 

Описание функции

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

Классы входных данных

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

Работа с одномерным массивом

  • Количество элементов в массиве

Целое число> 0

Одномерный массив из целых чисел

Формирование одномерного массива с помощью ДСЧ

Целое число <=0

  • Сообщение об ошибке
  • null

Символ

Вещественное число

Формирование массива с клавиатуры

  • Ряд чисел, вводимых через пробел
  • Целое число
  • Разделяется на лексемы и создается массив чисел
  • Символ, вещественное число
  • Сообщение об ошибке

Печать массива

  • Массив

Массив не пустой

Массив напечатан

Массив пустой

Сообщение об ошибке

Добавление после каждого четного числа 0

  • Массив
  • Массив пустой
  • Есть четные элементы
  • Нет четных элементов
  • Массив не пустой
  • Измененный массив

Массив пустой

  • Сообщение об ошибке,
  • Массив и его размер не меняется
  • Четные числа не найдены
  • Сообщение о том, что четных элементов нет
  • Массив не изменился
  • Четные числа найдены
  • Добавляем после каждого четного элемента 0
  • Изменяется массив и его размер

Работа с двумерным массивом

  • Количество элементов в массиве [size x size]
  • Целое число> 0
  • Генерируется двумерная матрица [size x size]
  • Целое число <=0
  • Ошибка о некорректности ввода
  • null
  • Символ
  • Вещественное число

Печать массива

  • Массив
  • Массив не пустой
  • Массив напечатан
  • Массив пустой
  • Сообщение об ошибке

Удаление строк с нулями

  • Массив
  • Массив пустой
  • Сообщение о том, что негде искать
  • Массив не пустой
  • Ищем строки с нулями
  • Найдены строки с нулями
  • Удаляем. Массив становится меньше
  • Строк с нулями не найдено
  • Массив не меняется. Сообщение о не успешности выполнения задания

Работа с рваным массивом

  • Количество строк в массиве
  • Заполняем строки ДСЧ
  • Строки создаются ДСЧ
  • Заполняем строки вручную: вводим числа через пробел
  • Разделяем на лексемы и записываем в строку
  • Символ
  • Сообщение об ошибке
  • Вещественное число
  • Сообщение об ошибке

Формирование массива с клавиатуры

  • В каждую строку вводим ряд чисел, через пробел
  • Целое число
  • Разделяется на лексемы и создается массив чисел
  • Символ, вещественное число
  • Сообщение об ошибке

Печать массива

  • Массив
  • Массив не пустой
  • Массив напечатан
  • Массив пустой
  • Сообщение об ошибке

Добавление К строк в конец массива

  • Массив
  • Массив пустой
  • Нельзя добавлять
  • Массив не пустой
  • Добавляем
  • К = 0
  • Решили ничего не добавлять. Сообщение пользователю. Массив не изменился.
  • К != 0
  • Добавляем К строк, заполняем из ДСЧ. Массив изменился.

 

 

Блок-схема функции Main()

 

Программа

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

// настроить чтобы можно было вводить элементы строкой, а не запрашивать их количество

 

namespace PrLab1_5

{

    class Program

    {

        static Random rnd;

 

        static int[] CreateOneMasRand(int size)

        {

            Console.WriteLine("Создаю одномерный массив из [" + size + "] элементов");

            int[] resOneMas;

            resOneMas = new int[size];

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

                resOneMas[i] = rnd.Next(-50, 49);

            return resOneMas;

        }

 

        static int[] CreateOneMasOut()

        {

            int[] resOneMas = null;

            bool ok = false;

            do

            {

                try

                {

                    Console.WriteLine("Введите элементы массива через пробел:");

                    String[] s = Console.ReadLine().Trim().Split();

                    resOneMas = new int[s.Length];

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

                        resOneMas[i] = Convert.ToInt32(s[i]);

                    Console.WriteLine();

                    ok = true;

                }

                catch (FormatException)

                {

                    Console.WriteLine("Ошибка! Ну зачем же вводить буквы? Вводите строку заново :)");

                    ok = false;

                }

            } while (!ok);

            return resOneMas;

        }

 

        static int[,] createTwoMasRand(int size)

        {

            Console.WriteLine("Создаю двумерный массив из [" + size + ", " + size + "] элементов");

            int[,] resTwoMas;

            resTwoMas = new int[size, size];

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

                for (int j = 0; j < size; j++)

                    resTwoMas[i, j] = rnd.Next(-50, 49);

            return resTwoMas;

        }

 

        static int[][] createRaggedMasOut(int size)

        {

            bool ok = false;

            Console.WriteLine("Создаю рваный массив из [" + size + "] строк");

            int[][] resRagMas;

            resRagMas = new int[size][];

            for (int i = 0, num = 1; i < size; i++, num++)

            {

                do

                {

                    try

                    {

                        Console.WriteLine("Введите элементы [" + num + "] строки:");

                        String[] s = Console.ReadLine().Trim().Split();

                        resRagMas[i] = new int[s.Length];

                        for (int j = 0, k = 0; k < s.Length && j < resRagMas[i].Length; j++, k++)

                            resRagMas[i][j] = Convert.ToInt32(s[k]);

                        Console.WriteLine();

                        ok = true;

                    }

                    catch (FormatException)

                    {

                        Console.WriteLine("Ошибка! Ну зачем же вводить буквы? Вводите строку заново :)");

                        ok = false;

                    }

                } while (!ok);

            }

            return resRagMas;

        }

 

        static int[][] createRaggedMasRand(int size)

        {

            Console.WriteLine("Создаю рваный массив из [" + size + "] строк и заполняю его случайными числами");

            int[][] resRagMas;

            resRagMas = new int[size][];

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

            {

                resRagMas[i] = new int[rnd.Next(1, 10)];

                for (int j = 0; j < resRagMas[i].Length; j++)

                {

                    resRagMas[i][j] = rnd.Next(-50, 49);

                }

            }

            return resRagMas;

        }

 

        static int[] Task1 (int[] mas)

        {

            int counter = 0;

            int newSize = 0;

            int[] newMas = null;

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

            {

                if (mas[i] % 2 == 0)

                    counter++;

            }

            if (counter == 0)

            {

                Console.WriteLine("Четных чисел не обнаружено");

                newMas = mas;

            }

            else

            {

                newSize = mas.Length + counter;

                newMas = new int[newSize];

                for (int i = 0, j = 0; i < mas.Length; i++)

                {

                    if (mas[i] % 2 == 0)

                    {

                        newMas[j] = mas[i];

                        j++;

                        newMas[j] = 0;

                        j++;

                    }

                    else

                    {

                        newMas[j] = mas[i];

                        j++;

                    }

                }

            }

            return newMas;

        }

 

        static int[,] Task2(int[,] mas)

        {

            int[,] newmas = null;

            int counter = 0;

            bool noolElementHere=false;

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

            {

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

                {

                    if (mas[i,j] == 0)

                    {

                        counter++;

                    }

                }

            }

            if (counter == 0)

            {

                Console.WriteLine("Строк с 0 не обнаружено");

                return mas;

            }

            else

            {

                newmas = new int[mas.GetLength(0) - counter, mas.GetLength(1)];

                for (int i = 0, p = 0; i < mas.GetLength(0); i++)

                {

                    noolElementHere = false;

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

                    {

                        if (mas[i, j] == 0)

                        {

                            noolElementHere = true;

                        }

                    }

                    if (noolElementHere == false)

                    {

                        for (int k = 0; k < mas.GetLength(1); k++)

                        {

                            newmas[p, k] = mas[i, k];

                        }

                        p++;

                    }

                }

                return newmas;

            }

        }

 

        static int[][] Task3 (int[][] mas)

        {

            int k = WhatK();

            int newSize = mas.Length + k;

            int[][] memoryMas = new int[newSize][];

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

            {

                memoryMas[i] = new int[mas[i].Length];

                for (int j = 0; j < memoryMas[i].Length; j++)

                    memoryMas[i][j] = mas[i][j];

            }

            if (k != 0)

            {

                Console.WriteLine("ПРЕДУПРЕЖДЕНИЕ! Я заполняю новые строки случайными числами!");

                //memoryMas[mas.Length] = new int[rnd.Next(1, 10)];

                for (int i = mas.Length; i < memoryMas.Length; i++)

                {

                    memoryMas[i] = new int[rnd.Next(1, 10)];

                    for (int j = 0; j < memoryMas[i].Length; j++)

                        memoryMas[i][j] = rnd.Next(10, 99);

                }

            }

            else

            {

                Console.WriteLine("Так как вы решили не добавлять строки, массив остался неизменен.");

            }

            return memoryMas;

        }

 

        static int WhatK()

        {

            Console.WriteLine("Сколько строк надо добавить?");

            int K = 0;

            bool ok = false;

            do

            {

                try

                {

                    Console.Write("K = ");

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

                    Console.WriteLine();

                    ok = true;

                }

                catch (FormatException)

                {

                    Console.WriteLine("Ошибка! Вы ввели букву! Введите число!");

                    ok = false;

                }

                if (ok)

                {

                    if (K < 0)

                    {

                        Console.WriteLine("Нужно ввести положительное число. Попробуйте снова");

                        ok = false;

                    }

                    if (K == 0)

                    {

                        Console.WriteLine("Не будем ничего добавлять");

                    }

                    if (K >= 10)

                    {

                        Console.WriteLine("Ух... Давайте не будем добавлять так много?");

                        ok = false;

                    }

                }

            } while (!ok);

            return K;

        }

 

        static int WhatSize()

        {

            int size = 0;

            bool ok = false;

            do

            {

                try

                {

                    Console.Write("Size = ");

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

                    Console.WriteLine();

                    ok = true;

                }

                catch (FormatException)

                {

                    Console.WriteLine("Ошибка! Вы ввели букву! Введите число!");

                    ok = false;

                }

                if (ok)

                {

                    if (size < 0)

                    {

                        Console.WriteLine("Нужно ввести положительное число. Попробуйте снова");

                        ok = false;

                    }

                    if (size == 0)

                    {

                        Console.WriteLine("Массив пуст");

                    }

                    if (size >= 100)

                    {

                        Console.WriteLine("Давайте создадим массив поменьше? :)");

                        ok = false;

                    }

                }

            } while (!ok);

            return size;

        }

 

        static int HowWrite()

        {

            int answer = 0;

            bool ok =  false;

            Console.WriteLine("Как я получу данные?");

            Console.WriteLine("1 - ручной ввод");

            Console.WriteLine("2 - случайные числа");

            do

            {

                try

                {

                    Console.Write("Ваш выбор > ");

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

                    Console.WriteLine();

                    ok = true;

                }

                catch (FormatException)

                {

                    Console.WriteLine("Ошибка! Вы ввели букву! Введите число!");

                    ok = false;

                }

 

                if (ok)

                {

                    if ((answer < 1) || (answer >= 3))

                    {

                        Console.WriteLine("Ошибка! Такой команды нет. Попробуйте снова");

                        ok = false;

Информация о работе Функции и массивы на C#