Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2021, 22:56   #1
Чччайник
Пользователь
 
Регистрация: 05.11.2020
Сообщений: 23
По умолчанию Дано число больше 999

Дано число больше 999. Найти сумму цифр в разных половинах. То есть:
197673=1+9+7 и 6+7+3
С этим проблем нет, а вот с 5-и или 7-и значними числами возникает проблема. Нужно решить так:
19767=1+9 И 6+7, но получается 19767=1+9+7 И 6+7. Есть говнокод
Код:
 Console.Write("Insert n: ");
            int.TryParse(Console.ReadLine(), out int n);

            if (n > 999)
            {
                int i = 0;
                int j;
                int m = n;
                int s1 = 0;
                int s2 = 0;
                int q = 1;
                while (m != 0)
                {
                    i++;
                    m /= 10;
                }
                j = i;
                while (i > (double)j / 2 + 0.5)
                {
                    s1 += n % 10;
                    q *= n % 10;
                    i--;
                    n /= 10;
                }
                while (i < j / 2 && i != 0)
                {
                    s2 += n % 10;
                    q *= n % 10;
                    i--;
                    n /= 10;
                }
                if (s1 == s2)
                {
                    Console.WriteLine(q);
                }
                else
                {
                    Console.WriteLine("Tatin gjota");
                }
Чччайник вне форума Ответить с цитированием
Старый 19.01.2021, 10:26   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Один из вариантов решения
Код:
using System;

					
public class Program
{
	public static void Main()
	{
		int N = 19767;
		int LeftPart = 0;
		int RightPart = 0;
		int Grades = GetGradesCount(N);
		int grade = 0;
		int digit = 0;
		bool isOddMiddle =  Grades % 2 != 0;
		int Middle = Convert.ToInt32(Math.Ceiling((double)Grades / 2));
		Console.WriteLine("Number {0}, Grades {1}, MiddleGrade {2}, ",N, Grades, Middle);
		Console.WriteLine();
		while(N != 0)
		{
			grade++;
			digit = N % 10;
			if (grade <= Middle)
			{
				if (grade == Middle) {
					if (!isOddMiddle) 
					{
						Console.WriteLine("RightPart = {0} + {1} = {2}",RightPart, digit,RightPart+ digit);
						RightPart += digit;
					}
					else
					{
						Console.WriteLine("MiddleGrade doesn't count");
					}
				}
				else
				{
					Console.WriteLine("RightPart = {0} + {1} = {2}",RightPart, digit,RightPart+ digit);
					RightPart += digit;
				}
			}	
			else
			{
				Console.WriteLine("LeftPart = {0} + {1} = {2}",LeftPart, digit,LeftPart+digit);
				LeftPart += digit;
			}
			N /= 10;
		}
		Console.WriteLine();
   		Console.WriteLine("LeftPartSum {0}, RigthPartSum {1}",LeftPart, RightPart);

	}
	
	private static int GetGradesCount(int number)
	{
		int N = 0;
		while(number != 0)
		{
			N++;
			number /= 10;
		}
		return N;
	}
}
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 19.01.2021, 11:37   #3
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

рассматривая число как символы цифры
небось проще сканировать с разных сторон до середины

кажись программа с похожим принципом в сообщении:
https://www.programmersforum.ru/show...16#post1775716
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
23. Дано целое число N (> 2) и набор из N вещественных чисел. Набор называется пилообразным, если каждый его внутренний элемент либо больше, либо меньше обоих своих соседей (то ест Все возможно Помощь студентам 0 22.11.2019 21:58
Дано натуральное число. Подсчитать количество цифр, которые больше своей правой соседки tron19 Помощь студентам 0 24.12.2015 18:01
дано вещественное число a, найти последовательность чисел, первое число больше a derenikp1996 Помощь студентам 3 23.05.2015 12:16
Дано целое число в диапазоне 100–999. Вывести строку-описание данного числа. nadyaH Помощь студентам 4 28.10.2013 18:03
Дано трехзначное число. Если в сумме его цифр присутствует число 7,то число записать в зеркальном виде ( Паскаль ) Эля777 Помощь студентам 5 22.04.2013 23:23