Функции и массивы на C#
Практическая работа, 09 Декабря 2014, автор: пользователь скрыл имя
Описание работы
Задание
1) Получение практических навыков при работe с одномерными, многомерными и рваными массивами.
2) Получение практических навыков при работe с функциями, передаче данных в функции различными способами, получение результатов из функций различными способами.
3) Получение практических навыков при создании диалоговых консольных приложений.
Файлы: 1 файл
Отчет по ЛР1.docx
— 49.03 Кб (Скачать файл)
Отчет по практической работе №1 «Функции и массивы»
Задание
Получение практических навыков при работe с одномерными, многомерными и рваными массивами.
Получение практических навыков при работe с функциями, передаче данных в функции различными способами, получение результатов из функций различными способами.
Получение практических навыков при создании диалоговых консольных приложений.
Вариант |
Задание к одномерному массиву |
Задание к двумерному массиву |
Задание к рваному массиву |
17 |
Добавить после каждого четного элемента элемент со значением 0 |
Удалить все строки, в которых есть хотя бы один 0 |
Добавить К строк в конец массива |
Анализ задачи
Описание функции |
Входные данные |
Классы входных данных |
Выходные данные |
Работа с одномерным массивом |
|
Целое число> 0 |
Одномерный массив из целых чисел |
Формирование одномерного массива с помощью ДСЧ |
Целое число <=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;
}