.NET 4.x Зная порядок, в котором Дилли нажимал на кнопки лифта, попробуйте определить общее количество этажей - C#

Узнай цену своей работы

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

Я Учу С# 3 день, решил попытаться решить задачку: В доме Вилли установили скоростной лифт новой экспериментальной модели. В этом лифте кнопки с номерами этажей заменены двумя другими кнопками. При нажатии на первую кнопку лифт поднимается на один этаж вверх, а при нажатии на вторую – опускается на один этаж вниз. Младшему брату Вилли Дилли очень нравится кататься на новом лифте. Он катается на нём до тех пор, пока не побывает на каждом из этажей хотя бы по одному разу. После этого Дилли довольный возвращается домой. Зная порядок, в котором Дилли нажимал на кнопки лифта, попробуйте определить общее количество этажей в доме Вилли и Дилли.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        public static int Drr(string s) // функция подсчёта количества этажей
        {
            int etaz = 1,chislo1;  // etaz - переменная подсчёта количества этажей 
            int chislo = System.Convert.ToInt32(s); //  Строку в число
            while (chislo != 0)
            {
                chislo1 = chislo % 10;
                if ((chislo1 == 2) && (etaz == 1)) etaz = 1;
                else if (chislo1 == 2) etaz--;
                else if (chislo1 == 1) etaz++;
                chislo /= 10;
            }
            return etaz;
        }
 
        static void Main(string[] args)
        {
            string s; int i; Boolean f = true ;
            System.Console.Write("Введите последовательность нажатий кнопок 1 и 2\n");
            s = System.Console.ReadLine();
            for (i = 0; i == s.Length; i++)
            {
                if ((s[i] == 2) || (s[i] == 1)) f = true;
                else f = false;
 
            }
            if (f == false) System.Console.WriteLine("Вы ввели неправельное значение");
            else 
            {
                System.Console.Write(Drr(s));   
            }
            System.Console.ReadLine();
        }
    }
}
Дело в том, если я ввожу другие цифры вместо 2 и 1, то функция возвращает мне всегда значение 1, кто может объясните, по проще, в чём ошибка, если не затруднит...

Решение задачи: «.NET 4.x Зная порядок, в котором Дилли нажимал на кнопки лифта, попробуйте определить общее количество этажей»

textual
Листинг программы
using System;
 
namespace App1
{
    class Program
    {
        public static int Drr(string s) // функция подсчёта количества этажей
        {
            int etaz = 1;     // текущий этаж
            int maxEtaz = 1;  //количество этажей
            int chislo1;  
            int chislo = System.Convert.ToInt32(s); //  Строку в число
            while (chislo != 0)
            {
                chislo1 = chislo % 10;
                if (chislo1 == 1)
                    etaz++;
                if (chislo1 == 2)
                    etaz--;
                if (etaz > maxEtaz)
                    maxEtaz = etaz;
                chislo /=10;
            }
            return maxEtaz;
        }
        public static void Main(string[] args)
        {
            string s; 
            bool f = true;
            System.Console.Write("Введите последовательность нажатий кнопок 1 и 2\n");
            s = System.Console.ReadLine();
           for (int i = 0; i < s.Length; i++)
            {
                if ((s[i] != '2') && (s[i] != '1')) //s[i] - char, сравнивать надо тоже с char
                {
                    f = false;
                    break;
                }
            }
            if (f == false) System.Console.WriteLine("Вы ввели неправельное значение");
            else 
            {
                System.Console.Write(Drr(s));   
            }
            Console.ReadKey(true);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы