Obliczanie wynagrodzenia

0

Witam,

Mam problem z następującym programem. Dokładniej z podpunktem c. Nie wiem w jaki sposób obliczać podatek 15% dla kwoty do 1200 i 20% dla wszystkiego, co wyższe od 1200 a zarazem niższe od 1800 zł oraz 25% dla pozostałego naddatku (powyżej 1800 zł):

"Napisz program, który pobiera liczbę przepracowanych godzin w tygodniu, a następnie wyświetla wynagrodzenie brutto, podatek oraz wynagrodzenie netto. Przyjmij następujące wartości:

a) podstawowe wynagrodzenie = 40zł/godzinę
b) nadgodziny (powyżej 40 godzin w tygodniu) = 150% podstawowego wynagrodzenia
c) podatek 15% dla pierwszych 1200 zł
20% dla kolejnych 600 zł
25% dla reszty wynagrodzenia

Użyj stałych #define.

Mój kod:

#include <stdio.h>

#define GODZINA 40
#define NADGODZINY 40
#define PREMIA 1.5
#define PODATEK1200 0.15
#define PODATEK600 0.20
#define PODATEK_RESZTA 0.25

int main(void)
{
    int liczba_godzin = 0;
    float wynagrodzenie_brutto, wynagrodzenie_netto, podatek;
    wynagrodzenie_brutto = wynagrodzenie_netto = podatek = 0;

    printf("Podaj liczbe przepracowanych godzin: ");
    scanf("%d", &liczba_godzin);

    if(liczba_godzin > NADGODZINY)
    {
        wynagrodzenie_brutto = liczba_godzin * GODZINA;

        if(wynagrodzenie_brutto < 1201)
            wynagrodzenie_brutto = wynagrodzenie_brutto - (wynagrodzenie_brutto * PODATEK1200);

        else
            for(podatek = PODATEK1200)..........
    }
    printf("Koniec..!");
    return 0;

}
 

Proszę o przedstawienie sposobu, jak najoptymalniej mógłbym takie warunki zawrzeć w programie. Z góry dziękuję.

3
int netto=liczba_godzin*stawka_godzinowa;
int podatek=netto*(15+5*(netto>1200)+5*(netto>1800)); // wychodzi w groszach
0

Dziękuję bardzo, genialne!

0

Witam ponownie,

Niestety, program nie działa zgodnie z założeniami, ponieważ nie przyjmuje dwóch różnych wartości podatku dla przykładowej sumy 1800 zł.

Powinien działać tak:
Wpisuję kwotę 1801 i:

  1. 1200 zł - opodatkowane 15%
  2. kolejne 600 zł - opodatkowane 20%

Czyli: (1200 * 0,15) + (600 * 0,20) = 180 + 120 = 300

Tymczasem działa tak:
Wpisuję kwotę 1800 i:

  1. Od razu przyjmuje opodatkowanie równe 20% dla całej stawki, więc:

1800 * 0,20 = 360

Proszę o pomoc.

0

Już ci wskazano kierunek, a wciąż samodzielnie nie dajesz rady. Może zastanów się czy nie marnujesz swego czasu na próżno.

int netto=liczba_godzin*stawka_godzinowa;
int podatek=15*netto+5*(netto-1200)*(netto>1200)+5*(netto-1800)*(netto>1800); // wychodzi w groszach
0

Kierunek wskazałeś? Chłopie, wprowadzasz w błąd i to nazywasz wskazaniem kierunku? Nie widzisz znaczącej różnicy między pierwszą, a drugą wysłaną przez Ciebie sugestią? Wynurzenia w zakresie moralnych aspektów inwestycji czasowych, pozostaw sobie. W dalszej kolejności, zadaj sobie pytanie, czy jesteś tu aby pomóc, czy zniechęcić.

PS
Problem rozwiązałem sam, stosując warunki logiczne.

Dziękuję serdecznie za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1