Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Δομή επιλογής => Μήνυμα ξεκίνησε από: dolcefarniente στις 08 Οκτ 2012, 11:15:48 ΠΜ

Τίτλος: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: dolcefarniente στις 08 Οκτ 2012, 11:15:48 ΠΜ
Θα μπορούσα να έχω μία βοήθεια για την παρακάτω άσκηση με κλιμακωτή χρέωση;;

Σε μία εταιρία οι αποδοχές των υπαλλήλων κυμαίνονται από 1250 € έως 5000€. Στο μισθό γίνεται παρακράτηση φόρου σύμφωνα με τον παρακάτω πίνακα και υπολογίζεται κλιμακωτά.

Από 1250€ έως και 1600€              Π1%
Πάνω από 1600 μέχρι και 2000      Π2%
Πάνω από 2000 μέχρι και 3000      Π1+Π2 %
Πάνω από 3000 μέχρι και 5000      Π1*Π2 %


Θα έπρεπε να είναι κάπως έτσι:

Αν αποδ<=1249 τότε
  φ<-- 0
αλλιώς_αν αποδ<=1600 τότε
  φ<-- (αποδ-1249)*Π1/100
αλλιώς_αν αποδ<=2000 τότε
  φ<-- 351*Π1/100+(αποδ-1600)*Π2/100
αλλιως_αν αποδ<=3000 τότε
  φ<--351*Π1/100+400*Π2/100+(αποδ-2000)*(Π1+Π2)/100

κτλ???

Έχω μπερδευτεί γιατί το διάστημα δεν αρχίζει από το 0 ή το 1 (πχ. 0-500, 501-1000).

Και μία ακόμη ερώτηση:
α) 0-500                     
    501-1000

β) 1-500
    501-1000
για τα παραπάνω διαστήματα η λύση θα είναι ίδια στην κλιμακωτή χρέωση;;
Δηλαδή τα πρώτα 500 θα πολλαπλασιαστούν με ένα ποσοστό ή στο (α) τα πρώτα 501 θα πολλαπλασιαστούν??

Ευχαριστώ εκ των προτέρων
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: petrosp13 στις 09 Οκτ 2012, 10:02:36 ΠΜ
Ως προς τον κώδικα, θα έλεγα να διορθώσεις το 351 σε 350. Κατά τα άλλα είναι σωστό

Ως προς τα διαστήματα, θα έλεγα ότι οι δυο περιπτώσεις που δίνεις είναι ακριβώς οι ίδιες. Εφόσον προκύπτει ότι οι μονάδες είναι ακέραιες (500-501), δεν μπορεί να υπάρχουν 0 μονάδες, άρα το πρώτο διάστημα μπορεί να είναι 0-500 ή σωστότερα 1-500 και αφορά 500 μονάδες και στις 2 περιπτώσεις
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: dolcefarniente στις 09 Οκτ 2012, 10:21:38 ΠΜ
Ευχαριστώ για την απάντηση.

Αλλά μία προσέγγιση :

Αν αποδ>=1250 και αποδ<=1600 τότε
φ<-- αποδ*π1/100
αλλιώς_αν αποδ<=2000 τότε
φ<-- 350*π1/100 + (αποδ-350)*π2/100
αλλιώς_αν αποδ<=3000 τότε
φ<-- 350*π1 + 400*π2/100 +(αποδ-750)*(π1+π2)/100
αλλιώς_αν αποδ<=5000 τότε
φ<-- 350*π1/100 + 400*π2/100 + 1000*(π1+π2)/100 + (αποδ-1750)*(π1*π2)/100
Τελος_αν

θα ήταν λάθος?? Να ξεχάσω δηλαδή το ποσό πριν από το 1250, αφού δεν φορολογείται??

Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: petrosp13 στις 09 Οκτ 2012, 10:27:19 ΠΜ
Εξαρτάται τι πρέπει να κάνεις με τον φόρο μετά την δομή επιλογής
Αν πρέπει να τον εμφανίσεις ή να τον χρησιμοποιήσεις σε εντολές, τότε πρέπει να βάλεις και την περίπτωση που λες, γιατί αλλιώς δεν θα υπάρχει τιμή για τον φόρο, αν οι αποδοχές είναι κάτω των 1250
Γενικότερα, δεν νομίζω ότι μπορείς να το αποφύγεις αυτό, ακόμα κι αν ζητάει απλά να υπολογίσεις τον φόρο
Και ο μηδενικός φόρος θεωρείται υπολογισμός

Στην λύση σου ξέχασες στην πρώτη περίπτωση να αφαιρέσεις 1250 ευρώ και δεν έπρεπε να αλλάξεις τις αφαιρέσεις που είχες αρχικά
Το κομμάτι του φόρου που αντιστοιχεί πάνω από κάποιο ποσό (π.χ. 2000) υπολογίζεται αν αφαιρέσουμε 2000, όχι αν αφαιρέσουμε τα ποσά που βάλαμε στην ίδια εντολή με άλλο ποσοστό φόρου
Αυτό θα ίσχυε στην συνηθισμένη περίπτωση, όπου η φορολόγηση ξεκινάει από το πρώτο ευρώ
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: gpapargi στις 09 Οκτ 2012, 10:32:13 ΠΜ
Μόλις πήγα να ποστάρω την απάντηση μου είδα ότι είχαν γραφτεί κι άλλες. Την ποστάρω κι εγώ και διασταυρώνουμε.

Υπάρχουν 2 περιπτώσεις: Η πρώτη είναι τα ποσά που εμφανίζονται να είναι πραγματικοί αριθμοί και η δεύτερη είναι να είναι ακέραιοι.
Αν η εκφώνηση σου λέει ότι μέχρι 500 έχει την Α ταρίφα και από 500 ως 800 έχεις τη Β ταρίφα τότε βλέπεις ότι εκεί που τελειώνει η πρώτη ζώνη αρχίζει η δεύτερη. Άρα τα ποσά είναι πραγματικοί αριθμοί.
Αν σου λέει ότι μέχρι 500 έχει την Α ταρίφα και από 501 ως 800 έχει τη Β ταρίφα αυτό σημαίνει ότι περιορίζεσαι στους ακεραίους. Δεν έχει νόημα να σου δώσει ποσό 500,3 ευρώ γιατί δεν το καλύπτει η εκφώνηση.

Η περίπτωση των πραγματικών είναι πιο απλή. Μπορείς να ζωγραφίσεις τα διαστήματα και να δεις μέσω των ευθυγράμμων τμημάτων ποιο είναι το κάθε μήκος στο οποίο εφαρμόζεται η κάθε ταρίφα.
Στους ακέραιους πρέπει να δεις πόσοι ακέραιοι υπάρχουν στη ζώνη που σε ενδιαφέρει. Πχ στο δεύτερο παράδειγμα που αναφέρω αν έχεις χ ευρώ στην περιοχή 501 – 800 το πλήθος των ακεραίων είναι χ- 501 + 1 = χ – 500.
Έτσι και στην πραγματική και στην ακέραια περίπτωση καταλήγεις στο χ-500 (και αυτό οδηγεί σε τυποποιημένη επίλυση της άσκησης) αλλά για διαφορετικούς λόγους.
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: dolcefarniente στις 09 Οκτ 2012, 10:47:49 ΠΜ
Για τον 1ο ψευδοκώδικα που έγραψα:

1 Αν αποδ<=1249 τότε
2  φ<-- 0
3 αλλιώς_αν αποδ<=1600 τότε
4  φ<-- (αποδ-1249)*Π1/100
5αλλιώς_αν αποδ<=2000 τότε
6  φ<-- 351*Π1/100+(αποδ-1600)*Π2/100
7αλλιως_αν αποδ<=3000 τότε
8  φ<--351*Π1/100+400*Π2/100+(αποδ-2000)*(Π1+Π2)/100

αν διορθώσω το 351 και το κάνω 350, μετά πως θα κάνω στη γραμμή 6: αποδ-1600 ?? αφού έχω αφαιρέσει (1249+350) και όχι (1249+351)??


Στο 2ο αν το άλλα ζα κάπως έτσι:

Αν αποδ>=1250 και αποδ<=5000 τότε
Αν αποδ<=1600 τότε
  φ<-- αποδ*π1/100
αλλιώς_αν αποδ<=2000 τότε
  φ<-- 350*π1/100 + (αποδ-350)*π2/100
αλλιώς_αν αποδ<=3000 τότε
  φ<-- 350*π1 + 400*π2/100 +(αποδ-750)*(π1+π2)/100
αλλιώς
  φ<-- 350*π1/100 + 400*π2/100 + 1000*(π1+π2)/100 + (αποδ-1750)*(π1*π2)/100
Τέλος_αν
αλλιώς
  φ<--0
Τελος_αν


Όσο για τα όρια 0-500 ή 1-500, έχετε δίκαιο, είναι λογικό. Ευχαριστώ
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: petrosp13 στις 09 Οκτ 2012, 11:10:43 ΠΜ
Δεν θα αφαιρέσεις 1249, αλλά 1250
Τα 1250 πρώτα ευρώ είναι αφορολόγητα
Γενικά, τα ποσά είναι στρόγγυλα πάντα για διευκόλυνση των υπολογισμών

Δεν χρειάζεται να ασχοληθείς με το δεύτερο, το πρώτο είναι σωστό, χωρίς αλχημείες
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: dolcefarniente στις 09 Οκτ 2012, 11:25:37 ΠΜ
Εκτιμώ πολύ την προσπάθειά σας για να με βοηθήσετε. Δε θέλω να σας κουράσω, αλλά πράγματι έχω μπερδευτεί με αυτή την άσκηση και αναρωτιέμαι, αφού το διάστημα [1250,1600] είναι κλειστό, τα πρώτα 1249 δεν είναι αφορολόγητα και πρέπει να τα αφαιρέσω?
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: petrosp13 στις 09 Οκτ 2012, 12:21:38 ΜΜ
σκέψου το εξής απλό. Αν είναι αφορολόγητα τα πρώτα 5 ευρώ, πόσα θα αφαιρέσεις στην επόμενη κατηγορία; μέχρι τα 1250 είναι αφορολόγητα. Το 1251ο ευρώ το οποίο ξεκινάει από το 1250 είναι φορολόγησιμο. Το πρώτο ευρώ τελειώνει στο 1, δεν ξεκινάει από το 1
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: dolcefarniente στις 09 Οκτ 2012, 12:40:52 ΜΜ
Φίλε petrosp13, αν έχω κλιμακωτή στο εξής:

ποσό       επιτόκιο
<10000     ε1
>=10000   ε2

δεν πρέπει να κάνω το παρακάτω???

Αν ποσό <10000 τότε
  τοκος<--ποσο * ε1
Αλλιώς
  τοκος<--9999*ε1 + (ποσό-9999)*ε2



Με το ίδιο σκεπτικό πήγα να κάνω:

Αν αποδ< 1250  τότε             !ή αποδ<=1249
φ<--0
αλλιώς_αν αποδ<=1600 τότε
   φ<-- (αποδ-1249)*Π1/100

για αυτό δεν μπορώ να το καταλάβω.
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: petrosp13 στις 09 Οκτ 2012, 12:46:53 ΜΜ
αν αυτό είναι το σκεπτικό της άσκησης, φυσικά και Έχεις δίκιο. Απλά συνήθως οι ασκήσεις δίνουν στρογγυλοποίημένα νούμερα για να μην χρειάζοντάι ιδιαίτεροι υπολογισμοί
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: P.Tsiotakis στις 09 Οκτ 2012, 12:54:39 ΜΜ
το <1250 € δεν είναι <=1249

αλλά <= 1249.99

το είχα κάνει λάθος στην πρώτη έκδοση του βιβλίου, αν ήταν ακέραιες τιμές (π.χ. δραχμούλες) θα ήταν έτσι!!!
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: dolcefarniente στις 09 Οκτ 2012, 01:04:23 ΜΜ
Δεν έχω καταλάβει το σκεπτικό της άσκησης. Απλώς δίνει αυτά τα διαστήματα.
Η προηγούμενη παρατήρησή με το παράδειγμα για το φορολογούμενο ποσό ήταν πολύ χρήσιμη πάντως.

Όπως και η επισήμανση για τη διάκριση ακεραιων - πραγματικών. Θα υποθέσω όμως ότι πρόκειται για αποδοχές με ακέραιες τιμές.

Και κάτι τελευταίο αν είναι εύκολο..Σε μια άσκηση που θέλει να διαβάζει ένα ποσό και δε μου λέει "Θεωρήστε ότι είναι θετικός αριθμός", επιβάλλεται ο έλεγχος με βάση το βιβλίο;; Ή είναι προαιρετικός εδώ, ενώ ουσιαστικά είναι λάθος να μη γίνει;;

Παράδειγμα:
έως 1000
πάνω από 1000 μέχρι και 2000
πάνω από 2000 μέχρι και 3000

θα χρησιμοποιούσα το:

Αν ποσο>0 τότε
Αν ποσό<=1000 τότε
  ....
αλλιώς_αν ποσό<=2000
  ...
αλλιώς
  ....
Τέλος_αν
Αλλιώς
Εμφάνισε "Λάθος"
Τέλος_αν


ή το

Αν ποσο>0 και ποσό<=1000
....
αλλιώς_αν ποσό<=2000
....
αλλιώς
Τελος_αν


Και είναι επικίνδυνο που το τελευταίο αλλιώς δεν είναι αλλιώς_αν ποσό<=3000???

Ευχαριστώ για την υπομονή σας.
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: petrosp13 στις 09 Οκτ 2012, 01:43:46 ΜΜ
άποψη μου είναι οτι για να γίνει έλεγχος εγκυρότητας των δεδομένων εισόδου, θα πρέπει να λέγεται ρητά και καθαρά από την εκφώνηση. Αν λέει οτι πρέπει να θεωρήσουμε κάτι, τότε δεν χρειάζεται έλεγχος, θεωρούμε οτι η τιμή του χρήστη θα είναι αποδεκτή. Συνεπώς είσαι καλυμμένος και με απλό αλλιώς
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: Γιώργος Παπαδόπουλος στις 09 Οκτ 2012, 10:50:49 ΜΜ
Από τη στιγμή που η άσκηση λέει ότι οι μισθοί είναι από 1250 μέχρι 5000, τότε θεωρούμε ότι δεν υπάρχουν μισθοί έξω από αυτά τα όρια και άρα δεν υπάρχει μηδενικό φόρος.

Αναφέρομαι στην αρχική άσκηση με τους υπαλλήλους
Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: Γιώργος Παπαδόπουλος στις 09 Οκτ 2012, 10:56:35 ΜΜ
Παράθεση από: dolcefarniente στις 09 Οκτ 2012, 12:40:52 ΜΜ

Με το ίδιο σκεπτικό πήγα να κάνω:

Αν αποδ< 1250  τότε             !ή αποδ<=1249
φ<--0
αλλιώς_αν αποδ<=1600 τότε
   φ<-- (αποδ-1249)*Π1/100

για αυτό δεν μπορώ να το καταλάβω.

Αγαπητέ dolcefarniente, η άσκηση αναφέρει ότι όλοι οι υπάλληλοι έχουν μισθούς από `1250 μέχρι και 5000, άρα δεν θα βρεις υπάλληλο με μισθό κάτω των 1250 € και άρα δεν υπάρχει περίπτωση να έχει και μηδενικό φόρο.

Παρόμοια άσκηση είχε μπει και ως θέμα στις πανελλήνιες εξετάσεις και αφορούσε ένα θέμα στο οποίο ελέγχοντας το  βάρος ενός δέματος μέσα σε ένα εύρος.


Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: Γιώργος Παπαδόπουλος στις 09 Οκτ 2012, 10:59:25 ΜΜ
Παράθεση από: dolcefarniente στις 09 Οκτ 2012, 01:04:23 ΜΜ

Και κάτι τελευταίο αν είναι εύκολο..Σε μια άσκηση που θέλει να διαβάζει ένα ποσό και δε μου λέει "Θεωρήστε ότι είναι θετικός αριθμός", επιβάλλεται ο έλεγχος με βάση το βιβλίο;; Ή είναι προαιρετικός εδώ, ενώ ουσιαστικά είναι λάθος να μη γίνει;;

Παράδειγμα:
έως 1000
πάνω από 1000 μέχρι και 2000
πάνω από 2000 μέχρι και 3000


Ο έλεγχος δεν επιβάλλεται πάντα σε ασκήσεις.
Για να καταλάβεις τι λέω, δες τα θέματα των πανελληνίων εξετάσεων και τις λύσεις τους. Δεν σημαίνει πως πάντα πραγματοποιήσουμε έλεγχο αλλά ορισμένα δεδομένα τα λαμβάνουμε ως έχεις σύμφωνα με την εκφώνηση.

Τίτλος: Απ: Βοήθεια στην κλιμακωτή χρέωση
Αποστολή από: dolcefarniente στις 09 Οκτ 2012, 11:16:28 ΜΜ
Άρα η λύση είναι της παρακάτω μορφής;;

Αν αποδ<=1600 τότε
  φ<-- αποδ*π1/100
αλλιώς_αν αποδ<=2000 τότε
  φ<-- 350*π1/100 + (αποδ-350)*π2/100
αλλιώς_αν αποδ<=3000 τότε
  φ<-- 350*π1 + 400*π2/100 +(αποδ-750)*(π1+π2)/100
αλλιώς
  φ<-- 350*π1/100 + 400*π2/100 + 1000*(π1+π2)/100 + (αποδ-1750)*(π1*π2)/100
Τέλος_αν

και ξεχνάω τα πρώτα 1250?? Θα ήθελα μια επιβεβαίωση.

Και κ. Παπαδόπουλε αναφέρεστε στο θέμα πανελληνίων με το βάρος της επιστολής και με τη χρέωση εσωτερικού-εξωτερικού ή σε κάποιο άλλο??

Σε σχέση τώρα με τους ελέγχους, στις περισσότερες περιπτώσεις δεν έχω δει να γίνεται έλεγχος εκτός από όταν ζητάει υποχρεωτικά έλεγχο ορθότητας καταχώρησης, που όμως γίνεται με δομή επανάληψης.