Εμφάνιση αναρτήσεων με ετικέτα Αλγόριθμοι. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα Αλγόριθμοι. Εμφάνιση όλων των αναρτήσεων

8 Φεβρουαρίου 2022

Συνάρτηση που ταξινομεί λογικές τιμές

 Δραστηριότητα 5 - αλγόριθμοι


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

Προτεινόμενη λύση 

Συνάρτηση που ελέγχει αν μια λίστα είναι σε αύξουσα σειρά

Δραστηριότητα 3 - αλγόριθμοι


Να γράψετε μια συνάρτηση σε Python, η οποία θα δέχεται μια λίστα, θα ελέγχει αν τα στοιχεία της είναι σε αύξουσα σειρά και θα επιστρέφει αντίστοιχα True ή False. 

Υπόδειξη: Χρησιμοποιήστε μια λογική μεταβλητή.

Προτεινόμενη λύση 

10 Μαΐου 2020

Θέμα πανελλαδικών ΓΕΛ (Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον) προσαρμοσμένο για Python


Στην 27η Βαλκανιάδα Πληροφορικής που θα διεξαχθεί στην Αθήνα τον Σεπτέμβριο του 2020, συμμετέχουν 40 μαθητές. Κάθε μαθητής παίρνει έναν κωδικό από 1 έως και 40, ο οποίος αντιστοιχεί στη σειρά που δήλωσε συμμετοχή. Κάθε μαθητής καλείται να επιλύσει έξι (6) προβλήματα. Για κάθε πρόβλημα αναπτύσσει τη λύση του σε μία γλώσσα προγραμματισμού και την υποβάλλει για βαθμολόγηση. Η λύση βαθμολογείται σε ακέραια κλίμακα από 0 έως 100. Κατά τη διάρκεια του διαγωνισμού κάθε μαθητής και για κάθε πρόβλημα μπορεί να υποβάλλει τη λύση του όσες φορές θέλει.

Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:

1.Να διαβάζει επαναληπτικά τα ονόματα των μαθητών και να τα καταχωρίζει στη λίστα ΟΝ. Επίσης, να αρχικοποιεί με την τιμή 0 όλα τα στοιχεία της λίστας VATH (λίστα δύο διαστάσεων με 40 υπολίστες 6 στοιχείων), η οποία θα περιέχει τη βαθμολογία κάθε μαθητή για κάθε πρόβλημα.

2. Κάθε φορά που μία λύση προβλήματος υποβάλλεται και βαθμολογείται, το πρόγραμμα να διαβάζει τον κωδικό του μαθητή (από 1 έως και 40), αριθμό του προβλήματος (από 1 έως και 6) και τη βαθμολογία του (από 0 έως και 100).  Η βαθμολογία να καταχωρίζεται στην αντίστοιχη θέση της λίστας VATH μόνο αν είναι μεγαλύτερη από τη βαθμολογία που είναι ήδη καταχωρισμένη. Για τον τερματισμό της εισαγωγής δεδομένων το πρόγραμμα να εμφανίζει το μήνυμα «Υπάρχει νέα λύση προβλήματος; ΝΑΙ / ΟΧΙ». Αν εισαχθεί η τιμή «ΟΧΙ», να τερματίζεται η εισαγωγή δεδομένων.

3. Να υπολογίζει και να καταχωρίζει στην λίστα SV τα αθροίσματα των βαθμολογιών κάθε μαθητή στα έξι προβλήματα. Για τον σκοπό αυτό να καλεί μόνο μια φορά το υποπρόγραμμα με όνομα YSV. Να αναπτύξετε το υποπρόγραμμα YSV το οποίο να δέχεται ως είσοδο την λίστα VATH και να επιστρέφει ως έξοδο συμπληρωμένη την λίστα SV.

4. Να εμφανίζει τα ονόματα των μαθητών ταξινομημένων σύμφωνα με τη συνολική τους βαθμολογία σε φθίνουσα βαθμολογική σειρά. Σε περίπτωση μαθητών με την ίδια βαθμολογία, τα ονόματά τους να εμφανίζονται με αλφαβητική σειρά.
Σημειώσεις
α) Απαιτούνται έλεγχοι εγκυρότητας τιμών.
β) Να θεωρήσετε ότι θα δοθεί τουλάχιστον μια λύση προβλήματος από έναν μαθητή.

9 Φεβρουαρίου 2019

Συνδυαστική άσκηση επιλογής, συνάρτησης, συμβολοσειρών, λιστών και αλγορίθμων


Ένα υποκατάστημα σούπερ μάρκετ έχει δημιουργήσει δύο λίστες για τα προϊόντα που πουλάει. Στη πρώτη  λίστα, με όνομα bcodes, είναι οι γραμμωτοί κωδικοί των προϊόντων (bar codes) σε μορφή συμβολοσειράς και στη δεύτερη, με όνομα sales, είναι οι αντίστοιχες συνολικές πωλήσεις των προϊόντων σε ευρώ (€) για το έτος 2018.





Π.χ.
bcodes [‘5201171000126’,’6901100341234’,…….,’8300112291033’],
sales  [1253,3872,…………..,7812]
Οι δύο λίστες έχουν ακριβώς τις ίδιες θέσεις.
Οι αντίστοιχες θέσεις της κάθε λίστας αναφέρονται στο ίδιο προϊόν.

Ο διευθυντής του υποκαταστήματος ζήτησε από τον προγραμματιστή να δημιουργήσει μια συνάρτηση σε python, με παραμέτρους τις δύο λίστες (bcodes,sales), που να αναζητά στην πρώτη λίστα τα ελληνικά προϊόντα, γνωρίζοντας ότι οι ελληνικοί γραμμωτοί κωδικοί ξεκινούν από ‘520’, και να βάζει τους ελληνικούς κωδικούς σε μια λίστα grcodes και τις αντίστοιχες πωλήσεις σε μια λίστα grsales. Στη συνέχεια θα ταξινομεί τις δύο λίστες grcodes και grsales σε φθίνουσα σειρά (από τις μεγαλύτερες προς τις μικρότερες) σύμφωνα με τις πωλήσεις και θα τις επιστρέφει (return) σε μορφή λίστας με δύο υπολίστες [grcodes,grsales].  



21 Ιανουαρίου 2018

Παράλληλη ταξινόμηση 2 λιστών με τον αλγόριθμο ευθείας ανταλλαγής (bubble sort)

Στην περίπτωση που έχουμε 2 λίστες που συσχετίζονται, μπορούμε με την εφαρμογή του αλγόριθμου ταξινόμησης ευθείας ανταλλαγής να τις ταξινομήσουμε ταυτόχρονα.

Έστω 2 λίστες που συσχετίζονται:


x1=[65, 90, 85, 92, 78, 80]

x2=['A', 'B', 'C', 'D', 'E', 'F']

Π.χ. αν είναι βαθμολογίες, ο 'A' έχει βαθμολογία 65, ο 'B' έχει βαθμολογία 90, ο 'C' 85 κ.ο.κ.

Παρουσιάζονται δυο υλοποιήσεις του αλγόριθμου. 
Στην πρώτη, η λίστα με τις βαθμολογίες ταξινομείται σε αύξουσα σειρά (65,78,80,85,90,92) και παράλληλα η λίστα των ονομάτων. 
Στη δεύτερη, η λίστα με τις βαθμολογίες ταξινομείται σε φθίνουσα σειρά (92,90,85,80,78,65) και παράλληλα η λίστα των ονομάτων. 
Παρατήρηση:
Όταν ταξινομούμε σε φθίνουσα σειρά η γραμμή:
if L[j]<L[j-1]:
 γίνεται:
if L[j]>L[j-1]:

18 Ιανουαρίου 2018

Ταξινόμηση ευθείας ανταλλαγής (bubble sort)

Δημιουργία συνάρτησης που υλοποιεί τον αλγόριθμο ευθείας ανταλλαγής (bubble sort). Στο κυρίως πρόγραμμα γεμίζουμε μια λίστα με αριθμούς χωρίς ταξινόμηση. Καλούμε τη συνάρτηση ταξινόμησης και εμφανίζεται η λίστα αταξινόμητη και ταξινομημένη.




Ταξινομηση bubble sort

9 Ιανουαρίου 2018

Δυαδική αναζήτηση αριθμών και δυαδική αναζήτηση αριθμού σε ταξινομημένη λίστα σε python

Δυαδική αναζήτηση αριθμού (του χρήστη) σε εύρος αριθμών (1-1000) σε python. Ο αλγόριθμος ρωτάει αν ο αριθμός που αναζητούμε είναι μεγαλύτερος ή μικρότερος από αυτόν που προτείνει ο αλγόριθμος.




Δυαδική αναζήτηση αριθμού από 1 - 1000


Δυαδική αναζήτηση αριθμού σε ταξινομημένη λίστα (αύξουσα ταξινόμηση) σε python. Ο αλγόριθμος υλοποιείται με τη χρήση συνάρτησης που δέχεται ως ορίσματα τη λίστα και το αριθμό που αναζητούμε.  Ο αλγόριθμος συγκρίνει αν ο αριθμός που αναζητούμε είναι μεγαλύτερος ή μικρότερος από αυτόν που προτείνει ο αλγόριθμος.


Αλγόριθμος δυαδικής αναζήτησης σε ταξινομημένη λίστα