Παρασκευή 28 Φεβρουαρίου 2014

ΑΣΚΗΣΗ ΜΕ ΠΕΡΙΤΤΟΥΣ ΠΙΝΑΚΕΣ - ΜΕ ΑΠΟΦΥΓΗ ΠΕΡΙΤΤΩΝ ΠΙΝΑΚΩΝ

Σε ένα τμήμα (Γ10) υπάρχουν 8 μαθητές που έχουν βαθμολογηθεί σε 6 μαθήματα. Να γραφεί πρόγραμμα ή αλγόριθμος που :
1. θα αποθηκεύει τα ονόματα των μαθητών σε μονοδιάστατο πίνακα ΟΝ
2. θα αποθηκεύει τις ονομασίες των 6 μαθημάτων σε μονοδιάστατο πίνακα ΜΑΘ
3. θα αποθηκεύει τις βαθμολογίες των μαθητών σε δισδιάστατο πίνακα ΒΑΘ
4. θα υπολογίζει το μέσο όρο βαθμολογίας για κάθε μαθητή
5. θα υπολογίζει το μέσο όρο του τμήματος ανά μάθημα
6. θα εμφανίζει το μαθητή με την καλύτερη βαθμολογία κατά μέσο όρο (είναι ένας/μια)
7. θα εμφανίζει το μάθημα με τον καλύτερο μέσο όρο τμήματος

Αλγόριθμος Γ_10
Για i από 1 μέχρι 8
      Διάβασε ΟΝ[i]
      Για j από 1 μέχρι 6
            Διάβασε ΒΑΘ[i,j]
      Τέλος_επανάληψης
Τέλος_επανάληψης
Για j από 1 μέχρι 6
      Διάβασε ΜΑΘ[j]
Τέλος_επανάληψης
Για i από 1 μέχρι 8
      s ← 0
      Για j από 1 μέχρι 6
            s ← s + ΒΑΘ[i,j]
      Τέλος_επανάληψης
      μο_μαθητή[i] ← s / 6
Τέλος_επανάληψης
Για j από 1 μέχρι 6
      s ← 0
      Για i από 1 μέχρι 8
            s ← s + ΒΑΘ[i,j]
      Τέλος_επανάληψης
      μο_μαθ[j] ← s / 8
Τέλος_επανάληψης
max ← μο_μαθητή[1]
posmax ← 1
Για από 2 μέχρι 8
      Αν μο_μαθητή[i] > max τότε
           max ← μο_μαθητή[i]
           posmax ← i
      Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε "Ο μαθητής με το μεγαλύτερο μέσο όρο είναι:" ,ΟΝ[posmax]
max ← μο_μαθ[1]
posmax ← 1
Για j από 2 μέχρι 6
      Αν μο_μαθ[j] > max τότε
           max ← μο_μαθ[j]
           posmax ← j
      Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε "Το μάθημα με το μεγαλύτερο μέσο όρο είναι" ,ΜΑΘ[posmax]
Τέλος Γ_10

Στην παραπάνω άσκηση δημιουργούνται 2 περιττοί πίνακες:ο μο_μαθητή[i] και ο μο_μαθ[j] τους οποίους δημιουργεί ο μαθητής για να βρει τον καλύτερο μο μαθητή και τον καλύτερο μο μαθήματος. Οι πίνακες μπορούν να αποφευχθούν αφού το μέγιστο θεωρείται ένα....πώς;
αρχικοποιώ το μέγιστο πριν τη για των μαθητών σε απίθανα μικρή τιμή και:
.
.
.
max ← -1                  ! απίθανα μικρή τιμή
Για i από 1 μέχρι 8
      s ← 0
      Για j από 1 μέχρι 6
            s ← s + ΒΑΘ[i,j]
      Τέλος_επανάληψης
      μο_μαθητή ← s / 6
      Αν μο_μαθητή > max τότε   !εδώ που έχω το μέσο όρο του μαθητή τον συγκρίνω 
           max ← μο_μαθητή         ! με το μέγιστο
           posmax ← i
      Τέλος_αν

Τέλος_επανάληψης
Εμφάνισε "Ο μαθητής με το μεγαλύτερο μέσο όρο είναι:" ,ΟΝ[posmax]


ομοίως, για τον καλύτερο μέσο όρο μαθήματος:
.
.
.
max ← -1
Για j από 1 μέχρι 6
      s ← 0
      Για i από 1 μέχρι 8
            s ← s + ΒΑΘ[i,j]
      Τέλος_επανάληψης
      μο_μαθ ← s / 8
      Αν μο_μαθ > max τότε
           max ← μο_μαθ
           posmax ← j
      Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε "Το μάθημα με το μεγαλύτερο μέσο όρο είναι" ,ΜΑΘ[posmax]

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου