Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373

Поменять числа местами

15.11.2018, 10:19. Показов 5521. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте. помогите решить задачу. Дано четырехзначное число. Переставьте местами цифры так, чтобы сначала оказались цифры, меньшие пяти.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2018, 10:19
Ответы с готовыми решениями:

Поменять местами числа в очереди
Random rnd = new Random(); int n = 20; Queue<int> random = new Queue<int>(); while (n-- > 0) ...

Поменять местами цифры числа
Приветики! Помогите, пожалуйста, решить задачу! Поменять места наибольшую и наименьшую цифры числа, учитывая, что в числе все цифры...

Как поменять местами числа в файле
Помогите пожалуйста! Допустим у нас есть дата 20090816 как ее заменить на 16082009 и записать в файл. Спасибо!

7
5 / 2 / 3
Регистрация: 04.11.2018
Сообщений: 12
15.11.2018, 16:47
Можно перевести число в строку, проитерироваться по строке,поменяв символы как надо и затем конверитровать строку в число
0
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
15.11.2018, 17:31  [ТС]
Я не знаю каким образом это можно реализовать
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
15.11.2018, 17:37
там лисопед
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
 
namespace Test
{
    public class Test
    {
        public static void Main()
        {
            Test test = new Test();
 
            int number = 178716543;
 
            var array = test.GetNumbers(number);
 
            test.Ordered(array);
 
            var result = test.GetNumber(array);
 
            Console.WriteLine(result);
 
            Console.ReadLine();
        }
 
        private int[] GetNumbers(int number)
        {
            int tmp = number;
            int count = 0;
 
            while(tmp > 0)
            {
                count++;
 
                tmp /= 10;
            }
 
            int[] result = new int[count];
 
            count = 0;
 
            while (number > 0)
            {
                tmp = number / 10;
 
                result[count++] = number - tmp * 10;
 
                number = tmp;
            }
 
            return result;
        }
 
        private int GetNumber(int[] array)
        {
            int result = 0;
 
            for (int index = 0; index < array.Length; index++)
            {
                var tmp = 1;
 
                for (int i = 0; i < index; i++)
                {
                    tmp *= 10;
                }
 
                result += array[index] * tmp;
            }
 
            return result;
        }
 
        private void Ordered(int[] array)
        {
            int buf;
            for (int i = 0; i < array.Length - 1; i++)
            {
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[i] < 5)
                    {
                        buf = array[i];
                        array[i] = array[j];
                        array[j] = buf;
                    }
                }
            }
        }
    }
}
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
15.11.2018, 19:32
Лучший ответ Сообщение было отмечено DragonBorn88 как решение

Решение

С экрана хоть знаете, как вводить, или не получится?
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
using System;
 
namespace Question2351632
{
    class Program
    {
        static void Main(string[] args)
        {
            var str = 6481.ToString();
            var less5 = "";
            var more5 = "";
            foreach (var chr in str)
            {
                if (chr < 53)
                    less5 += chr;
                else
                    more5 += chr;
 
            }
            var result = less5 + more5;
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }
}
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
15.11.2018, 20:25
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
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int value = 862367;
 
            Stack<int> stack1 = new Stack<int>();
            Stack<int> stack2 = new Stack<int>();
 
            foreach (int digit in GetDigits(value))
            {
                if (digit < 5)
                    stack1.Push(digit);
                else
                    stack2.Push(digit);
            }
 
            int[] arr = stack1.Concat(stack2).ToArray();
 
            int result = 0;            
 
            for (int i = 0; i < arr.Length; i++)
            {
                int multiplier = (int)Math.Pow(10, arr.Length - i - 1);
                result += arr[i] * multiplier;
            }               
 
            Console.WriteLine(result);
 
            Console.ReadKey(true);
        }
 
        static IEnumerable<int> GetDigits(int value)
        {
            do
            {
                yield return value % 10;
                value /= 10;
            }
            while (value != 0);
        }
    }
}
Добавлено через 5 минут
DragonBorn88, кстати, как быть с нулем? например с 8602?
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
15.11.2018, 20:57
Woldemar89, Linq не спортивно, а то можно и в один запрос сделать xD

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void Main()
{
    int number = 27482734;
 
    int result = new int[] { number }.Aggregate(new List<int>(12), (i, j) =>
    {
        while(j > 0)
        {
            i.Add(j % 10);
            j /= 10;
        }
 
        return i;
    })
    .OrderBy(n => n < 5)
    .Select((n, i) => new { Number = n, Index = i })
    .Aggregate(0, (i, j) => i + j.Number * (int)Math.Pow(10, j.Index));
 
    Console.WriteLine(result);
 
    Console.ReadLine();
}
А чуть подправить, и вовсе любой массив повернуть, это решение под одно число на входе и выходе.
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
15.11.2018, 21:18
Цитата Сообщение от EveKS Посмотреть сообщение
Linq не спортивно
Ок
Без LINQ
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
54
55
56
57
58
using System;
using System.Collections.Generic;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int value = 862367;
 
            Stack<int> stack1 = new Stack<int>();
            Stack<int> stack2 = new Stack<int>();
 
            foreach (int digit in GetDigits(value))
            {
                if (digit < 5)
                    stack1.Push(digit);
                else
                    stack2.Push(digit);
            }
 
            int[] arr1 = stack1.ToArray();
            int[] arr2 = stack2.ToArray();
 
            int totalCount = arr1.Length + arr2.Length;
 
            int result = 0;
            int y = 0;
 
            for (; y < arr1.Length; y++)
            {
                int multiplier = (int)Math.Pow(10, totalCount - y - 1);
                result += arr1[y] * multiplier;
            }
 
            for (int i = 0; i < arr2.Length; i++)
            {
                int multiplier = (int)Math.Pow(10, totalCount - y++ - 1);
                result += arr2[i] * multiplier;
            }
 
            Console.WriteLine(result);
 
            Console.ReadKey(true);
        }
 
        static IEnumerable<int> GetDigits(int value)
        {
            do
            {
                yield return value % 10;
                value /= 10;
            }
            while (value != 0);
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.11.2018, 21:18
Помогаю со студенческими работами здесь

Поменять местами половины слова из четных числа букв
Пусть дано слово из четного числа букв. Поменять местами его половины. Добавлено через 47 секунд как поменять местами его половины??

Дано слово из четного числа букв. Поменять местами его половины
Дано слово из четного числа букв. Поменять местами его половины. Задачу решить двумя способами: 1) без использования оператора цикла; ...

Дана матрица размера M*N (M и N-четные числа). Поменять местами левую верхнюю и правую нижнюю четверти матрицы
Дана матрица размера M*N (M и N-четные числа). Поменять местами левую верхнюю и правую нижнюю четверти матрицы. Код написать на си шарп

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

Дана матрица размера M × N (M и N — четные числа). Поменять местами левую верхнюю и правую нижнюю четверти матрицы
Дана матрица размера M × N (M и N — четные числа). Поменять местами левую верхнюю и правую нижнюю четверти матрицы. Сегодня уже пишу...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru