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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Моля да ми кажете къде греша

Featured Replies

Здравейте, имам следната задача: Напишете прогама която изисква от потребителя да въведе заплатата на служещ преди начисляването на данъци.Програмата трябва да изведе заплатата на служещия с начислените данъци в паричен вид.Данъците са 10%, ако заплатата е до 10000, 15% ако е до 20000 и 20% ако доходите са над 20000.

 

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int zaplata, nova, danaci;
cout << "Vavedi zaplatata sega " << "\n";
cin >> zaplata;
if (zaplata <= 10000);
danaci = (10/100)*zaplata;
if (zaplata <= 20000);
danaci = (15/100)*zaplata;
if (zaplata > 20000);
danaci = (20/100)*zaplata;
nova = zaplata - danaci;
cout << "Zaplatata s nachislenite danaci e" << nova << "\n";
return 0;
}
 
Това е моя опит, но явно някъде греша, защото не се получава правилно...
  • Автор

Проблемът явно е логически, понеже програмата не изчислява правилно заплатата с начислените данъци.Затова и моля да ме поправите там където греша в задачата.Тези ; след иф-овете не са проблем.

Редактирано от notorious19 (преглед на промените)

#include <iostream>

using namespace std;
int main()
{
int zaplata, nova=0, danaci=0;
cout << "Vavedi zaplatata sega " << "\n";
cin >> zaplata;
if (zaplata <= 10000){
danaci = zaplata*10/100;
}
else if (zaplata <= 20000 && zaplata > 10000){
danaci = zaplata*15/100;
}
else{
danaci = zaplata*20/100;
}
nova = zaplata - danaci;
cout << "Zaplatata s nachislenite danaci e " << nova << endl;

system("PAUSE");
return 0;
} 

 

Грешката беше в 2-рия if. Ако заплатата е по-голяма от 20000 и по-малка от 10000;

Без ; след if-овете. Акo не оградиш кода, който се изпълнява в if-a с {}, то ще се изпълни само първия ред след условието, т.е. докато програмата срещне ';'.

Редактирано от RJ45 (преглед на промените)

Като изключим това, което колегата спомена за точката и запетайката, ако кодът е в сегашния си вид (впрочем добре е да се ползва тагът за код) то заплата, по-малка от 10000 единици ще отговори и на втория if и най-вероятно от там идва грешката. Начинът е да се ползва логическо "И" в условието, което се проверява.

Редактирано от killchain (преглед на промените)

Като изключим това, което колегата спомена за точката и запетайката, ако кодът е в сегашния си вид (впрочем добре е да се ползва тагът за код) то заплата, по-малка от 10000 единици ще отговори и на втория if и най-вероятно от там идва грешката. Начинът е да се ползва логическо "И" в условието, което се проверява.

Да или както е написал по-горе с else if.

Подоходното облагане не се изчислява така, а 10% за сумата до 10000 + 15% за сумата между 10001 и 20000 + 20% за сумата над 20000.

#include <iostream>

using namespace std;

int main()
{
    int zaplata, nova, danaci=0;
    cout << "Vavedi zaplatata sega ";
    cin >> zaplata;
     
    nova = zaplata;
    if (nova>20000) {
         danaci = (nova-20000)*20/100;
         nova = 20000;
         }
    if (nova>10000) {
         danaci += (nova-10000)*15/100;
         nova = 10000;
         }
    
    danaci += nova*10/100;

    nova = zaplata - danaci;
    cout << "Danaci " << danaci << endl;
    cout << "Zaplatata s nachislenite danaci e " << nova << endl;
    return 0;
}

или ако на някой му се виждат много сметките

 

#include <iostream>

using namespace std;

int main()
{
    int zaplata, nova, danaci=0;
    cout << "Vavedi zaplatata sega ";
    cin >> zaplata;
    
    if (zaplata>20000) danaci =  2500 + (zaplata-20000)*20/100;
    else if (zaplata>10000) danaci =  1000 + (zaplata-10000)*15/100;
    else danaci = zaplata*10/100;

    nova = zaplata - danaci;
    cout << "Danaci " << danaci << endl;
    cout << "Zaplatata s nachislenite danaci e " << nova << endl;
    return 0;
}

Редактирано от ined (преглед на промените)

Нещо много шантаво и объркано си то направил

 

Подоходното облагане не се изчислява така, а 10% за сумата до 10000 + 15% за сумата между 10001 и 20000 + 20% за сумата над 20000.

#include <iostream>

using namespace std;

int main()
{
    int zaplata, nova, danaci=0;               тук е добре да са bruto, neto, danaci
    cout << "Vavedi zaplatata sega ";
    cin >> zaplata;
     
    nova = zaplata;                            това няма нужда
    if (nova>20000) {
         danaci = (nova-20000)*20/100;         тук - като махнеш 20К и смяташ 20% - къде ти е 
         nova = 20000;                         ​данъка за 20-те хил
    }
    danaci += nova*10/100;
    nova = zaplata - danaci;
    cout << "Danaci " << danaci << endl;
    cout << "Zaplatata s nachislenite danaci e " << nova << endl;
    return 0;
}
 

 

Данъка, с прагове е - 10% за дохода до 10К, 1000 + 15% за дохода до 20К и 20% за дохода над 20К

 

#include <iostream>
using namespace std;
int main(void)
{
    int bruto,neto,danaci;
    cout<<"Vavedi zaplatata sega ";
    cin>>bruto;
    cout<<endl;
    if(bruto<=10000)
    {
        (danaci=0.1*bruto);
    }
    if(bruto<=20000)
        {
            (danaci=1000+(0.15*(bruto-1000)));
        }
    if(bruto>20000)
        {
            (danaci=2500+(0.2*(bruto-20000)));
        }
    neto = bruto-danaci;
    cout<<endl;
    cout<<"Zaplatata s nachislenite danaci e "<<neto<<endl<<endl;
}

Редактирано от jhoro (преглед на промените)

 

 

тук - като махнеш 20К и смяташ 20% - къде ти е ​данъка за 20-те хил

Като копираш само част от програмата не очаквай да работи правилно?

А и като не разбираш как рабити програмата си спести коментарите ако обичаш.

Като копираш само част от програмата не очаквай да работи правилно?

А и като не разбираш как рабити програмата си спести коментарите ако обичаш.

Кода съм го копирал целия.

 

И по-леко с препоръките

Кода съм го копирал целия.

 

И по-леко с препоръките

целия, само дето му липсва частта за изчислението на данъка за суми от 10001 до 20000 лева

и от там вече объркваш сметките за заплатите над 10000, сравни постове #10 и #11 (липсва единия if...)

 

моя код може да има трески за дялане, но поне дава що годе верни резултати (парите по принцип не са цели числа)

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

10000 макар че на пръв поглед го има в програмата ти, а израза за заплатите до 20000 е сбъркан - има изтървана 0.

 

примерно заплатата е 8000

 

проверка дали е до 10000 - да  данъците са 10 % = 800лв

проверка дали е до 20000 - пак да! - данъци = 1000 + (8000-10000)*0.15 = 700 лв

   ( реално при твоята програма са данъци = 1000 + (8000-1000)*0.15 = 2049 лв )

 

защо се получават 2049, а не 2050 ще ти го оставя за домашно размишление.

Редактирано от ined (преглед на промените)

Само един съвет, използвайте double вместо integer. При заплата 10001, след данъци заплатата Е 8500,85лв.

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

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

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

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

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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