Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 65

Поменять местами первую серию массива и его серию с номером K

26.04.2022, 14:47. Показов 1662. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Задачка по С#. Заранее спасибо)

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

Сам попытался сделать, дальше чем ввод массива и числа К не смог продвинуться)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int[] N;
            int[] C;
            int k; string s;
            Console.WriteLine("Введите целое число К:");
            s = Console.ReadLine();
            k = Convert.ToInt32(s);
 
            Console.WriteLine("Введите размер массива (N) и заполните");
            Enter(out N);
            Obr(ref N, out C);//Вызов подпрограммы Obr(N, C)
            Out("Измененный массив: ", ref C);
            Console.ReadKey();
        }
 
        static void Enter(out int[] N)
        {
 
            int n, a; string s;
            // вводим размер массива
            s = Console.ReadLine();
            n = Convert.ToInt32(s);
            N = new int[n];// определяем длинну массива
 
            for (int i = 0; i < n; i++) // запускаем цикл ввода элементов массива
            {
                s = Console.ReadLine();
                N[i] = Convert.ToInt32(s);
                a = N[i];
            }
        }
        static void Obr(ref int[] N, out int[] C)
        {
            ///// Тут происходят вычисления и тд.
            C = new int[ ];
        }
            static void Out(string text, ref int[] C)
            {
               //направление на вывод результата.  
            }
        }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.04.2022, 14:47
Ответы с готовыми решениями:

Поменять местами первую серию массива и его серию с номером K (С Паскаля на C#)
Помогите пожалуйста с переводом: {task array123} const maxSize=30; type Tarr=array of integer;

Поменять местами первую серию массива и его серию с номером K
Дано целое число K (&gt; 1) и целочисленный массив размера N. Поменять местами первую серию массива и его серию с номером K. Если серий в...

Поменять местами первую серию массива и его серию с номером K
Array123. Дано целое число K &gt; 1 и целочисленный массив размера N. Поменять местами первую серию массива и его серию с номером K. Если...

13
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
26.04.2022, 15:59
короче есть одномерный массив и нужно поменять 1й элемент массива с его K-м элементом, а если K-й элемент больше размера массива, то ничего не делать.... ясно... вот же преподы извращенцы, минут 7 ломал голову что тут сделать надо
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3412 / 2733 / 575
Регистрация: 04.09.2018
Сообщений: 8,581
Записей в блоге: 3
26.04.2022, 16:09
Цитата Сообщение от ololo111 Посмотреть сообщение
минут 7 ломал голову что тут сделать надо
И, видимо, не "доломал" )
Цитата Сообщение от Diman Alekseev Посмотреть сообщение
Серия - это группа подряд идущих одинаковых элементов
Серия - это непрерывная возрастающая или убывающая последовательность внутри последовательности (массива). Садись, два.
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
26.04.2022, 16:11
только зачем тут 2 массива, непонятно

Добавлено через 1 минуту
Цитата Сообщение от wizard41 Посмотреть сообщение
Серия - это группа подряд идущих одинаковых элементов
Серия - это непрерывная возрастающая или убывающая последовательность внутри последовательности (массива). Садись, два.
может он задание переписал, которое ему препод дал и у препода именно так в его понимании.... куда сложнее понять само задание и что хочет заказчик, чем сделать его
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3412 / 2733 / 575
Регистрация: 04.09.2018
Сообщений: 8,581
Записей в блоге: 3
26.04.2022, 16:12
Цитата Сообщение от ololo111 Посмотреть сообщение
может он задание переписал
Да, видимо так. И на счет преподов с вами согласен. Жгут.
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
26.04.2022, 16:26
Лучший ответ Сообщение было отмечено Diman Alekseev как решение

Решение

надеюсь так сойдёт
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
int[] N;
int k;
Console.Write("Введите целое число К: ");
k = Convert.ToInt32(Console.ReadLine());
 
Console.Write("Введите размер массива (N) и заполните ");
Enter(out N);
Obr(ref N, k);//Вызов подпрограммы Obr(N, C)
Out("Измененный массив: ", ref N);
Console.ReadKey();
 
void Enter(out int[] N)
{
    // вводим размер массива
    N = new int[Convert.ToInt32(Console.ReadLine())];// определяем длинну массива
    for (int i = 0; i < N.Length; i++) // запускаем цикл ввода элементов массива
        N[i] = Convert.ToInt32(Console.ReadLine());
}
 
void Obr(ref int[] N, int k)
{
    ///// Тут происходят вычисления и тд.
    if (k <= N.Length)
    {
        int x = N[0];
        N[0] = N[k - 1];
        N[k - 1] = x;
    }
}
void Out(string text, ref int[] N)
{
    foreach (int v in N)
        Console.Write($" {v}");
}
Добавлено через 1 минуту
а если нет, то пусть препод простыми словами объяснит что ему надо
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 65
27.04.2022, 06:18  [ТС]
ololo111, я задачу так понял: пример
К = 5
N = 1,3,5,6,7,5

новый массив: 5,1,5,6,7,5
то есть, если длина серии больше чем число К , то первый элемент массива поменяем местами со вторым, и после первое с числом К.
Если же длина серии меньше К например:
К = 9
N = 1,4,5,6
Новый массив: 1,4,5,6
то есть, выводим тот же массив. если не сложно, сделайте пожалуйста вот так)))

Добавлено через 14 минут
ololo111, и если можно, сделайте так чтобы результат выводился в методе out, а в методе main было только созданные масссивы и методы. например:
C#
1
2
3
4
5
6
7
8
9
static void Main(string[] args)
        {
            int[] N; // объявление массива N
            Enter(out N); //Вызов подпрограммы Enter(N)
            int[] C;// объявление массива С
            Obr(ref N, out C);//Вызов подпрограммы Obr(N,C)
            Out(ref C);//Вызов подпрограммы Out(C)
            Console.ReadKey();
        }
спасибо)

Добавлено через 5 минут
ololo111,
Цитата Сообщение от ololo111 Посмотреть сообщение
может он задание переписал, которое ему препод дал и у препода именно так в его понимании
. нет, я всё писал так как мне дал препод)))
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
27.04.2022, 08:30
в Out всё и выводится
Цитата Сообщение от ololo111 Посмотреть сообщение
C#
1
2
3
4
5
void Out(string text, ref int[] N)
{
    foreach (int v in N)
        Console.Write($" {v}");
}
чем гадать, лучше дай преподу на проверку, скорее всего это именно то что ему надо, сам помню как нам преподы непонятные сложнейшие задания давали, в которых по сути надо было найти максимальный элемент одномерного массива и вывести его

Добавлено через 1 минуту
в вижуал студио есть такая штука как "очистка кода", которая автоматом удаляет весь этот мусор:
C#
1
2
3
4
5
6
7
8
9
10
11
12
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 65
28.04.2022, 07:57  [ТС]
ololo111, хорошо, спасибо)

ololo111, подскажите пожалуйста, вот в коде который вы написали выше, я вставил в VS но там переменные N и K выдают ошибку, в методе Enter, Obr и Out. как это можно исправить?
0
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620
28.04.2022, 08:40
в этом коде нет ошибок
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
int[] N;
int k;
Console.Write("Введите целое число К: ");
k = Convert.ToInt32(Console.ReadLine());
 
Console.Write("Введите размер массива (N) и заполните ");
Enter(out N);
Obr(ref N, k);//Вызов подпрограммы Obr(N, C)
Out("Измененный массив: ", ref N);
Console.ReadKey();
 
void Enter(out int[] N)
{
    // вводим размер массива
    N = new int[Convert.ToInt32(Console.ReadLine())];// определяем длинну массива
    for (int i = 0; i < N.Length; i++) // запускаем цикл ввода элементов массива
        N[i] = Convert.ToInt32(Console.ReadLine());
}
 
void Obr(ref int[] N, int k)
{
    ///// Тут происходят вычисления и тд.
    if (k <= N.Length)
    {
        int x = N[0];
        N[0] = N[k - 1];
        N[k - 1] = x;
    }
}
void Out(string text, ref int[] N)
{
    foreach (int v in N)
        Console.Write($" {v}");
}
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 65
30.04.2022, 12:02  [ТС]
ololo111,
Цитата Сообщение от ololo111 Посмотреть сообщение
в этом коде нет ошибок
, а у меня переменную N и k показывает как ошибку
Миниатюры
Поменять местами первую серию массива и его серию с номером K  
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3412 / 2733 / 575
Регистрация: 04.09.2018
Сообщений: 8,581
Записей в блоге: 3
30.04.2022, 14:23
Цитата Сообщение от Diman Alekseev Посмотреть сообщение
то есть, если длина серии больше чем число К
При чем здесь длина серии и число k?
k - это порядковый номер серии в массиве, подлежащий обмену с первой серией, судя по тексту задания в топе.
Код ololo111 этой операции не делает.

Добавлено через 1 минуту
Diman Alekseev, сначала попробуйте найти количество серий в массиве и определить индекс элемента, с которого начинается k-серия.
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 65
01.05.2022, 11:26  [ТС]
ololo111,
Цитата Сообщение от Diman Alekseev Посмотреть сообщение
а у меня переменную N и k показывает как ошибку
как это можно исправить?

Добавлено через 1 минуту
wizard41,
Цитата Сообщение от wizard41 Посмотреть сообщение
При чем здесь длина серии и число k?
как непричём? это требование в задании
Цитата Сообщение от Diman Alekseev Посмотреть сообщение
Дано целое число K и целочисленный массив размера N.
Поменять местами первую серию массива и его серию с номером K.
Если серий в массиве меньше K, то вывести массив без изменений.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3412 / 2733 / 575
Регистрация: 04.09.2018
Сообщений: 8,581
Записей в блоге: 3
01.05.2022, 14:36
Цитата Сообщение от Diman Alekseev Посмотреть сообщение
как непричём?
как длина серии связана с числом k?

Добавлено через 1 час 23 минуты
Diman Alekseev, для начала, вам в помощь метод, подсчитывающий кол-во серий в массиве, согласно вашему заданию:
C#
1
2
3
4
5
6
7
8
9
10
static int GetSeriesCount( int[] arr )
{
    if ( arr.Length == 0 ) return 0;
            
    int cnt = 1;
    for ( int i = 0; i < arr.Length - 1; i++ )
        if ( arr[ i ] != arr[ i + 1 ] )
            cnt++;
    return cnt;
}
Проверяем:
C#
1
2
3
4
5
6
7
8
9
10
11
12
public static void Test()
{
    Console.WriteLine( "<-- Количество серий в массиве -->\n" );
    int[] Arr = FillRandomLinq( 10 );
    Console.WriteLine( "Рандомный массив:" );
    Print( Arr );
    Console.Write( $"\nКоличество серий: {GetSeriesCount( Arr )}\n" );
    Console.WriteLine( "\nМассив с тремя сериями:" );
    Arr = new int[] { 1, 1, 1, 2, 2, 2, 2, 2, 3, 3 };
    Print( Arr );
    Console.Write( $"\nКоличество серий: {GetSeriesCount( Arr )}" );
}
Вывод в консоль:
Code
1
2
3
4
5
6
7
8
9
10
11
<-- Количество серий в массиве -->
 
Рандомный массив:
98, 44, 14, 86, 59, 31, 20, 1, 27, 0
 
Количество серий: 10
 
Массив с тремя сериями:
1, 1, 1, 2, 2, 2, 2, 2, 3, 3
 
Количество серий: 3
Попробуйте "допилить" метод, чтобы он возвращал индекс начала k-серии и ее длину.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.05.2022, 14:36
Помогаю со студенческими работами здесь

Поменять местами первую серию массива и его серию с номером K
3. Дано целое число K (&gt; 1) и целочисленный массив размера N. Поменять местами первую серию массива и его серию с номером K. Если серий в...

Поменять местами первую серию массива и его серию с номером К
Помогите справится с задачкой. Заранее вам спасибо. Дано целое число К (&gt;1) и целочисленный массив размера N. Поменять местами первую...

Поменять местами первую серию массива и его серию с номером K
Дано целое число K (&gt; 1) и целочисленный массив размера N. Поменять местами первую серию массива и его серию с номером K. Если серий в ...

Поменять местами первую серию массива и его серию с номером K
Дано целое число K (&gt; 1) и целочисленный массив размера N. Поменять местами первую серию массива и его серию с номером K (определение серии...

Поменять местами первую серию массива и его серию с номером K
Дано целое число K (&gt; 1) и целочисленный массив размера N. Поменять местами первую серию* массива и его серию с номером K. Если серий*...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru