Reputation:
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?
Upvotes: 4
Views: 239
Reputation: 3060
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();
}
}
Upvotes: 0
Reputation: 101681
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
Upvotes: 1
Reputation: 252
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.
Upvotes: 0