Попытка удалить последние "и" в конце моего списка вывода - PullRequest
0 голосов
/ 16 октября 2019

Для моей домашней работы по программированию на C # нам пришлось написать программу, позволяющую пользователю вводить целое число и использовать цикл для вывода коэффициентов этого целого числа. У меня есть программа для вывода целых чисел. Проблема, например, когда я ввожу в целое число «24», я хочу, чтобы вывод был 1 and 2 and 3 and 4 and 6 and 8 and 12 and 24

, но выходной вывод был 1 and 2 and 3 and 4 and 6 and 8 and 12 and 24 and

Я надеваюМне не нужны дополнительные "и" в конце моего списка факторов

Вот как выглядит мой код:

using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int a, b;
            Console.WriteLine("Please enter your integer: ");
            a = int.Parse(Console.ReadLine());
            for (b = 1; b <= a; b++)
            {
                if (a % b == 0)
                {
                    Console.Write(b + " ");
                }
            }
            Console.ReadLine();
        }
    }
}

РЕДАКТИРОВАТЬ: выход имеет дляотформатировать как 1 and 2 and 3 and 4 and 6 and 8 and 12 and 24, иначе я не получу кредит за назначение

Ответы [ 4 ]

2 голосов
/ 16 октября 2019

Вы можете перечислить факторы, а затем Join их с помощью " and "

 private static IEnumerable<int> Factors(int value) {
   // Simplest, not that efficient
   for (int i = 1; i <= value; ++i)
     if (value % i == 0)
       yield return i;
 } 

 ...

 Console.Write(string.Join(" and ", Factors(24)));

Или вы можете добавить " and " до , а не после коэффициенты печати (i)

 int value = 24;

 bool firstTime = true; 

 // Simplest, not that efficient
 for (int i = 1; i <= value; ++i) {
   if (value % i == 0) {
     // print "and" before printing i
     if (!firstTime)         
       Console.Write(" and ");

     firstTime = false;   

     Console.Write(i);
   }
 }
0 голосов
/ 16 октября 2019

Я бы порекомендовал вам создать строку и вывести эту строку, потому что она позволяет вам делать с ней больше, а затем сделать что-то вроде этого:

        int a, b;
        string x="";
        Console.WriteLine("Please enter your integer: ");
        a = int.Parse(Console.ReadLine());
        for (b = 1; b <= a; b++)
        {
            if (a % b == 0)
            {
                x=x + b.toString() +" and";
            }
        }

, если вы знаете, что всегда будет "и "в конце вы можете просто сделать это

string x = x.Substring(0, x.Length - 3);

, а затем

Console.Write(x);
Console.ReadLine();
0 голосов
/ 16 октября 2019
    static void Main(string[] args)
    {
        //get input from user
        Console.WriteLine("Please enter your integer: ");
        int a = int.Parse(Console.ReadLine());

        //enumerate factors
        var factors = Enumerable.Range(1, a)
            .Where(i => a % i == 0).ToArray();

        //join for nicely printed output
        Console.Write(string.Join(" and ", factors));

        Console.ReadLine();
    }
0 голосов
/ 16 октября 2019

Как насчет добавления чисел к List и печати после цикла:

int a, b;
a = int.Parse(Console.ReadLine());
var result = new List<int>();
for (b = 1; b <= a; b++)
{
    if (a % b == 0)
    {
        result.Add(b);
    }
}

Console.Write(string.Join(" and ", result));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...