Member 13183558 Ответов: 2

Может ли кто-нибудь описать программу относительно того, что она делает?


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _08137_ACW2_Code
{
    class Program
    {
        static void Main(string[] args)
        {
            string x;
            bool f;
            int a, z, g; 
            x = Console.ReadLine();
            g = x.Length;
            z = (g - 1);
            a = 0;

            if (g == 1)
            {
                f = true;
            }
            else
            {
                f = true;

                while (f == true && a < z)
                {
                    while (x[a] == ' ' || x[a] == ',' || x[a] == ';' || x[a] == '!' || x[a] == '?' || x[a] == '.')
                    {
                        a++; 
                    }

                    while (x[z] == ' ' || x[z] == ',' || x[z] == ';' || x[z] == '!' || x[z] == '?' || x[z] == '.')
                    {
                        z--; 
                    }

                    if (x[a].ToString().ToUpper() == x[z].ToString().ToUpper()) 
                    {
                        a++; 
                        z--;                     }
                    else
                    {
                        f = false;
                    }
                }
            }

            if (f == false)
            {
                Console.WriteLine("The string you entered is NOT a palindrome.");
            }
            else
            {
                Console.WriteLine("The string you entered IS a palindrome.");
            }
        }
    }
}


Что я уже пробовал:

Я пробовал читать код, но не могу его понять

2 Ответов

Рейтинг:
5

CHill60

Если вам дали какой-то код и вы понятия не имеете, что он делает, я должен предположить, что это задание или домашнее задание.

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

Учитывая сообщения в конце кода, я бы сказал, что он тестирует некоторые входные данные, чтобы определить, является ли этот вход палиндромом. Хотя я сомневаюсь, что просто сказать это будет достаточно для вашего учителя.

Лучший совет, который я могу вам дать, - это запустить программу в режиме отладки (см. Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]) и попытаться проследить за тем, что он делает


Рейтинг:
17

OriginalGriff

Нет.
Он плохо написан, недокументирован, с плохими отступами, полон бессмысленного кода и склонен к провалу.
Когда у вас есть ваши проверки loop guard вне цикла, который изменяет значения, это всегда плохой знак... :смеяться:

Но, как я догадываюсь, он проверяет палиндром, (плохо) игнорируя небуквенные символы и сравнивая с обоих концов. Но он сообщит, что "тако-кот" не является палиндромом, когда он есть...

Верните код своему приятелю, скажите ему, что он, вероятно, получит отметку неудачи, когда он передаст его, и напишите свой собственный должным образом!