bouya98 Ответов: 3

C# домашнее задание создайте программу, содержащую два метода.


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

К вашему сведению, я новичок в программировании.

Задача такова:





Примеры выполнения программы

Введите слово: Боб
* б * о * б *
Боб зашифрованный становится CPC

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

Я добрался до этого места, но я не могу показаться, чтобы получить звездочку ( * ), чтобы получить между написанным словом, и я не могу показаться, чтобы получить право шифрование электронной.г а &ГТ; Б

using System;
using System.Text;
using System.Collections;

namespace Methods
{
    class Program
    {
        static void Main(string[] args)
        {
            char temp;
            string myStr;
            Console.Write("Enter a word or a city to see magic: ");
            myStr = Convert.ToString(Console.ReadLine());
            Magic("");

            string str = myStr.ToLower();
            char[] charstr = str.ToCharArray();

            for (int i = 1; i < charstr.Length; i++)
                {
                  for (int j = 0; j < charstr.Length - 1; j++)
                  {
                     if (charstr[j]>charstr[j+1])
                        { temp = charstr[j];
                          charstr[j] = charstr[j + 1];
                          charstr[j + 1] = temp;
                        }
                  }
                  Console.WriteLine(charstr);
                  Console.ReadLine();
               }

        }

        public static void Magic(string heading, char tecken = '*')
        {
            int antal = heading.Length;
            for(int i = 0; i < antal + 6; i++) {
               Console.Write(tecken + heading + tecken); }
            }
        }
    }
}

3 Ответов

Рейтинг:
22

RickZeeland

Вот ты где:

static void Main(string[] args)
{
    Console.Write("Enter a word or a city to see magic: ");
    string myStr = Console.ReadLine();
    Magic1(myStr);
    Console.WriteLine(Magic2(myStr));
    Console.ReadKey();
}

public static void Magic1(string heading)
{
    string result = string.Empty;

    foreach (char c in heading)
    {
        char c2 = (char)(c + 1);
        result += c2.ToString();
    }

    Console.WriteLine(result);
}

public static string Magic2(string heading, string tecken = "*")
{
    string result = tecken;

    foreach (char c in heading)
    {
        result += c.ToString() + tecken;
    }

    return result;
}


Вот пример для StringBuilder:
https://www.dotnetperls.com/stringbuilder[^]
Для этого кода он мало полезен, только при обработке более длинных строк он может ускорить процесс.


bouya98

Рики! Вау, кажется, это работает, когда я ставлю его так Magic1("Стокгольм ");
Magic2("Стокгольм ");
Но как мне сделать так, чтобы он изменил ввод от пользователя на Magic1 и 2?

Так же, как если бы пользователь печатал, Стокгольм это выходит - * S * T * O * C * C * H * O * L * M *
Стокгольмский шифр становится ТУПДЛИПМНОМ

Maciej Los

Согласно требованиям, второй метод должен возвращать строку. Так что это не может быть ... void метод.

bouya98

Помогите мне, Пожалуйста, сэр, я понятия не имею, как это сделать :/, просто продолжайте получать ошибку " серьезность кода описание файла проекта строка подавления состояние подавления состояние подавления
Ошибка CS0161 'Program.Magic2(string, string)': не все пути кода возвращают значение"
При попытке перейти на строку из void

RickZeeland

Это снова привело меня туда :)

bouya98

Рикки, кстати, твой ответ сработал великолепно. :)

Рейтинг:
1

Maciej Los

Magic написано неправильно... Вы должны создать новую строку внутри цикла, чтобы отобразить ее окончательно.
1) на первом этапе -> newstring += "* " + char[i] + " * "
2) в каждом среднем шаге -> newstring += char[i] + " * "
3) на последнем шаге -> newstring += char[i] + " *"

Я бы посоветовал использовать класс StringBuilder[^], потому что string является неизменным[^].

Я не вижу второго способа...
Все очень просто. Вам нужно перебрать символы строки и добавить 1 к значению ascii каждого символа.

char s = 'S';
char t = (char)((int)s + 1);
//t = "T" ;)

Не забудьте использовать StringBuilder!

Удачи вам!


bouya98

Я не знаю, что такое stringbuilder :o

Maciej Los

Итак, перейдите по ссылке, которую я вам предоставил.

bouya98

Должен ли я сделать stringbuilder в main или в методах?

Maciej Los

Внутри методов.

Рейтинг:
1

George Swan

Есть простые способы сделать это, если вы знакомы с linq и методами расширения. Что - то вроде следующего, инкапсулированного в методы.

//surround hello with *
string input = "hello";
var starsInBetween= string.Join("*", input.ToCharArray());
string surroundedByStars= $"*{starsInBetween}*";

//shift char value by +1
var charArray = "Bob".ToCharArray();
var encryptedArray = charArray.Select(a => ++a).ToArray();
var encryptedString = new string(encryptedArray);


bouya98

Но это влияет только на "Привет" и "Боб", верно?, я хочу, чтобы это повлияло на ввод пользователя. Эта задача так трудна

George Swan

Попробуйте найти " консольный Класс C#", чтобы узнать о вводе и выводе текста. Затем найдите " методы C#", чтобы узнать, как они используются. Если я просто выложу здесь полное решение, вы ничего не узнаете, а ваш учитель почует крысу.

bouya98

на самом деле нет, наш учитель почти ничему нас не научил и просит нас выполнить такую задачу. Мы едва знаем, как сделать петлю foor

George Swan

Жаль это слышать. Попробуйте найти " научите себя c#" и взять его оттуда.