Как найти третье число трехзначного числа

Перейти к содержанию

Знакомство с языком программирования С#: Напишите программу, которая выводит третью цифру заданного числа или сообщает, что третьей цифры нет

На чтение 2 мин Просмотров 554 Опубликовано 03.03.2023
Обновлено 03.03.2023

Задача: Напишите программу, которая выводит третью цифру заданного числа или сообщает, что третьей цифры нет

Содержание

  1. Пример:
  2. Решение:
  3. Пояснение:

Пример:

645 -> 5

78 -> третьей цифры нет

32679 -> 6

Решение:

int Prompt(string msg)
{

System.Console.WriteLine($»{msg}»);
return Convert.ToInt32(Console.ReadLine());
}
int number = Prompt(«Введите число»);

int fnumber(int number)
{
while (number > 999)
{
number /= 10;
}
return number % 10;
}

bool check(int number)
{
if (number < 100)
return false;
else return true;
}

if (check(number) != true)
System.Console.WriteLine(«Третьей цифры нет»);
else
System.Console.WriteLine($»Третья цифра числа {number} является {fnumber(number)}»);

Пояснение:

Нетривиальная задача. В решении используются две функции: fnumber и Prompt.

Похожий код:

Avatar photo

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Формулировка задачи:

дано число 350. надо найти 3, 5 и 0 из этого числа… то есть например должно выйти a=3 , b=5 , c=0. и сделать с помощью команд mod, div.

Код к задаче: «Найти 1-ое, 2-ое и 3-е число трёхзначного числа»

textual

var masnum: array [1..100] of integer;
i,n,k:integer;
begin
 writeln('Vvedite chislo');
readln(n);
k := 0;
while n > 0 do begin
k := k + 1;
masnum[k] := n mod 10;
n := n div 10;
end;
for i:=k downto 1 do
    write(masnum[i]:3);
readln;
end.

Полезно ли:

15   голосов , оценка 3.800 из 5

Как определить цифру из данного числа?
Например, число 1337 состоит из 4 цифр. Как узнать вторую цифру ?

задан 20 ноя 2017 в 4:46

tonymore's user avatar

tonymoretonymore

3292 серебряных знака16 бронзовых знаков

6

string str = 1337.ToString();
Console.WriteLine(str[1]);

нумерация в строках такая же как и в массивах, но доступ по индексу к элементу доступен только для чтения

ответ дан 20 ноя 2017 в 4:55

Alexandr's user avatar

AlexandrAlexandr

4542 серебряных знака15 бронзовых знаков

Способ без превращения числа в строку (будет работать быстрее):

static void Main(string[] args)
{
    int n = 534534623;
    int d = GetSecondDigit(n);
    Console.WriteLine(d);
    Console.ReadKey();
}

static int GetSecondDigit(int k)
{
    while (k >= 100) k /= 10;
    int d = k % 10;
    return d;
}

Хотя, конечно, если у вас на входе строка, то проще получить второй символ по индексу (как в соседнем ответе).

ответ дан 20 ноя 2017 в 6:08

Андрей NOP's user avatar

Андрей NOPАндрей NOP

28.3k4 золотых знака39 серебряных знаков77 бронзовых знаков

Делим без остатка на 100, затем берём остаток от деления на 10. Не понимаю, зачем вам отправили конвертацию в строку и даже отдельную функцию с циклом.

ответ дан 23 дек 2020 в 20:43

Павел's user avatar

ПавелПавел

543 бронзовых знака

1


        Console.WriteLine("Введите трехзначное число");
        int.TryParse(Console.ReadLine()!, out int k);
    
        if (k>999 || k<100)
        {
        Console.WriteLine("Не трехзначное число!!!");
        return;
        }
        int GetSecond(int k)
        {
        while (k >= 100) k /= 10;
        int d = k % 10;
        return d;
        }
        Console.WriteLine(GetSecond(k));

мэйби как то так?

ответ дан 16 мар в 11:07

KatrinBlade's user avatar

1

Конечно перебирать все 3-х значные числа не стоит. Можно сузить круг поиска. В некоторых программах 5-го класса проходят таблицу квадратов, хотя в основных программах она в 7-м классе. Вернее не совсем таблицу, а квадраты некоторых чисел и интересные факты.

Поэтому вспомнив таблицу квадратов или посчитав её или подсмотрев где либо увидим, что трехзначных чисел таких: 22 и перебирать надо среди 22, а не 900.


(Ответ extatic хорош, но он не совсем системный. По сути он опустил, что выбор производит среди этих 22 чисел. Иначе как он выкинул окончание 5? Ну заканчивается на 25 и что? Например 625 – квадрат 25; 256 – квадрат 16, может еще есть какое число переставив цифры которого получим квадрат. Например 526? Это можно проверить только зная трехзначные числа квадратов или проверяя каждое, а не квадрат ли это? Зная числа квадратов из таблицы легко уже можно проверить. С остальными по сути так же)


То есть по сути перебор осуществляется среди 22 трехзначных чисел.

__ |. 0 . |. 1 . |. 2 . |. 3 . |. 4 . |. 5 . |. 6 . |. 7 . |. 8 . |. 9 . |

10 | 100| 121| 144| 169| 196| 225| 256| 289| 324| 361|

20 | 400| 441| 484| 529| 576| 625| 676| 729| 784| 841|

30 | 900| 961|

Конечно можно сократить этот перебор выкинув первый столбец с нулями. Останется 19 чисел.

Потом можно выкинуть, то что попадается редко. Например с цифрой 3 (324 и 361). останется 17

Потом с цифрой 7: (576; 676; 729; 784). Среди них нет троек. Останется 13 чисел.

Потом с цифрой 8: (289; 484; 784-уже вычеркнули; 841). Тоже нет троек. Останется 10 чисел

Потом проверяем 2: (121; 225; 256; 289-уже вычеркнули; 324 – вычеркнули; 529; 625; 729 – вычеркнули) – среди них так же нет троек. Останется 5 чисел.

Причем получится, что все 5-ки уже вычеркнуты.

Проверяем 4 среди не вычеркнутых: (144; 441). Останется 3 числа:

169; 196 и 961 – и это искомые числа: 169 = 13²; 196 = 14²; 961 = 31²

Причем видно, что других решений нет. Оно единственное (что, например, extatic не гарантировал. Просто нашел 1 ответ)


Данная задача не имеет какого либо закономерного решения. Она носит лишь познавательный характер и позволяет ученикам проще запомнить квадраты некоторых чисел, что позволит легче ориентироваться и решать задачи в дальнейшем.

Это задачи из серии интересного: 12² = 144 и 21² = 441; или 13² = 169 и 31² = 961; Но это только для этих пар чисел перестановка цифр дает перестановку цифр в результате и не несет никакой закономерности.

Поэтому как ни крути, а задачу решать перебором, но разумным. Не всех чисел, а только квадратов.

Все просто:
‘это комментарий
For I = 1 To 3 ‘ цикл. 3ка это разрядность делимого числа. Хоть 100 разрядов.
x = Число Mod 10 ‘ Число должно быть байтом без запятых!
Print x ‘ вот тут появляется последняя цифра числа
Число = Число / 10 ‘ тут число лишается последней цифры
Next

‘Для понимания: другие варианты:

Dim Цифра(4) As Byte ‘ массив из байт (целые числа без запятой!)
Цифра(4) = 123 ‘разбиваем 123 на 1,2,3
Цифра(1) = Цифра(4) / 100 ‘123/100=1
Цифра(3) = Цифра(4) Mod 10 ‘остаток от деления 123 на 10 = 3
Цифра(4) = Цифра(4) / 10 ‘ 123/10=12
Цифра(2) = Цифра(4)mod 10 ‘ остаток от деления 12 на 10 =2

Print Цифра(1) ; Цифра(2) ; Цифра(3) ‘ 1 2 3 печатаем наши три цифры

‘ Второй вариант:
Dim I As Byte , Цифра(4) As Byte
Цифра(4) = 123 ‘разбиваем 123 на 1,2,3

For I = 3 To 1 ‘ цикл. 3ка это разрядность делимого числа. Хоть 100 разрядов. Но и массив должен быть такой же
Цифра(i) = Цифра(4) Mod 10
Цифра(4) = Цифра(4) / 10
Next
Print Цифра(1) ; Цифра(2) ; Цифра(3)

Добавить комментарий