简体   繁体   中英

Rerun a program using nested for loops

I just started learning how to program in c #, so don't shoot me if I have "dumb" questions or questions to which the answer is probably very logical.

I have the next assignment:

Use a for loop to write the next pattern:

1 2 3 4 5 6 7 8 9 10 10
11 12 13 14 15 16 17 18 19 20 20
21 22 23 24 25 26 27 28 29 30 30
31 32 33 34 35 36 37 38 39 40 40
41 42 43 44 45 46 47 48 49 50 50
51 52 53 54 55 56 57 58 59 60 60
61 62 63 64 65 66 67 68 69 70 70
71 72 73 74 75 76 77 78 79 80 80
81 82 83 84 85 86 87 88 89 90 90
91 92 93 94 95 96 97

It has to be possible for the user to set a maximum (in this example 97) and then rerun the application without restarting.

What I am trying now is this:

class Program
{
    static void Main(string[] args)
    {
        string output = "", input = "";
        int MaxWaarde, karakters = 15;
        do
        {           
            Console.WriteLine("Gelieve het maximum van de matrix in te geven");
            input = Console.ReadLine();
            MaxWaarde = Convert.ToInt32(input);

            for (int i = 1; i <= MaxWaarde; i += 11)
            {
                Console.Write(i);
                for (int j = i; j < MaxWaarde + 1; j += karakters)
                {
                    Console.Write(j);
                }                   
                Console.WriteLine(karakters + "");
            }             
            Console.Write("\nOpnieuw een matrix aanmaken? (y/n): ");
            output = Console.ReadLine();
        }           
        while (output.ToLower() == "y");
    }
}

Which isn't correct at all, but I have been trying to fix this for a while now, and I think I have been staring myself blind at this one, so i really don't know which way to go with this anymore.

Somebody who can give me some advice on how to make this right?

Nested for loops doesn't seem like a good idea here.You can do it with one for loop.You are incrementing i +11 in every step,probably your mistake is here. Consider this:

for (int i = 1; i <= MaxWaarde; i++)
{ 
    if(i % 10 != 0) Console.Write(i + " ");
    else
    {
       Console.Write(i + " " + i + "\n");
    }
}

% is modulus operator .We are looking for remainder of currentNumber / 10 , if it's not zero we write the number. If it is then we write value twice and adding a newline character with \\n to go the next line.Also You can use Console.WriteLine() instead of \\n

Loop1 : Count up from 1 to number by step 1. If number is a multiple of 10 it writes that number again with line feed.

Loop2 : Do loop1 again as long user wishes.

Here you go

    public static void Main(string[] args)
    {
        for (;;)
        {
            var val = int.Parse(Console.ReadLine());

            for (int i = 1; i <= val; i++)
            {
                if (i % 10 == 0)
                {
                    Console.WriteLine("{0} {0}", i);
                }
                else
                {
                    Console.Write("{0} ", i);
                }
            }

            Console.WriteLine();
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM