Loading...
Lubomirrrr avatar Lubomirrrr 32 Точки

Пояснение за 2-ра задача от Programming Basics Exam - 12 July 2015

Не мога да разбера от къде се вдига tempSum на 28-ред - дебъгвам 5 пъти вече и tempSum се покачва някак си(достига 15 и приключва,след това достига 6 и приключва) и не разбирам как?

Задачата е правилна,просто искам я разнищя за да разбера кое как работи и къде отива.

 

Условие - https://judge.softuni.bg/Contests/100/Programming-Basics-Exam-12-July-2015

Код - http://pastebin.com/cU817F64

Тагове:
0
Programming Basics 29/06/2016 19:24:28
Lusien.GG avatar Lusien.GG 66 Точки
tempSum += int.Parse(strSum[i].ToString());   

Това е 28ми ред. Оператора  += е причината tempSum да се вдига. Защо?
Защото:

X += Y  е същото, като X = X + Y


Все едно имаш:
 

tempSum = tempSum + int.Parse(strSum[i].ToString()); 

Надявам се, че отговорих на въпроса ти.

0
Lubomirrrr avatar Lubomirrrr 32 Точки

Не не това,когато въведеш този вход - abc
;7*8&yioyg<&mtossglmulV     

 

Когато програмата стигне до tempSum и започне да върти цикъла - първия път tempSum се покачва с 2 после става 11 и на 15 завършва - тачно това покачване ме интересува от къде го прави.

Когато излезне от for и влезне в white цикъла,след това пак влезне в for - и този път   tempSum се върти 2-пъти - първия път става 1 и след това скача на 6 и програмата спира.

 

Та tempSum първо става 15,и след това 6 - това може би има нещо общо със това - ;7*8&yioyg<&mtossglmulV(понеже дължината на реда е 23)

Но tempSum как така си смята тези чесла - 15 после 6

Това само с дебъгване може да го провериш. 

 

 

0
Lusien.GG avatar Lusien.GG 66 Точки

Извинявай, че се забавих с отговора. Като ти е неясно, то дебъгваш по старомодния начин, понякога е по-готино и се разбира по-добре(със сигурност е повече UserFriendly такова дебъгване laugh). Ето така:

for (int i = 0; i < secretWord.Length; i++)
{
  sum += secretWord[i];
 // HERE <--------------
}

добави това:

Console.WriteLine("ASCII code of "+secretWord[i]+" is "+(int)secretWord[i]+" current sum is: "+sum );

И тук:

 while (strSum.Length > 1)
{
  tempSum = 0;
  for (int i = 0; i < strSum.Length; i++)
  {
      tempSum += int.Parse(strSum[i].ToString());
  }
 // HERE <-------
  strSum = tempSum.ToString();
}

това:

Console.WriteLine("Current sum: "+strSum+" Sum of digits: "+tempSum);

след това пусни програмата и пробвай с разни инпути, би трябвало да ти се изясни кое от къде идва. Поне, доколкото успях да разбера какво те мъчи. Мисля, че така ще си отговориш на някои въпроси.
 

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