0 / 0 / 0
Регистрация: 25.06.2018
Сообщений: 5

Проверить, есть ли в записи числа m цифры, совпадающие с цифрами в записи числа n

25.06.2018, 23:58. Показов 2048. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
не решается задачка :с помогите, пожалуйста. все что смог, изложил. это подпрограмма если что
сделать с помощью циклов, никаких строковых не надо
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
static int Pr(int n, int m) 
        {
            int l, g, k1;
            l = 0;
            g = 0;
            k1 = 0;
            while (n != 0)
            {
                l = n % 10;
                n = n / 10;
                while (m != 0)
                {
                    g = m % 10;
                    m = m / 10;
                    if (l == g)
                    {
                        k1++;
                    }
                }
            }
            return k1; // тело метода
        }
        static void Main(string[] args)
        {
            int h, j, k;
            Console.Write("Введите число n: ");
            h = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите число m: ");
            j = Convert.ToInt32(Console.ReadLine());
            k = Pr(h, j);
            if (k!=0)
            {
                Console.WriteLine("Есть одинаковые цифры.");
            }
            else
            {
                Console.WriteLine("Одинаковых цифр нет.");
            }
            Console.ReadKey();
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.06.2018, 23:58
Ответы с готовыми решениями:

Проверить, есть ли в записи числа три одинаковых цифры (N ≤ 9999)
Помогите плиз, надо программу написать в WF(можно и в консоли, под WF сам переделаю) на C#, заранее благодарю. Дано натуральное число...

Даны натуральные числа n, k. Проверить, есть ли в записи числа nk цифра m
Помогите решит задачу начал делать,но чет тупняк совсем. Даны натуральные числа n, k. Проверить, есть ли в записи числа nk цифра m. ...

Проверить, есть ли в записи числа определенная цифра
Даны натуральные числа n, k. Проверить, есть ли в записи числа nk цифра m,помогите с задачей.

11
 Аватар для Aferuga
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
26.06.2018, 08:13
Могу сказать что ваша подпрограмма почти выполняет ваше задание. Проблема в то что после проверки первой цифры числа n переменная m всегда будет равна 0.

Убрал решение под спойлер, может первой части будет достаточно.
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        static int Pr(int n, int m)
        {
            int l, g, k1;
            l = 0;
            g = 0;
            k1 = 0;
            while (n != 0)
            {
                l = n % 10;
                n = n / 10;
                int m_new = m;
                while (m_new != 0)
                {
                    g = m_new % 10;
                    m_new = m_new / 10;
                    if (l == g)
                    {
                        k1++;
                    }
                }
            }
            return k1; // тело метода
        }
1
0 / 0 / 0
Регистрация: 25.06.2018
Сообщений: 5
26.06.2018, 09:45  [ТС]
Вы классный, спасибо)
0
4 / 4 / 2
Регистрация: 06.06.2018
Сообщений: 24
26.06.2018, 13:36
А я вот так сделал) Только вот не умею создавать размерность массива в зависимости от введенных пользователем знаков) ...поэтому сделал костыль на 7 знаков) (может кто подскажет как это правильно завязать!?

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Pcractic1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите первое число (7 знаков): ");
            int x = Convert.ToInt32(Console.ReadLine());
 
            Console.WriteLine("Введите второе число (7 знаков): ");
            int y = Convert.ToInt32(Console.ReadLine());
 
 
            int[] array1 = new int[7];
 
            for (int i = 0; i < array1.Length; i++)
            {
                array1[i] = x % 10;
                int z = array1[i];
                x = (x - z) / 10;
            }
 
            int[] array2 = new int[7];
 
            for (int i = 0; i < array2.Length; i++)
            {
                array2[i] = y % 10;
                int z = array2[i];
                y = (y - z) / 10;
            }
 
            for (int i = 0; i < array1.Length; i++)
            {
                int l = array1[i];
 
                for (int j = 0; j < array2.Length; j++)
                {
                    int m = array2[j];
 
                    if (l == m)
 
                        Console.WriteLine("схожие числа: {0}", l);
                }
            }
 
 
            Console.ReadKey();
        }
    }
}
Добавлено через 16 минут
Заметил косяк у себя) на каждой итерации идет сверка чисел и выводится ответ) сейчас буду исправлять)

Добавлено через 50 минут
Тут только с определенным числом баг есть один) буду думать,как пофиксить

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Pcractic1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Введите первое число (7 чисел): ");
            int x = Convert.ToInt32(Console.ReadLine());
 
            Console.Write("Введите второе число (7 чисел): ");
            int y = Convert.ToInt32(Console.ReadLine());
 
            int h = 0;
            int[] array1 = new int[7];
 
            for (int i = 0; i < array1.Length; i++)
            {
                array1[i] = x % 10;
                int z = array1[i];
                x = (x - z) / 10;
            }
 
            int[] array2 = new int[7];
 
            for (int i = 0; i < array2.Length; i++)
            {
                array2[i] = y % 10;
                int z = array2[i];
                y = (y - z) / 10;
            }
 
            for (int i = 0; i < array1.Length; i++)
            {
                int l = array1[i];
             
                for (int j = 0; j < array2.Length; j++)
                {
                    int m = array2[j];
                   
                    if (l == m && l !=0 && h !=l)
                    {
 
                        Console.WriteLine("Числа: {0}", l);
                        h = l;
                        break;
                    }
 
            
 
                }
 
            }
 
 
 
 
 
            Console.ReadKey();
        }
    }
}
1
0 / 0 / 0
Регистрация: 25.06.2018
Сообщений: 5
26.06.2018, 15:52  [ТС]
интересное решение, но взяла первое, т.к проще и исходит от того, что я написала
0
171 / 92 / 71
Регистрация: 10.05.2014
Сообщений: 432
26.06.2018, 17:05
Фетучини,
C#
1
2
3
4
5
6
7
8
int fv = 1234567;
int sv = 4567890;
 
var res = fv.ToString().ToArray()
    .Intersect(sv.ToString().ToArray())
    .Select(x => int.Parse(x.ToString()));
 
Console.WriteLine($"First Value: {fv}\nSecond Value: {sv}\nIntersect: {string.Join(" ", res)}");
0
 Аватар для Aferuga
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
27.06.2018, 04:06
Цитата Сообщение от Фетучини Посмотреть сообщение
но взяла первое, т.к проще и исходит от того, что я написала
Да оно не только проще, оно правильнее, т. к. не использует массивы.
Хотя даже и его можно оптизимировать, выкинув 3 лишних переменных(особенно если учесть, что количество нас не интересует):
Кликните здесь для просмотра всего текста

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
        static bool Pr(int n, int m)
        {
            while (n != 0)
            {
                n = n / 10;
                int m_new = m;
                while (m_new != 0)
                {
                     if (n % 10 == m_new % 10)
                    {
                        return true;
                    }
                    m_new = m_new / 10;
                }
            }
            return false; // тело метода
        }
        static void Main(string[] args)
        {
            int h, j;
            Console.Write("Введите число n: ");
            h = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите число m: ");
            j = Convert.ToInt32(Console.ReadLine());
            if (Pr(h, j))
            {
                Console.WriteLine("Есть одинаковые цифры.");
            }
            else
            {
                Console.WriteLine("Одинаковых цифр нет.");
            }
            Console.ReadKey();
        }
0
4 / 4 / 1
Регистрация: 11.09.2017
Сообщений: 21
28.06.2018, 16:49
текст - это массив символов, отталкивайся от этого..

Ну или через коллекцию, счас накидаю примерчик, переделаешь под себя
0
4 / 4 / 2
Регистрация: 06.06.2018
Сообщений: 24
28.06.2018, 16:53
Привет)ты хорошо в c# разбираешься?
0
4 / 4 / 1
Регистрация: 11.09.2017
Сообщений: 21
28.06.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
static void Main(string[] args)
        {
            Console.WriteLine("1e число");
 
            int one = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("2e число");
            int two = Convert.ToInt32(Console.ReadLine());
            /*
            int r = 1;
            int k = 1;
            */
            List<int> list_ = new List<int>();
            int i = 10;
            while(one != 0 && two != 0)
            {
                if ((one % i == two % i)&&(one != 0 && two != 0)) {
                    list_.Add(one % i);                    
                }
                one /= i;
                two /= i;
            }
            foreach (var item in list_)
            {
                Console.WriteLine(item.ToString());
            }
            Console.Read();
        }
Добавлено через 4 минуты
можно откинуть коллекцию и таким путём (смотри вниз) получим просто ответ
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 bool Pr() {
            Console.WriteLine("1e число");
 
            int one = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("2e число");
            int two = Convert.ToInt32(Console.ReadLine());
            /*
            int r = 1;
            int k = 1;
            */
            //List<int> list_ = new List<int>();
            int i = 10;
            while(one != 0 && two != 0)
            {
                if ((one % i == two % i)&&(one != 0 && two != 0)) {
                    return true;                    
                }
                one /= i;
                two /= i;
            }
          return false;
        }
Добавлено через 6 минут
можно кстати и уменьшить на 2 строки мой код
C#
1
2
3
4
5
6
7
8
while((one /= i) != 0 && (two /= i) != 0)
            {
                if ((one % i == two % i)&&(one != 0 && two != 0)) {
                    return true;                    
                }
               // one /= i;
               // two /= i;
            }

Комменты оставляю для того чтобы вы понимали что я сократила

Добавлено через 2 минуты
если вам интересно как это работает вбейте в гугл "Приоритет операций в c#" и используя это можно эффективно сокращать код

Добавлено через 13 минут
ещё одна заметка, int - целое и без знаковое, то есть int i = 1 / 10; будет равно нулю, так как int будет округлять автоматически (помни правило, если больше пяти - округляется в большую сторону, иначе - в меньшую)
0
 Аватар для Aferuga
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
29.06.2018, 05:26
koitoTyan, Вы бы проверили свой исходник, например так: 123 и 345.
Цитата Сообщение от koitoTyan Посмотреть сообщение
так как int будет округлять автоматически (помни правило, если больше пяти - округляется в большую сторону, иначе - в меньшую)
Серьезно? Такого округления не будет.
Это называется частное от деления.

Добавлено через 1 час 6 минут

Не по теме:

Цитата Сообщение от koitoTyan Посмотреть сообщение
int - целое и без знаковое
Не знаю к чему это написано, но int - целое со знаком.

0
4 / 4 / 1
Регистрация: 11.09.2017
Сообщений: 21
29.06.2018, 14:41
Да, ошиблась про без знаковое (писала уже на автомате, заработалась..), про int и округление нам талдычили на первом курсе и я не знала (спасибо за объяснения)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2018, 14:41
Помогаю со студенческими работами здесь

Как проверить есть ли в записи числа цифра 2
Например ввожу 21. В нем есть цифра 2. Как проверить такое ? using System; using System.Collections.Generic; using System.Linq;...

Найти такие числа, запись которых совпадает с последними цифрами записи их квадратов
Дано натуральное число n. Среди чисел 1,..., n найти такие, запись которых совпадает с последними цифрами записи их квад¬ратов (например,...

Выбросить из записи числа n цифры 0 и 5, оставив прежним порядок остальных цифр
Дано натуральное число n. Выбросить из записи числа n цифры 0 и 5, оставив прежним порядок остальных цифр. Например, из числа 59015509...

Выбросить из записи числа n цифры 0 и 5, оставив прежним порядок остальных цифр
Здравствуйте! Помогите решить задачку такого типа на C# (нужно пользоваться конструкцией for, массив нельзя): 1. Дано четырёхзначное...

Выбросить из записи числа цифры 0 и 5, оставив прежним порядок остальных цифр
1.Дано натуральное число n. Выбросить из записи числа n цифры 0 и 5, оставив прежним порядок остальных цифр. Например, из числа 59015509...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru