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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Програма на С++

Featured Replies

Моля някой да помогне!

1518372758403-1392334432.jpg

Не можеш да напишеш програма с 3 IF-а ли?

преди 46 минути, Цветелина Домусчиева написа:

Нищо

Амиии, в днешно време мама на тати без пари не дава..Ама айде!
 

#include <iostream>

using namespace std;

int main()
{
    cout<<"Enter a value"<<endl;
    float x=0;
    cin>>x;
    float y=0;
    if(x<-1.5)
    {
      y=-2*x-2;
    }
    else if(x>=-1.5&&x<0)
    {
        y=2*x+4;
    }
    else if(x>=0)
    {
        y=2*x-2;
    }
    cout<<"X is"<<endl;
    cout<<x<<endl;
    cout<<"Y is"<<endl;
    cout<<y;
}

 

  • 1 месец по-късно...
преди 9 минути, vvs-dm написа:

Предполагам за приоритет на операциите не си чувал.

Какъв приоритет бе, мен...Като не ги разбираш, защо се обаждаш?
Формулата е -2x-2
Тя се разписва програмно като -2*x-2.
От минус 2 пъти хикс вадим 2.
От допълнителните скоби в двойната логическа проверка няма смисъл в случая. Това е прост логически израз.

преди 5 минути, vvs-dm написа:

Имаш * там. Затова се слага изваждането в скоби за да се изпълни първо. Четеш от конзолзата x, от която изваждаш 2 и умножаваш по -2.

Това са глупости. В C++ операцията умножение има приоритет над операцията събиране и скобите не са нужни или задължителни.
От double няма смисъл също така.
И ВИНАГИ инициализирайте шибаните променливи с НУЛА! Защото ако направите грешка в програмния код, то тогава в клетката памет, къде е заделена за съхранение на променливата има случайна стойност. И ще се чудите какви са тия грешки, които бичи. Такова деклариране без инициализиране е много глупава грешка. Не може в програмата да има променлива, чиято стойност в даден момент да е случайна.

преди 5 минути, vvs-dm написа:

Имаш * там. Затова се слага изваждането в скоби за да се изпълни първо. Четеш от конзолзата x, от която изваждаш 2 и умножаваш по -2.

НЕ! От конзолата четеш X, което умножаваш с -2 и чак тогава вадиш от него две! Операцията умножение има по-висок приоритет!

преди 6 минути, vvs-dm написа:

Да имаш право, в други езици не е така. В този специфично е от ляво на дясно, не знам защо така ми е останало в акъла – не съм имал досега проблеми. Но зависи и от компилатора. А за нулевата стойност, за дребен пример като този не е належаща. Все пак на изпит се пише бързо и сбито. От double има смисъл, тъй като има по-голяма прецизност.

Тук пишем на C++. Не е нужно излишно да усложняваме конструкцията, за да я правим трудна за разбиране от начинаещи.
Нулевата стойност е добра практика. Много често ми се е случвало когато пиша по-сложни програми да ми се появяват някакви грешки.
Изчисляваш някакви дребни числа, па то изскочи 1 милиард отнякъде.  И се оказва, че някъде нещо не е присвоено.
Ако е нулева стойност, знаеш че е тая, която си сложил ти и има грешка. Иначе иди разбери.
От double за тоя пример няма голям смисъл. Но това е въпрос на мнение.
Можеш да декларираш с 1 ред много променливи. Но не можеш да инициализираш всички заедно.
Това се прави за всяка една поотделно.

преди 13 минути, vvs-dm написа:

 Добре, че не замених using namespace std с std::cin и cout, щяхме и там да поспорим ;-).

Пространствата от имена в езика C++ служат, за да може да се избягват конфликтите с еднакви имена на функции.
Стандартното пространство имена std са описани основните в/и обекти и т.н.
Удобно е да се използва стандартното пространство имена std, освен ако няма специални изисквания.
Да, неудобство е ако се налага да се работи с различни версии, но за по-елементарното е по-лесно така.
Досадно е да се пише пространството, от което взимаш дадена функция/обект....всеки път..
п.п Пиша и на JS(DOM/EVENT)

преди 1 минута, vvs-dm написа:

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

Пиша предимно за ембедед устройства. Там няма особено много ООП, няма и особено много функции. Всъщност няма и namespace...
Сигурно се намираш в София. Ще видим дали ще се прехвърля на нещо подобно като твоето.

преди 14 минути, vvs-dm написа:

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

Ще го видя утре.

#include <iostream>

using namespace std;

int main()
{
    cout<<"Enter a value X = ";
    double x,y;
    cin>>x;
    if(x<-1.5)   y=-x-x-2;
    else if(x<0) y=x+x+4;
    else         y=x+x-2;
    cout<<"Y is "<<y<<endl;
}

Едно условие вече като е проверено няма нужда да се проверява втори път след else.

Първо проверяваш дали а>0, b>0,c>0, a+b>c,a+c>b,b+c>a ако всички условия са изпълнени значи имаме триъгълник със страни a,b,c ако дори едно не е изпълнено - нямаме.

После лицето го изчисляваш по формулата S=sqrt(p*(p-a)*(p-b)*(p-c))  като p=(a+b+c)/2

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

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

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

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

Дарение

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

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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