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

C++ Square Of Stars?

Здравейте,

бях започнал този курс: https://softuni.bg/trainings/1962/programming-basics-with-csharp-may-2018 , Programming Basics with C#. Почти завърших курса и реших да започна да се занимавам и с С++. Потърсих курс за С++ и намерих този: https://softuni.bg/trainings/1726/programming-basics-with-c-plus-plus-september-2017
Въпреки, че беше изтекъл гледах видеотата и започнах да правя задачите.
Всичко беше лесно, докъто не стигнах до Square of stars. Не правя задачите по простия начин (например, вместо да направя триъгълник от 55 звезди пишейки десет линий код с всеки следващ ред принтирайки по една звезда повече, го направих с for loop и string()).

Та, започнах да правя задачата и стигнах до тук: https://pastebin.com/YpURciXa

По някаква причина игнорира първите два if-a и направо отива на последния (if (i == N) ) и принтира безкрайни редове звезди (ако напиша 5 за да е квадрат 5х5, просто принтира "*****" безкрайно).

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

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

П.С. Ето улеснена версия на предишния код, просто преместих първия и последния ред на квадрата в един if statement - if (i == 1 || i = N)

Тагове:
0
C++ Fundamentals
MartinPaunov avatar MartinPaunov 77 Точки

Здравей,

Мисля, че отговора се крие във въпроса ти погледни си цикъла 

for (int i = 1; i = N; i++)

Поздрави

0
al_rusev avatar al_rusev 0 Точки

Хмм,
не разбирам. Има грешка в цикъла ли? Не трябва ли да е for (начално число; условие при което цикълът спира; с колко се увеличава началното число)? Ако е така както мисля че е, не би ли следвало да напишем 5, цикълът да започне, на първото завъртане i е 1, така че принтира *****, завърта се втори път, i = 2, така че i > 1 и принтира *   *, продължава така, принтира *   * още 2 пъти, i е равно на 5 и принтира *****.
Поздрави

0
MartinPaunov avatar MartinPaunov 77 Точки

Проблема е точно в условието на цикъла, това което си написал не е булево условие, което да проверява до кога трябва да се изпълнява цикълка. Написал си присвояване на стойност, като този оператор в С++, поставен в накаква булева конструкция или израз винаги, докато може да присвои стойността ще върне резултата от присвояването в този случай повече от 0. Казано иначе, ако въведеш нула цикъла няма да се изпълни нито един път, от друга страна това всеки път присвоява стойността на N на i. Което е друга причина цикъла ти никога да не спре. Просто смени условието в цикъла:

 

for (int i = 1; i <= N; i++)

 

0
al_rusev avatar al_rusev 0 Точки

Мерси, сега разбрах :). Промених го и цикълът работи.

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