A4. Целочисленная арифметика. Задачи повышенной сложности

Напишите в комментарии к этой записи консольные приложения для решения этих задач, указав код задачи.
Решены задачи: все Протестируйте решения : 6-10.

Задачи

A4.1. Даны цифры двух целых чисел: двузначного a2a1 и однозначного b, где a1 — число единиц, a2 — число десятков. Получить цифры числа, равного сумме заданных чисел (известно, что это число двузначное). Слагаемое — двузначное число и число-результат не определять; условный оператор не использовать.

A4.2. Даны цифры двух двузначных чисел, записываемых в виде a2a1 и b2b1, где a1 и b1 — число единиц, a2 и b2 — число десятков. Получить цифры числа, равного сумме заданных чисел (известно, что это число двузначное). Слагаемое — двузначное число и число-результат не определять; условный оператор не использовать.

A4.3. Даны цифры двух десятичных целых чисел: трехзначного a3a2a1 и двузначного b2b1, где a1 и b1 — число единиц, a2 и b2 — число десятков, a3 — число сотен. Получить цифры числа, равного сумме заданных чисел (известно, что это число трехзначное). Числа-слагаемые и число-результат не определять; условный оператор не использовать.

A4.4. Даны целое число k (1 ≤ k ≤ 180) и последовательность цифр 10111213…9899, в которой выписаны подряд все двузначные числа. Определить:
а) номер пары цифр, в которую входит k-я цифра;
б) двузначное число, образованное парой цифр, в которую входит k-я цифра;
в) k-ю цифру, если известно, что: k — четное число;  k — нечетное число.
Примечание. Величины строкового типа не использовать.

A4.5. Даны целое число k (1 ≤ k ≤ 150) и последовательность цифр 101102103…149150, в которой выписаны подряд все трехзначные числа от 101  до 150.
Определить k-ю цифру, если известно, что:
k — число, кратное трем;
k — одно из чисел 1, 4, 7, …;
k — одно из чисел 2, 5, 8, …
Примечание. Величины строкового типа не использовать.

A4.6. Даны целые числа h, m, s (0 ≤ h ≤ 23, 0 ≤ m ≤ 59, 0 ≤ s ≤ 59), указывающие момент времени: «h часов, m минут, s секунд». Определить угол (в градусах) между положением часовой стрелки в начале суток и в указанный момент времени.

A4.7. С начала суток часовая стрелка повернулась на y градусов (0 ≤ y ≤ 360, y — вещественное число). Определить число полных часов и число полных минут, прошедших с начала суток.

A4.8. Часовая стрелка образует угол y с лучом, проходящим через центр и через точку, соответствующую 12 часам на циферблате, 0 ≤ y ≤ 2 . Определить значение угла для минутной стрелки, а также количество полных часов и полных минут.

A4.9. Даны целые числа h, m (0 ≤ h ≤ 12, 0 ≤ m ≤ 59), указывающие момент времени: «h часов, m минут». Определить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки на циферблате:
а) совпадут;
б) расположатся перпендикулярно друг другу.

A4.10. Даны два целых числа a и b. Если a делится на b или b делится на a, то вывести 1, иначе — любое другое число. Условные операторы и операторы цикла не использовать.


NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Понравилась статья? Поделиться с друзьями:
5 2 голоса
Рейтинг статьи
Подписаться
Уведомить о

40 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

A4.9

Console.WriteLine(«Задача А4.9»);

    var h = int.Parse(Console.ReadLine());
    var m = int.Parse(Console.ReadLine());

    if (h <= 0 || h >= 12)
    {
      Console.WriteLine(«h out of boundaries — » + h);
      return;

    }
    if (m <= 0 || m >= 59)
    {
      Console.WriteLine(«m out of boundaries — » + m);
      return;

    }

    var timeCurrent = h * 3600 + m * 60;

    int res1 = 0, res2 = 0;

    var degreePerSecHour = 360.0 / (12 * 3600);//Градусов в секунду для часовой стрелки
    var degreePerSecMin = 360.0 / (12 * 5 * 60);//Градусов в секунду для минутной стрелки
    double mAngle1 = 0.0, mAngle2 = 0.0;
    double hAngle1 = 0.1, hAngle2 = 0.1;

    bool t1 = true, t2 = true;

    while (t1 || t2)
    {
      timeCurrent++;

      if (mAngle1 != hAngle1) //Если углы минутной и часовой стрелок совпадают
      {
        hAngle1 = Math.Round((timeCurrent * degreePerSecHour), 1);
        mAngle1 = Math.Round(((timeCurrent % 3600) * degreePerSecMin), 1);
        res1++; //Счётчик времени, сколько прошло сек до достижения результата
      }
      else
      {
        t1 = false;
      }

      if ((Math.Round(Math.Abs(mAngle2 — hAngle2), 1) != 90.0) && (Math.Round(Math.Abs(mAngle2 — hAngle2), 1) != 270.0))//Если угол межу стрелками отличается на 90 градусов
      //if (Math.Abs(mAngle2-hAngle2) % 90 != 0)//Если угол межу стрелками отличается на 90 градусов
      {
        hAngle2 = Math.Round((timeCurrent * degreePerSecHour), 1);
        mAngle2 = Math.Round(((timeCurrent % 3600) * degreePerSecMin), 1);
        res2++;//Счётчик времени, сколько прошло сек до достижения результата
      }
      else
      {
        t2 = false;
      }
    }
       
    Console.WriteLine();
    Console.WriteLine(«Совпадают через = {0:#.##}min, УголМинуты = {1}, УголЧаса = {2}  \nОбразуют 90град. через = {3:#.##}min, УголМинуты = {4}, УголЧаса = {5}», res1/60.0, mAngle1, hAngle1, res2 / 60.0, mAngle2, hAngle2);
    Console.WriteLine();

A4.7
string y1 = Console.ReadLine();
y1 = y1.Replace(«.»,«,»);
double y = Convert.ToDouble(y1);

if(y <= 360)
{
double h = (y — (y % 30)) / 30;
double m1 = (y — (h * 30)) / 0.5;
double m2 = Math.Round(m1, 0);
Console.WriteLine($»{h}:{m2);
}
else
{
    Console.WriteLine($»Вы ввели не корректное кол-во градусов»);
}

A4.6
Console.WriteLine(«Введите время, пример: 14:21:56 — 14 часов, 21 минута, 56 секунд.»);
string str = Console.ReadLine();
string[] nums = str.Split(new char[] {‘:’});

int h = 0;
int m = 0;
int s = 0;

if(1 <= nums.Length && nums[0] != string.Empty) {h += int.Parse(nums[0]);}
if(2 <= nums.Length && nums[1] != string.Empty) {m += int.Parse(nums[1]);}
if(3 <= nums.Length && nums[2] != string.Empty) {s += int.Parse(nums[2]);}

double gradus = 0;

if( h <= 23 && m <= 59 && s <= 59 &&
    h >= 0  && m >= 0  && s >= 0 )
{
    gradus += (h * 30) + (m * 0.5) + (s * 0.0083);
    Console.WriteLine($»{str} — Будет: {gradus} градусов.»);
}
else
{
    Console.WriteLine(«Вы ввели некорректное время.»);
}

A4.2.
 // Даны цифры двух двузначных чисел, записываемых в виде a2a1 и b2b1, где a1 и b1 — число единиц, a2 и b2 — число десятков. Получить цифры числа,
           // равного сумме заданных чисел (известно, что это число двузначное). Слагаемое — двузначное число и число-результат не определять;
           // условный оператор не использовать.
           Console.WriteLine(«Vvedite cherez enter3 chisla: dvuznachnoe a1a2, gde desjatok(a1 ->enter),edinici (a2->enter),» +
                                                           «dvuznachnoe b1b2 gde desjatok(b1 ->enter),edinici (b2->enter)»);

           int a1 = Convert.ToInt32(Console.ReadLine());//50
           int a2 = Convert.ToInt32(Console.ReadLine());//1
           int b1 = Convert.ToInt32(Console.ReadLine());//10
           int b2 = Convert.ToInt32(Console.ReadLine());//6

           int desjatki = (a1+a2+b1+b2)/10 ;// (50+1+10+6) /10=67/10=6.7==6
           int edinici = (a2+b2) % 10;// (1+6)/10=0.7 ostatok=7

           Console.WriteLine(«desjatki»+desjatki);//5
           Console.WriteLine(«edinici»+edinici);//7
       }

A4.1
{
           // Даны цифры двух целых чисел: двузначного a2a1 и однозначного b, где a1 — число единиц, a2 — число десятков.
           // Получить цифры числа, равного сумме заданных чисел (известно, что это число двузначное).
           // Слагаемое — двузначное число и число-результат не определять; условный оператор не использовать.
           Console.WriteLine(«Vvedite cherez enter3 chisla: dvuznachnoe a1a2, gde desjatok (a1 ->enter), edinici (a2->enter), odnoznachnoe chislo (b->enter) «);
           int a1 = Convert.ToInt32(Console.ReadLine());//50
           int a2 = Convert.ToInt32(Console.ReadLine());//1
           int b = Convert.ToInt32(Console.ReadLine());//6

           int desjatki = (a1+a2+b)/10 ;//(50+1+6) /10=5
           int edinici = (a2+b) % 10;//7/10=0.7 ostatok=7

           Console.WriteLine(desjatki);//5
           Console.WriteLine(edinici);//7
       }

Даны целое число k (1 ≤ k ≤ 180) и последовательность цифр 10111213…9899, в которой выписаны подряд все двузначные числа. Определить:
а) номер пары цифр, в которую входит k-я цифра;
б) двузначное число, образованное парой цифр, в которую входит k-я цифра;
в) k-ю цифру, если известно, что: k — четное число; k — нечетное число.
Примечание. Величины строкового типа не использовать.

using System;




namespace Csharpe
{
    class Program
    {
       


        static void Main(string[] args)
        {
            int[] g = new int[90];
            int s = 0;
            for (int i = 0; i < 90; i++)
            {
                g[i] = i+10;
                Console.Write(g[i]);
                s++;
            }
            Console.WriteLine("\nВведите число (в диапазоне 1 <= k <= 180): ");
            int k = Convert.ToInt32(Console.ReadLine());
            int c3 = -1, c2 = -1, c1 = -1;
            Share(ref c1, ref c2, ref c3, k);


            if (k>=1 && k<=180)
            {
                OutPut(g, c1, c2, c3, k);
            }
        }


        static void Share(ref int c1, ref int c2, ref int c3, int k)
        {
            if (k < 10)
            {
                c1 = k;
            }
            else if (k > 10 && k < 100)
            {
                c2 = k / 10;
                c1 = k - c2 * 10;
            }
            else if (k > 100)
            {
                c3 = k / 100;
                c2 = (k - (c3 * 100)) / 10;
                c1 = k - (c3 * 100) - (c2 * 10);
            }
        }


        static void OutPut(int[] g, int c1, int c2, int c3, int k)
        {
            int num = 0;
            int j = 0;
            if (c3 >= 0)
            {
                j = 0;
                num = 0;
                Console.Write($"\nНомера пар цифр, в которые входит цифра {c3}: ");
                for (int i = 0; i < 90; i++)
                {
                    j++;
                    if (j == 1)
                    {
                        num++;
                        if (c3 == g[i] / 10 || c3 == g[i] - g[i] / 10 * 10)
                        {
                            Console.Write(num + ";");
                        }
                        j = 0;
                    }
                }
            }
            if (c2 >= 0)
            {
                j = 0;
                num = 0;
                Console.Write($"\nНомера пар цифр, в которые входит цифра {c2}: ");
                for (int i = 0; i < 90; i++)
                {
                    j++;
                    if (j == 1)
                    {
                        num++;
                        if (c2 == g[i] / 10 || c2 == g[i] - g[i] / 10 * 10)
                        {
                            Console.Write(num + ";");
                        }
                        j = 0;
                    }
                }
            }
            if (c1 >= 0)
            {
                j = 0;
                num = 0;
                Console.Write($"\nНомера пар цифр, в которые входит цифра {c1}: ");
                for (int i = 0; i < 90; i++)
                {
                    j++;
                    if (j == 1)
                    {
                        num++;
                        if (c1 == g[i] / 10 || c1 == g[i] - g[i] / 10 * 10)
                        {
                            Console.Write(num + ";");
                        }
                        j = 0;
                    }
                }
            }
            Console.Write("\n\n");
            if (c3 >= 0)
            {
                j = 0;
                Console.Write($"\n\nДвузначное число, образованное парой цифр, в которую входит цифра {c3}: ");
                for (int i = 0; i < 90; i++)
                {
                    j++;
                    if (j == 1)
                    {
                        if (c3 == g[i] / 10 || c3 == g[i] - g[i] / 10 * 10)
                        {
                            Console.Write(g[i] + ";");
                        }
                        j = 0;
                    }
                }
            }
            if (c2 >= 0)
            {
                j = 0;
                Console.Write($"\nДвузначное число, образованное парой цифр, в которую входит цифра {c2}: ");
                for (int i = 0; i < 90; i++)
                {
                    j++;
                    if (j == 1)
                    {
                        if (c2 == g[i] / 10 || c2 == g[i] - g[i] / 10 * 10)
                        {
                            Console.Write(g[i] + ";");
                        }
                        j = 0;
                    }
                }
            }
            if (c1 >= 0)
            {
                j = 0;
                Console.Write($"\nДвузначное число, образованное парой цифр, в которую входит цифра {c1}: ");
                for (int i = 0; i < 90; i++)
                {
                    j++;
                    if (j == 1)
                    {
                        if (c1 == g[i] / 10 || c1 == g[i] - g[i] / 10 * 10)
                        {
                            Console.Write(g[i] + ";");
                        }
                        j = 0;
                    }
                }
            }
            for (int i = 0; i < 90; i++)
            {
                if (i == k)
                {
                    if (i % 2 == 0)
                    {
                        Console.Write("\n\n" + k + "-я цифра в этом массиве чисел - чётная\n\n");
                    }
                    else if (i % 2 != 0)
                    {
                        Console.Write("\n\n" + k + "-я цифра в этом массиве чисел - не чётная\n\n");
                    }
                }
                else if (i == 89 && k>90)
                {
                    Console.WriteLine("\n\nВ данном массиве чисел только 90 цифр, " + k + " цифры нет\n\n");
                }
            }
        }
    }
}


A4.3. Даны цифры двух десятичных целых чисел: трехзначного a3a2a1 и двузначного b2b1, где a1 и b1 — число единиц, a2 и b2 — число десятков, a3 — число сотен. Получить цифры числа, равного сумме заданных чисел (известно, что это число трехзначное). Числа-слагаемые и число-результат не определять; условный оператор не использовать.

using System;




namespace Csharpe
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Введите цифры первого числа (после ввода каждой цифры нажмите Enter): ");
            int a3 = Convert.ToInt32(Console.ReadLine());
            int a2 = Convert.ToInt32(Console.ReadLine());
            int a1 = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите цифры второго числа (после ввода каждой цифры нажмите Enter): ");
            int b2 = Convert.ToInt32(Console.ReadLine());
            int b1 = Convert.ToInt32(Console.ReadLine());
            
                int c3 = ((a3 * 100) + (a2 * 10) + (b2 * 10) + a1 + b1) / 100;
                int c2 = (((a3 * 100)+(a2 * 10) + (b2 * 10) + a1 + b1) - c3 * 100)/10;
                int c1 = (((a3 * 100)+(a2 * 10) + (b2 * 10) + a1 + b1) - c3 * 100)- c2*10 ;
                Console.WriteLine("Цифры числа " + ((a3 * 100) + (a2 * 10) + (b2 * 10) + a1 + b1) + ": " + c3 + ";" + c2 + ";" + c1 + ", равного сумме чисел: " + a3 + a2 + a1 + " и " + b2 + b1);
            
        }
    }
}


Последний раз редактировалось 2 лет назад Махмуд ем

A4.9. Даны целые числа h, m (0 ≤ h ≤ 12, 0 ≤ m ≤ 59), указывающие момент времени: «h часов, m минут». Определить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки на циферблате:
а) совпадут;
б) расположатся перпендикулярно друг другу.

С небольшими усложнениями получилось вот такое решение, но как его сократить (особенно с объявлением кучи переменных)?

        {
            Console.WriteLine("Введите время в формате ЧЧ:ММ:CC");
            int H=-1;
            int M=-1;
            int S = -1;
            string[] Input = new string[3];
            for (;!(H>=0 && H<23 && M>=0 && M<=59&& S>=0 && S<=59);)
            {
                Input = (string[])Console.ReadLine().Split(new char[] { ':' });
                if (!(int.TryParse(Input[0], out H) && H >= 0 && H <= 23)) { Console.WriteLine("Часы введены неверно"); continue; } ;
                if (!(int.TryParse(Input[1], out M) && M >= 0 && M <= 59)) { Console.WriteLine("Минуты введены неверно"); continue; } ;
                if (!(int.TryParse(Input[2], out S) && S >= 0 && S <= 59)) { Console.WriteLine("Секунды введены неверно"); continue; };
            }
            double AngleHC = Math.Round(((H%12) * 30) + (M*0.5) + (S * (0.5/60)), 1);
            double AngleMC = Math.Round((M * 6d)+(S*0.1),1);
            int TimeA=0;
            int HA = H;
            int MA = M;
            int SA = S;
            double AngleAHC = AngleHC;
            double AngleAMC = AngleMC;
            int TimeB=0;
            int HB = H;
            int MB = M;
            int SB = S;
            double AngleBHC = AngleHC;
            double AngleBMC = AngleMC;
            Console.WriteLine($"Время {H:d2}:{M:d2}");
            while (AngleAHC!=AngleAMC)
            {
                TimeA += 1;
                SA += 1;
                if (SA == 60) { MA += 1; SA = 0; }
                if (MA == 60) { HA += 1; MA = 0; }
                AngleAHC = Math.Round(((HA % 12) * 30) + (MA * 0.5) + (SA * (0.5 / 60)), 1);
                AngleAMC = Math.Round((MA * 6d) + (SA * 0.1), 1);
            }
            Console.WriteLine($"Время встречи {HA:d2}:{MA:d2}:{SA:d2}\nУгол встречи стрелок - {AngleAHC}\n Время до астречи {TimeA/3600} часов {(TimeA%3600)/60} минут {TimeA%60} секунд");
            while (AngleBHC - AngleBMC != 90 && AngleBHC - AngleBMC != -90 && AngleBHC - AngleBMC != 270 && AngleBHC - AngleBMC != -270)
            {
                TimeB += 1;
                SB += 1;
                if (SB == 60) { MB += 1; SB = 0; }
                if (MB == 60) { HB += 1; MB = 0; }
                AngleBHC = Math.Round(((HB % 12) * 30) + (MB * 0.5) + (SB * (0.5 / 60)), 1);
                AngleBMC = Math.Round((MB * 6d) + (SB * 0.1), 1);
            }
            Console.WriteLine($"А прямой угол они образуют через {TimeB / 3600} часов {(TimeB % 3600)/60} минут {TimeB % 60} секунд в {HB:d2}:{MB:d2}:{SB:d2}, и это будут углы {AngleBHC} для часовой стрелки и {AngleBMC} для минутной");
        }

Проверь время 9:14

A4.7. С начала суток часовая стрелка повернулась на y градусов (0 ≤ y ≤ 360, y — вещественное число). Определить число полных часов и число полных минут, прошедших с начала суток.

string str;
      double min,y,chasi;
       
      str = Console.ReadLine();
      y = double.Parse(str);
      min = y * 2; // 1 градус на циферблате равна двум минутам
      chasi = (int)min / 60;
      min = min - (chasi * 60);
      if(min < 60)
      {
        chasi = 0;
        min = y * 2;
      }
      Console.WriteLine("Количество часов с начала суток = " + chasi);
      Console.WriteLine("Количество минут = " + min);

Ильяс, начало верное и число полных часов найдено верно, но:

  • плохие имена переменных, они сильно путают
  • вы переиспользовали переменную min для другого по смыслу значения, и это еще больше запутало алгоритм
  • из-за путаници с именами, вы сами запутались с сделали ошибку в алгоритме
  • не очень понятен смысл условия и оно всегда будет true
  • число полных минут найдено не верно
  • в вашем случае комментарии — это подсказки, где код можно сделать понятнее и проще для вас и для читателей.

У меня программа все выводит верно,а есть неполные минуты?Можете обьяснить?

Ильяс, вот уточнения:

  • правильно выводит, это не значит правильно написана;
  • попробуйте кому то из знакомых показать этот код и увидите как не тривиально его понять, тогда как задача проста;
  • задача решается без условных операторов;
  • вы три 3 раза переприсваиваете переменную min, попробуйте теперь легко объяснить что она значит;
  • 2 часа 20 минут ночи — это 140 полных минут;
  • если грубо — решение должно быть где то в 2 раза короче и в 3 раза проще;
  • почитайте комментарии других к этим задачам, думаю могут помочь.
int hours, minutes, degrees = 45; // 1час и 30минут
hours = Convert.ToInt32(Math.Truncate(Convert.ToDouble(degrees)/30));
minutes = (degrees*2) % 60;

A4.1. Даны цифры двух целых чисел: двузначного a2a1 и однозначного b, где a1 — число единиц, a2 — число десятков. Получить цифры числа, равного сумме заданных чисел (известно, что это число двузначное). Слагаемое — двузначное число и число-результат не определять; условный оператор не использовать.

string str;
      double summa,result;
      str = Console.ReadLine();
      double a1 = double.Parse(str);
      str = Console.ReadLine();
      double a2 = double.Parse(str);
      str = Console.ReadLine();
      double b = double.Parse(str);
      summa = a2 * 10 + a1 + b;
      result = (summa - summa % 10)/10 + summa%10;
      Console.WriteLine(result);

Ильяс, движение в верном направлении, но есть ошибки:
— вам нужно вывести цифры отдельно
— вам нельзя использовать «число-результат == summa»

Иными словами, вы решили тем способом, который данная задача не позволяет.

System.Console.WriteLine(«Введите число десятков 1-го числа»);
int a2 = Convert.ToInt32(Console.ReadLine());
System.Console.WriteLine(«Введите число единиц 1-го числа»);
int a1 = Convert.ToInt32(Console.ReadLine());
System.Console.WriteLine(«Введите число десятков 2-го числа»);
int b2 = Convert.ToInt32(Console.ReadLine());
System.Console.WriteLine(«Введите число единиц 2-го числа»);
int b1 = Convert.ToInt32(Console.ReadLine());

int a2b2 = a2+b2+(b1+a1)/10;
int a1b1 = (b1+a1)%10;

System.Console.WriteLine((«Результат сложения = {0}{1}») , a2b2 , a1b1);

A4.10. Даны два целых числа a и b. Если a делится на b или b делится на a, то вывести 1, иначе — любое другое число. Условные операторы и операторы цикла не использовать.

using System;

namespace ДЗ1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(«Введите 2 числа для расчетов»);
int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
int c = a % b;
int d = b % a;
int Summ = (c * d) + 1;
Console.WriteLine(Summ);
}
}
}

using System;

namespace WorkInHome6
{
  internal class Program
  {
    static void Main(string[] args)
    {
      int numA = int.Parse(Console.ReadLine());
      int numB = int.Parse(Console.ReadLine());

      int result = numA / numB;
      result = result > 0 ? 1 : 28;
      Console.WriteLine(result);

      int result2 = numB / numA;
      result2 = result2 > 0 ? 1 : 29;
      Console.WriteLine(result2);
    }
  }
}

int value1 = Convert.ToInt32(Console.ReadLine());
int value2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(value1 / value2 == 0 ? 1 : "(Any number)");
Console.WriteLine(value2 / value1 == 0 ? 1 : "(Any number)");

Это работать не будет. Выражение value1 / value2 ,будет равно 0 только в случае когда 0 <= value1 < value2
В данном случае надо не делить, а брать остаток от деления.

Последний раз редактировалось 2 месяцев назад RadmirT ем

A4.6.
static void Main(string[] args)
{

//Ввод пользователем времени
//Разбиваем на массив с 3-мя элементами
//Конвертируем в тип integer
Console.WriteLine(«Введите пожалуйста время в 24 часовом формате ЧЧ.ММ.СС «);

string time = Console.ReadLine();
string[] time1 = time.Split(‘.’, ‘,’, ‘:’, ‘;’);
int[] time2 = Array.ConvertAll(time1, int.Parse);
Console.WriteLine(time2[0]);

//НЕ позволяет пользователю выйти за условия (0 ≤ h ≤ 23, 0 ≤ m ≤ 59, 0 ≤ s ≤ 59)

do
{
time = Console.ReadLine();
time1 = time.Split(‘.’, ‘,’, ‘:’);
time2 = Array.ConvertAll(time1, int.Parse);
Console.WriteLine(time2[0]);
}
while (time2[0] >= 24|| time2[0] = 60 || time2[1]= 60 || time2[2] 180)
{
Console.Write(360-g);
}
else
{
Console.WriteLine();
Console.WriteLine(g);
}
}
}

A4.1. Даны цифры двух целых чисел: двузначного a2a1 и однозначного b, где a1 — число единиц, a2 — число десятков. Получить цифры числа, равного сумме заданных чисел (известно, что это число двузначное). Слагаемое — двузначное число и число-результат не определять; условный оператор не использовать.
while (true)
{
int a2, a1, b;
int ones = a1 + b;
if (ones => 10)
{
a2++;
}
int resultTens = a2;
int resultOnes = ones % 10;
int result = resultTens + resultOnes;

if (result > 99)
{
Console.WriteLine(«Attention, sum of a2a1 and b can`t be > 99»);
Console.ReadLine();
Console.Clear();
}
else
{
break;
}
}

Задача 4.4

//Определить номер пары цифр, в которую входит k-я цифра
Console.WriteLine(«Введите число 1 <= k <= 180");
int k = Convert.ToInt32(Console.ReadLine());
int num = (k + 1) / 2;
Console.WriteLine($"{num}-я пара цифр");
//Определить двузначное число, образованное парой цифр,
//в которую входит k — я цифра
num += 9;
Console.WriteLine($"Число {num}");
//Определить k-ю цифру, если известно, что k — четное число
if (k % 2 == 0)
{
num = k % 20 / 2 + 1;
}
else
//Определить k-ю цифру, если известно, что k — нечетное число
{
num = k / 20 + 1;
}
Console.WriteLine($"Цифра {num}");
Console.ReadKey();

подскажите, пожалуйста, как понять задание 3)Определить k-ю цифру, если известно, что k — четное число или k — нечетное число? при каких исходных данных какой ответ должен получиться? не могу никак понять это задание. заранее благодарю за ответ!

A4.2. Даны цифры двух двузначных чисел, записываемых в виде a2a1 и b2b1, где a1 и b1 — число единиц, a2 и b2 — число десятков. Получить цифры числа, равного сумме заданных чисел (известно, что это число двузначное). Слагаемое — двузначное число и число-результат не определять; условный оператор не использовать.

            Console.Write("a2 = ");
            int a2 = Convert.ToInt32(Console.ReadLine());
            Console.Write("a1 = ");
            int a1 = Convert.ToInt32(Console.ReadLine());
            Console.Write("b2 = ");
            int b2 = Convert.ToInt32(Console.ReadLine());
            Console.Write("b1 = ");
            int b1 = Convert.ToInt32(Console.ReadLine());
            a2 = a2 + b2 + (a1 + b1) / 10;
            a1 = (a1 + b1) % 10;
            Console.Write($"c={a2}{a1}");

A4.1 Даны цифры двух целых чисел: двузначного a2a1 и однозначного b, где a1 — число единиц, a2 — число десятков. Получить цифры числа, равного сумме заданных чисел (известно, что это число двузначное). Слагаемое — двузначное число и число-результат не определять; условный оператор не использовать.

Console.Write("a2 = ");
int a2 = Convert.ToInt32(Console.ReadLine());
Console.Write("a1 = ");
int a1 = Convert.ToInt32(Console.ReadLine());
Console.Write("b = ");
int b = Convert.ToInt32(Console.ReadLine());
a2 = a2 + (a1 + b) / 10;
a1 = (a1 + b) % 10;
Console.Write($"c = {a2}{a1}");

A4.6 — 4.10

using System;
namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int a3, a2, a1, b1, k, h, m, s;
            // A4.6
            h = Vvod_Chisla_Int("h");
            m = Vvod_Chisla_Int("m");
            s = Vvod_Chisla_Int("s");
            if (h > 11) h %= 12;
            // вариант 1
            k = (s + 60 * m + 3600 * h) * 30;
            a1 = k / 3600;
            a2 = k % 3600 / 60;
            a3 = k % 3600 % 60;
            Console.WriteLine("Градусы: " +a1 + " минуты: " +a2 + " секунды: " +a3);
            Console.WriteLine("Градусы в десятичном формате: {0:F3}", (double)k / 3600);
            // вариант 2
            a1 = h * 30 + m / 2;
            a2 = m % 2 * 30 + s / 2;
            a3 = s % 2 * 30;
            Console.WriteLine("Градусы: " +a1 + " минуты: " +a2 + " секунды: " +a3);
            Console.ReadKey();
            //
            // A4.7
            double y;
            y = Vvod_Chisla("y");
            h = (int)(y / 30);
            m = (int)(y % 30 * 2);
            Console.WriteLine("Полных часов: {0} или {2}, минут {1}", h, m, h + 12);
            //
            // A4.8
            // 1 градус часовой стрелки соответствует 2 минутам времени.
            // 1 минута времени соответствует 6 градусам минутной стрелки.
            k = 2 * 2 * 6; // угол отклонения минутной стрелки
            h = 0; // полных часов
            m = 2 * 2; // полных минут
            //
            // A4.9
            double corner_h, corner_m, corner;
            int t_meet, t_90;
            h = Vvod_Chisla_Int("h");
            m = Vvod_Chisla_Int("m");
            corner_h = h * 30 + m / 2.0; // начальный угол часовой стрелки
            corner_m = m * 6; // начальный угол минутной стрелки
            if (corner_h >= corner_m)
                corner = corner_h - corner_m;
            else 
                corner = 360 - (corner_m - corner_h);
            // угловая скорость часовой стрелки 0.5 градусов/мин.
            // угловая скорость минутной стрелки 6 градусов/мин.
            t_meet = (int)(corner / (6 - 0.5)); // время схождения стрелок
                                                // ищем угол до перпендикулярности
            if ((corner_h - corner_m >= 0) && (corner_h - corner_m == 90) && (corner_h - corner_m == 270))
                corner = 90 - (360 - corner_h) - corner_m;
            else if (corner_h - corner_m == -90)
                corner = 90 - (corner_m - corner_h);
            else if (corner_h - corner_m == -270)
                corner = 360 - (corner_m - corner_h) - 90;
            else 
                corner = 360 - (corner_m - corner_h) + 90;
            t_90 = (int)(corner / (6 - 0.5)); // время установки стрелками угла 90 градусов
            Console.WriteLine("Время совпадения стрелок: {0}, перпендикулярности {1}", t_meet, t_90);
            Console.ReadKey();
            //
            // A4.10
            a1 = Vvod_Chisla_Int("a");
            b1 = Vvod_Chisla_Int("b");
            s = (a1 % b1) * (b1 % a1) + 1;
            Console.WriteLine(s);
            Console.ReadKey();
        }
        static double Vvod_Chisla(string info)
        {
            double chislo;
            string vvod;
            Console.Write("Введите " + info + ": ");
            vvod = Console.ReadLine();
            while (!Double.TryParse(vvod, out chislo))
            {
                Console.WriteLine("Недопустимые символы в строке ввода.Ожидается вещественное число:");
                vvod = Console.ReadLine();
            }
            return chislo;
        }
        static int Vvod_Chisla_Int(string info)
        {
            int chislo;
            string vvod;
            Console.Write("Введите " +info + ": ");
            vvod = Console.ReadLine();
            while (!Int32.TryParse(vvod, out chislo))
            {
                Console.WriteLine("Недопустимые символы в строке ввода.Ожидается целое число: ");
                vvod = Console.ReadLine();
            }
            return chislo;
        }
    }  
}

A4.5 Даны целое число k (1 ≤ k ≤ 150) и последовательность цифр 101102103…149150, в которой выписаны подряд все трехзначные числа от 101  до 150.
Определить k-ю цифру, если известно, что:
k — число, кратное трем;
k — одно из чисел 1, 4, 7, …;
k — одно из чисел 2, 5, 8, …
Примечание. Величины строкового типа не использовать.

a1 = k / 3 % 10;    // k кратно 3
a2 = 1;             // k — одно из чисел 1, 4, 7, …
a3 = (k + 1) / 30;  // k — одно из чисел 2, 5, 8, …

Задачи A4.1 — A4.4:

    class Program
    {
        static void Main(string[] args)
        {
            int a3, a2, a1, b1, b2, s1, s2, s3, k;
            // Для работы программы нужно присвоить значения переменным a3, a2, a1, b1, b2         
            a2 = Vvod_Chisla_Int("a2");
            a1 = Vvod_Chisla_Int("a1");
            b1 = Vvod_Chisla_Int("b1");
            // A4.1
            s1 = (a1 + b1) % 10;
            s2 = a2 + (a1 + b1) / 10;
            Console.WriteLine("Ответ 1: " + (s2 + s1));    
            // A4.2
            b2 = Vvod_Chisla_Int("b2");
            s1 = (a1 + b1) % 10;
            s2 = a2 + b2 + (a1 + b1) / 10;
            Console.WriteLine("Ответ 2: " + (s2 + s1));
            // A4.3
            a3 = Vvod_Chisla_Int("a3");
            s1 = (a1 + b1) % 10;
            s2 = a2 + b2 + (a1 + b1) / 10;
            s3 = a3 + (a2 + b2) / 10;
            Console.WriteLine("Ответ 3: " + (s3 + s2 + s1));
            // A4.4
            k = Vvod_Chisla_Int("k");
            a1 = k / 2 + k % 2; // номер пары
            a2 = ((k - 1) / 20 + 1) * 10 + ((k - 1) % 20) / 2; // значение пары чисел
            if (k % 2 != 0) a3 = k / 20 + 1; // k-я цифра (к — нечетное)
            else a3 = ((k - 1) % 20) / 2; // k-я цифра (к — четное)
            Console.WriteLine("ответ 4:" + a1 + " " + a2 + " " + a3);
            Console.ReadKey();
        }
        static int Vvod_Chisla_Int(string info)
        {
            int chislo;
            string vvod;
            Console.Write("Введите " + info +": ");
           vvod = Console.ReadLine();
            while (!Int32.TryParse(vvod, out chislo))
            {
                Console.WriteLine("Недопустимые символы в строке ввода.Ожидается целое число:");
                vvod = Console.ReadLine();
            }
            return chislo;
        }
    }

Спасибо за подсказку по Vvod_Chisla_Int().
Ваш вариант с аргументом симпатичнее!

Если пользователь решит ввести четыре 9-ки. То будет неверно (т.е. не получится двузначное число). ?
Значит нужно задавать условия?

Последний раз редактировалось 2 лет назад Роман ем

A4.6. Даны целые числа h, m, s (0 ≤ h ≤ 23, 0 ≤ m ≤ 59, 0 ≤ s ≤ 59), указывающие момент времени: «h часов, m минут, s секунд». Определить угол (в градусах) между положением часовой стрелки в начале суток и в указанный момент времени.
Решение:

using System;
class HelloWorld 
{
   static void Main() 
   {
      Console.Write("часы: "); // 0<=часы<=11
      int h=Convert.ToInt32(Console.ReadLine());
      Console.Write("минуты: "); // 0<=минуты<=59
      int m=Convert.ToInt32(Console.ReadLine());
      Console.Write("секунды: "); // 0<=секунды<=59
      int s=Convert.ToInt32(Console.ReadLine());
      int sum=(h*3600)+(m*60)+s;
      int corner=(sum/10)%360;
      Console.WriteLine("Угол стрелки часов = "+corner);
   }
}
40
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x