Пожалуйста помогите с программированием в Visual Studio 2012. 1. Дан массив целых чисел из n элементов,...

Тематика Информатика
Уровень 10 - 11 классы
программирование Visual Studio 2012 массив алгоритмы числа удаление элементов вставка элементов перенос элементов случайные числа C++ задачи программирования
0

Пожалуйста помогите с программированием в Visual Studio 2012.

  1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-135,175]. Удалить из него все элементы, первая и последняя цифра которых четная.

  2. Вставить число К1 после всех элементов, больших заданного числа, а число К2 – после всех элементов, кратных пяти.

  3. Перенести первые k элементов в конец: a[k+1], a[k+2], . ,a[n], a[2], ., a[k].

avatar
задан 6 дней назад

3 Ответа

0

Вот краткие примеры кода на C# для решения ваших задач в Visual Studio 2012.

  1. Удаление элементов, первая и последняя цифры которых четные:
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        Random rand = new Random();
        int n = 10; // Задайте нужный размер массива
        int[] array = Enumerable.Range(0, n).Select(_ => rand.Next(-135, 176)).ToArray();

        array = array.Where(x => !(IsEvenDigit(GetFirstDigit(x)) && IsEvenDigit(GetLastDigit(x)))).ToArray();

        Console.WriteLine(string.Join(", ", array));
    }

    static int GetFirstDigit(int number) => Math.Abs(number).ToString()[0] - '0';
    static int GetLastDigit(int number) => Math.Abs(number) % 10;
    static bool IsEvenDigit(int digit) => digit % 2 == 0;
}
  1. Вставка K1 после всех элементов, больших заданного числа, и K2 после всех элементов, кратных пяти:
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        Random rand = new Random();
        int n = 10; // Задайте нужный размер массива
        int[] array = Enumerable.Range(0, n).Select(_ => rand.Next(-135, 176)).ToArray();

        int k1 = 100; // Задайте значение K1
        int k2 = 200; // Задайте значение K2
        int threshold = 50; // Задайте порог для вставки K1

        List result = new List();
        foreach (var item in array)
        {
            result.Add(item);
            if (item > threshold)
                result.Add(k1);
            if (item % 5 == 0)
                result.Add(k2);
        }

        Console.WriteLine(string.Join(", ", result));
    }
}
  1. Перенос первых k элементов в конец массива:
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        Random rand = new Random();
        int n = 10; // Задайте нужный размер массива
        int k = 3; // Задайте количество элементов для переноса
        int[] array = Enumerable.Range(0, n).Select(_ => rand.Next(-135, 176)).ToArray();

        int[] result = array.Skip(k).Concat(array.Take(k)).ToArray();

        Console.WriteLine(string.Join(", ", result));
    }
}

Эти примеры кода демонстрируют, как решать каждую из ваших задач с использованием языка C#. Не забудьте проверить размеры массива и значения переменных по вашему усмотрению.

avatar
ответил 6 дней назад
0

Для решения поставленных задач в Visual Studio 2012 на языке C#, вам нужно будет написать программу, которая выполняет все три пункта. Ниже приведен пример кода, который решает указанные задачи:

using System;

class Program
{
    static void Main(string[] args)
    {
        Random rand = new Random();
        int n = 20; // Размер массива
        int[] array = new int[n];

        // 1. Заполнение массива случайными числами из диапазона [-135, 175]
        for (int i = 0; i < n; i++)
        {
            array[i] = rand.Next(-135, 176);
        }

        Console.WriteLine("Исходный массив:");
        PrintArray(array);

        // Удаление элементов, первая и последняя цифра которых четные
        array = RemoveElementsWithEvenFirstAndLastDigit(array);
        Console.WriteLine("Массив после удаления элементов с четной первой и последней цифрой:");
        PrintArray(array);

        // Ввод K1, K2 и заданного числа
        Console.Write("Введите K1: ");
        int K1 = int.Parse(Console.ReadLine());
        Console.Write("Введите K2: ");
        int K2 = int.Parse(Console.ReadLine());
        Console.Write("Введите заданное число для сравнения: ");
        int comparisonNumber = int.Parse(Console.ReadLine());

        // Вставка K1 и K2 в массив
        array = InsertNumbers(array, K1, K2, comparisonNumber);
        Console.WriteLine("Массив после вставки K1 и K2:");
        PrintArray(array);

        // Перенос первых k элементов в конец
        Console.Write("Введите количество элементов для переноса (k): ");
        int k = int.Parse(Console.ReadLine());
        array = MoveFirstKElementsToEnd(array, k);
        Console.WriteLine("Массив после переноса первых k элементов в конец:");
        PrintArray(array);
    }

    static void PrintArray(int[] array)
    {
        foreach (var item in array)
        {
            Console.Write(item + " ");
        }
        Console.WriteLine();
    }

    static int[] RemoveElementsWithEvenFirstAndLastDigit(int[] array)
    {
        // Создаем список для хранения оставшихся элементов
        var list = new System.Collections.Generic.List();

        foreach (var number in array)
        {
            if (!HasEvenFirstAndLastDigit(number))
            {
                list.Add(number);
            }
        }

        return list.ToArray();
    }

    static bool HasEvenFirstAndLastDigit(int number)
    {
        // Приводим число к положительному виду для обработки
        number = Math.Abs(number);
        string strNumber = number.ToString();
        int firstDigit = (int)char.GetNumericValue(strNumber[0]);
        int lastDigit = (int)char.GetNumericValue(strNumber[strNumber.Length - 1]);

        return (firstDigit % 2 == 0) && (lastDigit % 2 == 0);
    }

    static int[] InsertNumbers(int[] array, int K1, int K2, int comparisonNumber)
    {
        var list = new System.Collections.Generic.List(array);

        for (int i = 0; i < list.Count; i++)
        {
            if (list[i] > comparisonNumber)
            {
                list.Insert(i + 1, K1);
                i++; // Пропускаем вставленный элемент
            }
            if (list[i] % 5 == 0)
            {
                list.Insert(i + 1, K2);
                i++; // Пропускаем вставленный элемент
            }
        }

        return list.ToArray();
    }

    static int[] MoveFirstKElementsToEnd(int[] array, int k)
    {
        if (k < 0 || k >= array.Length)
        {
            throw new ArgumentOutOfRangeException("k", "k должно быть в пределах от 0 до размера массива.");
        }

        // Создаем новый массив для результата
        int[] result = new int[array.Length];
        Array.Copy(array, k, result, 0, array.Length - k); // Копируем элементы с k до конца
        Array.Copy(array, 0, result, array.Length - k, k); // Копируем первые k элементов

        return result;
    }
}

Пояснение кода:

  1. Заполнение массива: Используется класс Random для заполнения массива случайными числами в заданном диапазоне.

  2. Удаление элементов: Создается метод RemoveElementsWithEvenFirstAndLastDigit, который проверяет, являются ли первая и последняя цифра четными. Если нет, элемент добавляется в новый список.

  3. Вставка чисел: Метод InsertNumbers проходит по массиву и вставляет K1 после всех элементов, больших заданного числа, и K2 после элементов, кратных 5.

  4. Перемещение элементов: Метод MoveFirstKElementsToEnd создает новый массив, в который копируются элементы с позиции k и затем первые k элементов.

Использование:

  1. Скопируйте этот код в проект Visual Studio 2012.
  2. Запустите программу и следуйте инструкциям в консоли для ввода необходимых значений.

Эта программа решает все три задачи, используя простые методы и классы.

avatar
ответил 6 дней назад
0

Рассмотрим решение поставленных задач с использованием языка программирования C# в среде разработки Visual Studio 2012. Предполагается, что вы имеете базовые знания языка программирования C#. Ниже приведен подробный алгоритм решения.

1. Удаление элементов массива, у которых первая и последняя цифра четные

Чтобы определить первую и последнюю цифру числа:

  • Последняя цифра находится как остаток от деления числа на 10 (num % 10).
  • Первая цифра находится путем итеративного деления числа на 10, пока оно не станет меньше 10.

При удалении элементов создаем новый массив, в который копируем только те элементы, которые удовлетворяют условиям.

Код для задачи 1:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // Задаем массив случайных чисел
        Random random = new Random();
        int n = 20; // размер массива
        int[] array = new int[n];
        for (int i = 0; i < n; i++)
        {
            array[i] = random.Next(-135, 176); // диапазон [-135, 175]
        }

        Console.WriteLine("Исходный массив:");
        Console.WriteLine(string.Join(", ", array));

        // Удаляем элементы, у которых первая и последняя цифры четные
        List resultArray = new List();
        foreach (int num in array)
        {
            int absNum = Math.Abs(num); // Берем модуль числа
            int lastDigit = absNum % 10; // Последняя цифра
            int firstDigit = absNum;
            while (firstDigit >= 10)
            {
                firstDigit /= 10;
            }

            // Проверяем условие
            if (!(firstDigit % 2 == 0 && lastDigit % 2 == 0))
            {
                resultArray.Add(num);
            }
        }

        Console.WriteLine("Массив после удаления элементов:");
        Console.WriteLine(string.Join(", ", resultArray));
    }
}

2. Вставка чисел K1 и K2

Задача подразумевает вставку:

  • Числа K1 после всех элементов, которые больше заданного числа (например, threshold).
  • Числа K2 после всех элементов, которые кратны 5.

Для этого создадим новый массив, итерируемся по старому, добавляем элементы и вставляем числа K1 и K2 по указанным условиям.

Код для задачи 2:

static void InsertNumbers(int[] array, int K1, int K2, int threshold)
{
    List modifiedArray = new List();

    foreach (int num in array)
    {
        modifiedArray.Add(num);
        if (num > threshold)
        {
            modifiedArray.Add(K1);
        }
        if (num % 5 == 0)
        {
            modifiedArray.Add(K2);
        }
    }

    Console.WriteLine("Массив после вставки чисел K1 и K2:");
    Console.WriteLine(string.Join(", ", modifiedArray));
}

// Вызов функции InsertNumbers
InsertNumbers(array, 999, 555, 50);

3. Перенос первых k элементов в конец массива

Для выполнения этой задачи мы можем использовать операции среза массива. Если k — количество элементов, которые нужно переместить, то:

  • Первые k элементов массива извлекаются и записываются в конец.
  • Оставшиеся элементы остаются на своих местах.

Код для задачи 3:

static int[] MoveFirstKToEnd(int[] array, int k)
{
    if (k = array.Length)
    {
        return array; // Если k некорректно, возвращаем массив без изменений
    }

    int[] firstPart = array.Take(k).ToArray(); // Первые k элементов
    int[] secondPart = array.Skip(k).ToArray(); // Остальные элементы
    return secondPart.Concat(firstPart).ToArray();
}

// Вызов функции MoveFirstKToEnd
int k = 5; // Количество элементов для переноса
int[] modifiedArray = MoveFirstKToEnd(array, k);

Console.WriteLine("Массив после переноса первых k элементов в конец:");
Console.WriteLine(string.Join(", ", modifiedArray));

Полный код программы:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // 1. Создаем массив случайных чисел
        Random random = new Random();
        int n = 20; // Размер массива
        int[] array = new int[n];
        for (int i = 0; i < n; i++)
        {
            array[i] = random.Next(-135, 176); // Диапазон [-135, 175]
        }

        Console.WriteLine("Исходный массив:");
        Console.WriteLine(string.Join(", ", array));

        // 2. Удаляем элементы, у которых первая и последняя цифры четные
        List resultArray = new List();
        foreach (int num in array)
        {
            int absNum = Math.Abs(num);
            int lastDigit = absNum % 10;
            int firstDigit = absNum;
            while (firstDigit >= 10)
            {
                firstDigit /= 10;
            }

            if (!(firstDigit % 2 == 0 && lastDigit % 2 == 0))
            {
                resultArray.Add(num);
            }
        }

        Console.WriteLine("Массив после удаления элементов:");
        Console.WriteLine(string.Join(", ", resultArray));

        // 3. Вставляем числа K1 и K2
        int K1 = 999, K2 = 555, threshold = 50;
        List modifiedArray = new List();

        foreach (int num in resultArray)
        {
            modifiedArray.Add(num);
            if (num > threshold)
            {
                modifiedArray.Add(K1);
            }
            if (num % 5 == 0)
            {
                modifiedArray.Add(K2);
            }
        }

        Console.WriteLine("Массив после вставки чисел K1 и K2:");
        Console.WriteLine(string.Join(", ", modifiedArray));

        // 4. Перенос первых k элементов в конец
        int k = 5;
        int[] finalArray = MoveFirstKToEnd(modifiedArray.ToArray(), k);

        Console.WriteLine("Массив после переноса первых k элементов в конец:");
        Console.WriteLine(string.Join(", ", finalArray));
    }

    static int[] MoveFirstKToEnd(int[] array, int k)
    {
        if (k = array.Length)
        {
            return array;
        }

        int[] firstPart = array.Take(k).ToArray();
        int[] secondPart = array.Skip(k).ToArray();
        return secondPart.Concat(firstPart).ToArray();
    }
}

Пояснение:

  1. Генерация массива: Используем Random для заполнения массива случайными числами в диапазоне [-135, 175].
  2. Удаление элементов: Проверяем первую и последнюю цифры каждого элемента. Если обе четные, элемент исключается.
  3. Вставка чисел K1 и K2: Используем условия для вставки чисел.
  4. Перенос элементов: Используем функции Take, Skip, Concat для формирования нового массива.

Скомпилируйте и выполните этот код в Visual Studio 2012, чтобы протестировать решение.

avatar
ответил 6 дней назад

Ваш ответ

Вопросы по теме