Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

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

 

Програми с функции...

Featured Replies

Това което твърдиш е връх на тъпотията. НЯМА причина заради която да е хубаво да си декларираш масивите с един два елемента повече от колкото ти трябват. Това би го направил само някой ламер с цел да не излезе от границите на масивът при циклично обхождане.

  • Отговори 62
  • Прегледи 13k
  • Създадено
  • Последен отговор
преди 5 часа, mr mcwolf написа:

Това което твърдиш е връх на тъпотията. НЯМА причина заради която да е хубаво да си декларираш масивите с един два елемента повече от колкото ти трябват. Това би го направил само някой ламер с цел да не

преди 5 часа, mr mcwolf написа:

с цел да не излезе от границите на масивът при циклично обхождане

.

Трудно ли ще ти е да увеличиш размера с толкова МНОГО?

Не разбира се, лесно е да набие +1 за размер на масив, особено ако си ламер който не може да се оправи с размерът. Но разбира се,  като ламер едва ли осъзнаваш какво значи това: в масивът се въвеждат произволни данни (или нула, в зависимост от език и компилатор). 

Хайде сега си представи как търсиш най-малкия елемент или най-големия, как изчисляваш средна стойност и т.н.

Та не се прави на интересен, изказването ти е меко казано тъпо и бележи липса на елементарни познания. Да не говорим, че го изпляска в тема на повече от пет години.. 

преди 2 минути, mr mcwolf написа:

Не разбира се, лесно е да набие +1 за размер на масив, особено ако си ламер който не може да се оправи с размерът. Но разбира се,  като ламер едва ли осъзнаваш какво значи това: в масивът се въвеждат произволни данни (или нула, в зависимост от език и компилатор). 

Хайде сега си представи как търсиш най-малкия елемент или най-големия, как изчисляваш средна стойност и т.н.

Та не се прави на интересен, изказването ти е меко казано тъпо и бележи липса на елементарни познания. Да не говорим, че го изпляска в тема на повече от пет години.. 

И кой беше ти, че нещо не мога да се сетя? Ела на някоя олимпиадка, да те видим колко си мощен... :) 

Ако искам и в тема на 6,7 години ще го изпляскам... нещо проблемче ли има?

Това с повечето елементи е пълна простотия и не виждам абсолютно никаква полза, а само недостатъци.

Цитат

Трудно ли ще ти е да увеличиш размера с толкова МНОГО?

Представи си , че имаш 100 функции и във всяка имаш по няколко масива с "допълнителни" елементи.Сам си направи сметката колко памет отива на вятъра.Да мажеш така за PC може, но я си представи, че е за embedded и си ограничен от към памет.

Отделно всяко нещо свързано с тези масиви ще бъде доста свъркано.Как ще го обхождаш?sizeof(array)/sizeof(array[0]) очевидно няма да работи, защото реално от този масив ти не ползваш всичко.Следователно ще имаш "magic numbers" за които няма и да коментирам колко лоша практика са.Сигурно ще е нещо такова: for( i = 0 ; i < (sizeof(array)/sizeof(array[0])-5) ; i++) .После всеки който трябва да поддържа твоя код ще му се реве с всички тези нелогични глупости.

Понеже си писал многооо код и ги разбираш много нещата защо не споделиш защо твоето твърдение е добра практика?

 

преди 4 часа, Martin Chekurov написа:

Това с повечето елементи е пълна простотия и не виждам абсолютно никаква полза, а само недостатъци.

Представи си , че имаш 100 функции и във всяка имаш по няколко масива с "допълнителни" елементи.Сам си направи сметката колко памет отива на вятъра.Да мажеш така за PC може, но я си представи, че е за embedded и си ограничен от към памет.

Отделно всяко нещо свързано с тези масиви ще бъде доста свъркано.Как ще го обхождаш?sizeof(array)/sizeof(array[0]) очевидно няма да работи, защото реално от този масив ти не ползваш всичко.Следователно ще имаш "magic numbers" за които няма и да коментирам колко лоша практика са.Сигурно ще е нещо такова: for( i = 0 ; i < (sizeof(array)/sizeof(array[0])-5) ; i++) .После всеки който трябва да поддържа твоя код ще му се реве с всички тези нелогични глупости.

Понеже си писал многооо код и ги разбираш много нещата защо не споделиш защо твоето твърдение е добра практика?

 

Моето твърдение върши работа за начинаещи в света на програмирането. Винаги човек, който не е писал много код, може да излезе от границите на масива при цикъл. Като гледам човекът, който е пуснал темата, не е много напреднал в програмирането. За по-сложни проекти съм напълно съгласен, че масивът се прави с точния брой елементи. Не разбирам защо се заяждаш!

Не бях чел задачите, но в първата задача няма никакъв проблем да се направи масив и от 200 елемента, стига да се сложи условие в циклите итераторът да бъде по малък от 10 (или равен, ако започваме от 1). Изключвам паметта и времето, които в състезания играят важна роля, но в случая не гоним някакво време.

878323263_6.thumb.PNG.e320d2c2ba5d365bd6a30bcd02763978.PNG

Въпросът си остава същия, ако имаме n елемента и размерът на масива влиза в интервалите на n.

Обикновено на състезанията, на които съм присъствал не правят никакъв проблем 2,3 елемента + за ограничението на паметта.

Грешките, които се получават на състезания са най-често от типа runtimeerror, time limit, wrоng answer. В началните/лесните състезания рядко може да ти се препълни паметта, освен ако не декларираш един милион променливи, но напред се появява този проблем. В такъв случай се мисли за по-оптимизирано решение, а не да намаляваш размера на масива с 1,2. Редовно ми се случва системата, която ми проверява задачите да не засича проблеми с паметта. Редовно пращам задачи, на които максималната допустима памет е примерно 16 MB, а аз пращам с 26MB и изкарвам 100/100.

Мога да кажа още много по въпроса, но не мисля, че има нужда да спорим. 

Редактирано от Александър Тодоров (преглед на промените)

Хайде стига с тези състезания...

Иначе между другото скобите са задължителни.

if ( br >= 1) cout << "Yes" << endl;

 е лоша практика и може да доведе до трудно откриваеми грешки.

Също така е препоръчитенло скобите да са на същия ред.В противен случай пак могат да се получат гадни грешки.А и веднага се вижда коя скоба за кое е .

Тук грешката е трудно откриваема

if (value > maximum);
{
    dosomething();
}

а тук веднага се вижда

if (value > maximum); {
    dosomething();
}

Сещам се за още стотици примери, но ме мързи да пиша.

И последно 

using namespace std;

също е лоша практика: 

Цитат

But consider this: you are using two libraries called Foo and Bar:

using namespace foo;
using namespace bar;

Everything works fine, you can call Blah() from Foo and Quux() from Bar without problems. But one day you upgrade to a new version of Foo 2.0, which now offers a function called Quux(). Now you've got a conflict: Both Foo 2.0 and Bar import Quux() into your global namespace. This is going to take some effort to fix, especially if the function parameters happen to match.If you had used foo::Blah() and bar::Quux(), then the introduction of foo::Quux() would have been a non-event.

Така, че стига се изхвърля с това на колко състезания ходиш и колко точки взимаш.Ако не се занимаваш професинално не знаеш нищо.

преди 1 час, Martin Chekurov написа:

Хайде стига с тези състезания...

Иначе между другото скобите са задължителни.


if ( br >= 1) cout << "Yes" << endl;

 е лоша практика и може да доведе до трудно откриваеми грешки.

Също така е препоръчитенло скобите да са на същия ред.В противен случай пак могат да се получат гадни грешки.А и веднага се вижда коя скоба за кое е .

Тук грешката е трудно откриваема


if (value > maximum);
{
    dosomething();
}

а тук веднага се вижда


if (value > maximum); {
    dosomething();
}

Сещам се за още стотици примери, но ме мързи да пиша.

И последно 


using namespace std;

също е лоша практика: 

Така, че стига се изхвърля с това на колко състезания ходиш и колко точки взимаш.Ако не се занимаваш професинално не знаеш нищо.

Айде стига глупости! Не ми се слушат! Скобите са задължителни, когато се извършва повече от една операция. За една НЕ Е ЗАДЪЛЖИТЕЛНО и няма нещо, което да те принуждава да ги използваш.

За това, че е хубаво скобата да е на същия ред, може да поспириш със С. Наков и с още редица по-успели от нас програмисти. Почти всяка среда за програмиране ще те поправи, въпреки че лично аз не бих допуснал такава грешка.

За using namespace съм горе-долу съгласен.

Редактирано от Александър Тодоров (преглед на промените)

Да, скобите не са задължителни и никой не те задължава да ги ползваш, но е добра практика да ги има.Даже е препоръчително.

Нищо не ти пречи да напишеш примерно:

if( counter---1 )

но това не значи, че е добра практика.Когато пишеш код трябва да си сигурен, че е лесно четим и разбираем.

  • 1 месец по-късно...
на 26.06.2018 г. в 13:00, Martin Chekurov написа:

Да, скобите не са задължителни и никой не те задължава да ги ползваш, но е добра практика да ги има.Даже е препоръчително.

Нищо не ти пречи да напишеш примерно:


if( counter---1 )

но това не значи, че е добра практика.Когато пишеш код трябва да си сигурен, че е лесно четим и разбираем.

1301095257_.PNG.af3c1109def323525bd1cc89b51fac32.PNG

590395054_2.PNG.6292da02f45efd0174f10cc60906a081.PNG

Нима едното ти е по-лесно за четене от другото? Въпрос на вкус е. Възможно е да си свикнал с първото и второто да ти се струва нетипично и странно. Аз използвам и двата начина, защото според мен са еднакво коректни. :) 

 

Редактирано от Александър Тодоров (преглед на промените)

Май не схващаш идеята.И да едното е по-лесно четимо от другото ( става въпрос за първото).Второто не го ползвам не защото ми се трува нетипично и странно, а защото е "error prone".Липсата на скоби може да доведе до много трудни за откриване бъгове.Много е лесно при недоглеждане да се обърка нещо.

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.