Loading...
svetlio avatar svetlio 0 Точки

Умнонжение на всеки от елементите на масив с 5

{

  int m = 5;
  int[] arr = new int[20];
  for (int i = 0; i < arr.Length; i++)
  {
      arr[i] = i*m;        
   }
   for (int i = 0; i < arr.Length; i++)
   {
       Console.WriteLine("element {0} = {1}", i + 1, arr[i]);
   }

}

 

Въпрос: В първият for цикъл защо при инициализация с int i = 1  при стартиране на дебъгера ми показва, че i*m e 0, а не трябва ли след като и е 1 умножено с m, което е 5 да ми даде 5(това е при първото обхождане)

Тагове:
0
C# Advanced
CvetanCankovVelikov avatar CvetanCankovVelikov 30 Точки
Best Answer

ето един простичък начин също http://pastebin.com/9yrEaZG5

3
a.angelov avatar a.angelov 1316 Точки

При първото завъртане на цикъла i = 0, при второто е 1.

i++ означава - използвай настоящата стойност на i /т.е. 0/ и след това я увеличи с 1-ца /и стойността тогава става 1/.

2
svetlio avatar svetlio 0 Точки

Благодаря колега! А мога ли да попитам ако решението изглежда ето така:

{

  int m = 5;
  int[] arr = new int[20];
  for (int i = 1; i < arr.Length; i++)
  {
      arr[i] = i*m;        
   }
   for (int i = 0; i < arr.Length; i++)
   {
       Console.WriteLine("element {0} = {1}", i + 1, arr[i]);
   }

}

Защо на конзолата отговорите са идентични, инициализацията на i = 1
Тоест в дебъг режим: ми изкарва при for(int i = 0;....)

        args    {string[0]}    string[]
        i    1    int
        m    5    int
        arr    {int[20]}    int[]
        [0]    0    int
        [1]    5    int
        [2]    10    int
        [3]    0    int
        [4]    0    int

       .......

        [19] 0     int

И при for(int i = 1; .....)

        i    1    int
        m    5    int
-        arr    {int[20]}    int[]
        [0]    0    int - // тук не трябва ли числото да е 5
        [1]    5    int
        [2]    10    int
        [3]    0    int

.....

 

0
14/02/2016 17:43:03
a.angelov avatar a.angelov 1316 Точки

Защото първият ти цикъл започва от 1 и така работиш с масива от втория елемент /индекс 1/, а не от първия /индекс 0/. А с втория цикъл печаташ масива от първия елемент /индекс 0/.

2
14/02/2016 15:55:48
svetlio avatar svetlio 0 Точки

Благодаря много колега за навременния отговор!

0
r3v3nan7 avatar r3v3nan7 365 Точки

Може би ако използваш 

++ като префикс , а не като суфикс може би ще стане. Имам предвид:

ето го твоят вариант:

for (int i = 0; i < arr.Length; i++)
  {
      arr[i] = i*m;        
   }

 

след като премести ++ отпред

for (int i = 0; i < arr.Length; ++i)
  {
      arr[i] = i*m;        
   }

 

Ако искаш пробвай така.

 

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.