2015-08-02 2 views
0

Я новичок в C#.Печатная матрица с одной для петли

У меня есть две переменные, которые я получаю от пользователя с именем «строка» и «столбец». Моя цель - написать «*», чтобы отобразить много строк и столбцов, которые я получаю от пользователя. Например, пользователь ввел 5 столбцов и 5 строк:

00000 
00000 
00000 
00000 
00000 

Но когда я запускаю свою программу, как это выглядит:

00000 
00000 
00000 
00000 
0000 

(да, последний из которых пропущена).

Мой код:

int i; 
int satir, sutun; 
Console.WriteLine("Kaç satır olsun?"); 
satir = Convert.ToInt32(Console.ReadLine()); 
Console.WriteLine("Kaç sütun olsun peki?"); 
sutun = Convert.ToInt32(Console.ReadLine()); 

for (i=1; i < sutun * satir; i++) 
{ 
    if (i%sutun==0) 
    { 
     Console.Write("\n"); 
    } 
    else 
    { 
     Console.Write("*"); 
    } 
} 
Console.ReadLine(); 

Как я могу это исправить? Спасибо, совет.

+2

'<' должно быть '<='. – Blorgbeard

+0

Отладить его. Установите точку останова. – SimpleVar

ответ

1

На самом деле выход выглядит следующим образом:

Kaç satır olsun? 
5 
Kaç sütun olsun peki? 
5 
**** 
**** 
**** 
**** 
**** 

I.e. вместо пяти столбцов вы получаете четыре столбца. Для первых четырех строк это потому, что вы пишете разрыв строки вместо пятой звездочки, а для последней строки это потому, что вы пишете слишком мало звездочек.

Вы должны выписать еще одну звездочку, которую вы можете сделать с помощью оператора <= вместо < в петле, и вы не должны выписывать разрыв строки вместо звездочки, но после того, как:

int i; 
int satir, sutun; 
Console.WriteLine("Kaç satır olsun?"); 
satir = Convert.ToInt32(Console.ReadLine()); 
Console.WriteLine("Kaç sütun olsun peki?"); 
sutun = Convert.ToInt32(Console.ReadLine()); 

for (i = 1; i <= sutun * satir; i++) { 
    Console.Write("*"); 
    if (i % sutun == 0) { 
    Console.Write("\n"); 
    } 
} 
Console.ReadLine(); 
2

i должно быть меньше или равно sutun.

for (i=1; i <= sutun * satir; i++) 

Bonus Примечание: Как отлаживать мои C# код

Установите контрольную точку в стороне вашего цикла и нажмите F10 идти построчно. Тогда вы можете узнать, что происходит.

1

должны не только ваш for петля выглядеть (Измененная < к <=):

for (i=1; i <= sutun * satir; i++) 

Вы не должны печатать звездочку ни на что. Возьмите Console.Write("*") из ряда if/else блока и поместите его в верхней части петли, оставляя только и if заявление, чтобы напечатать newline персонажу

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     int i; 
     int satir, sutun; 
     Console.WriteLine("Kaç satır olsun?"); 
     satir = Convert.ToInt32(Console.ReadLine()); 
     Console.WriteLine("Kaç sütun olsun peki?"); 
     sutun = Convert.ToInt32(Console.ReadLine()); 
     for (i = 1; i <= sutun * satir; i++) 
     { 
      Console.Write("*"); 
      if (i % sutun == 0) 
      { 
       Console.Write("\n"); 
      } 
     } 
    } 
} 

Результаты:

Kaç satır olsun? 
3 
Kaç sütun olsun peki? 
5 
***** 
***** 
***** 

Fiddle Demo