Προβλήματα στους Πίνακες

Άσκηση 4
Μια πολυεθνική εταιρεία απασχολεί 2500 εργαζομένους σε όλο τον κόσμο. Η εταιρεία διατηρεί σε έναν μονοδιάστατο πίνακα ΧΩΡΕΣ[2500] την χώρα στην οποία απασχολείται κάθε ένας από τους εργαζόμενους. Να γίνει αλγόριθμος που με δεδομένο τον παραπάνω πίνακα, θα βρίσκει και θα εμφανίζει:
α) τις διαφορετικές χώρες στις οποίες η επιχείριση απασχολεί εργαζομένους
β) πόσες είναι οι διαφορετικές χώρες

Αλγόριθμος Χώρες_α
Δεδομένα //ΧΩΡΕΣ//
 
! Ταξινόμηση του πίνακα ΧΩΡΕΣ και στην συνέχεια εμφάνιση των στοιχείων που είναι διαφορετικά με το προηγούμενο
Για i από 2 μέχρι 2500
	Για j από 2500 μέχρι i με_βήμα -1
		Αν ΧΩΡΕΣ[j] < ΧΩΡΕΣ[j-1] τότε
			Αντιμετάθεσε ΧΩΡΕΣ[j], ΧΩΡΕΣ[j-1]
		Τέλος_αν
	Τέλος_επανάληψης
Τέλος_επανάληψης
 
! Εμφάνισε την πρώτη χώρα εκτός επανάληψης
Εμφάνισε ΧΩΡΕΣ[1]
πλ_δ_χωρών <- 1 ! πλήθος διαφορετικών χωρών
Για i από 2 μέχρι 2500
	Αν ΧΩΡΕΣ[i] <> ΧΩΡΕΣ[i-1] τότε
		Εμφάνισε ΧΩΡΕΣ[i]
		πλ_δ_χωρών <- πλ_δ_χωρών + 1
	Τέλος_αν
Τέλος_επανάληψης
 
Εμφάνισε "Πλήθος διαφορετικών χωρών: ", πλ_δ_χωρών
Τέλος Χώρες_α

Άσκηση 5
Για μία ιστοσελίδα συγκεντρώνονται στατιστικά στοιχεία για τους επισκέπτες της. Τα στατιστικά καταμετρούν τις επισκέψεις που δέχεται η ιστοσελίδα για κάθε μία από τις 24 ώρες της ημέρας σε κάθε μία από 25 πόλεις της Ελλάδας. Να γίνει αλγόριθμος που με δεδομένο τον πίνακα ΕΠΙΣΚΕΨΕΙΣ[24, 25] που περιέχει τον αριθμό των επισκέψεων για κάθε μία από τις 24 ώρες της ημέρας σε κάθε μία από τις 25 πόλεις της Ελλάδας και ΠΟΛΕΙΣ[25] με τα ονόματα των 25 πόλεων, θα βρίσκει και θα εμφανίζει.
α) Την ώρα που η ιστοσελίδα συγκέντρωσε τις περισσότερες επισκέψεις
β) Τις 10 πρώτες πόλεις σε σειρά επισκεψιμότητας, ξεκινώντας πρώτα από αυτή που είχε την υψηλότερη

Αλγόριθμος Ιστοσελίδα
Δεδομένα //ΕΠΙΣΚΕΨΕΙΣ, ΠΟΛΕΙΣ//
 
! Κάθε γραμμή του πίνακα ΕΠΙΣΚΕΨΕΙΣ, καταγράφει τις ώρες του 24ωρου.
! Συνεπώς αν βρούμε το άθροισμα κάθε γραμμής και στη συνέχεια το μέγιστο 
! κάθε γραμμής θα βρούμε την ώρα με την μεγαλύτερη επισκεψημότητα.
max_επισκέπτες <- 0
Για i από 1 μέχρι 24
   Σ <- 0
   Για j από 1 μέχρι 25
      Σ <- Σ + ΕΠΙΣΚΕΨΕΙΣ[i,j]
   τέλος_επανάληψης
   Αν Σ > max_επισκέπτες τότε
      max_επισκέπτες <- Σ
      max_ώρα <- i
   Τέλος_αν
Τέλος_επανάληψης
 
Εμφάνισε “Η μεγαλύτερη επισκεψημότητα σημειώθηκε μεταξύ  ”, (max_ώρα -1), “ και ”, max_ώρα
 
! Ερώτημα 2
! Αυτή τη φορά θα βρούμε το άθροισμα κάθε στήλης (χώρας δηλαδή) και θα το αποθηκεύσουμε σε έναν πίνακα.
! Στη συνέχεια θα ταξινομήσουμε τον πίνακα αυτό σε φθίνουσα διάταξη.
Για j από 1 μέχρι 25
   Σ <- 0
   Για i από 1 μέχρι 24
      Σ <- Σ + ΕΠΙΣΚΕΨΕΙΣ[i,j]
   Τέλος_επανάληψης
   ΕΠΙΣΚΕΨΕΙΣ_ΠΟΛΗΣ[j] <- Σ
Τέλος_επανάληψης
 
Για i από 2 μέχρι 25
   Για j από 25 μέχρι i με_βήμα -1
      Αν ΕΠΙΣΚΕΨΕΙΣ_ΠΟΛΗΣ[j] > ΕΠΙΣΚΕΨΕΙΣ_ΠΟΛΗΣ[j - 1] τότε
         Αντιμετάθεσε ΕΠΙΣΚΕΨΕΙΣ_ΠΟΛΗΣ[j], ΕΠΙΣΚΕΨΕΙΣ_ΠΟΛΗΣ[j-1]
         Αντιμετάθεσε ΠΟΛΕΙΣ[j], ΠΟΛΕΙΣ[j-1]
      Τέλος_αν
   Τέλος_επανάληψης
Τέλος_επανάληψης
 
Εμφάνισε "Οι 10 πόλεις με την μεγαλύτερη επισκεψημότητα ήταν οι: "
Για i από 1 μέχρι 10
   Εμφάνισε ΠΟΛΕΙΣ[i], ΕΠΙΣΚΕΨΕΙΣ_ΠΟΛΗΣ[i]
Τέλος_επανάληψης
 
Τέλος Ιστοσελίδα

Άσκηση 6
Σε έναν αγώνα αυτοκινήτων συμμετέχουν 11 ομάδες με 2 διαγωνιζόμενους η κάθε μία (δηλαδή συνολικά διαγωνίζονται 22 αθλητές). Κάθε διαγωνιζόμενος τρέχει με το αυτοκίνητό του σε μία διαφρομή και νικητής είναι αυτός που θα ολοκληρώσει την διαδρομή στον μικρότερο χρόνο. Να γίνει αλγόριθμος που με δεδομένα, τα ονόματα των 22 διαγωνιζόμενων, τις ομάδες στις οποίες αυτοί ανήκουν και τον χρόνο που ολοκλήρωσαν την διαδρομή (μετρημένο σε δευτερόλεπτα) να βρίσκει και να εμφανίζει:
α) Τους τρείς πρώτους αθλητές και την ομάδα στην οποία ανήκουν.
β) Την ομάδα που είχε την μεγαλύτερη διαφορά στην κατάταξη για τους 2 αθλητές της. Σημείωση: Υποθέστε πως όλοι οι αθλητές κατάφεραμ να τερματίσουν τον αγώνα και πως ο κάθε αθλητής τερμάτισε σε διαφορετικό χρόνο.

Αλγόριθμος αγώνες
   Δεδομένα //ΟΝ_ΑΘΛ, ΟΜ_ΑΘΛ, ΧΡΟΝ// ! όνομα αθλητή, ομάδα και χρόνος
   ! Αρχικά ταξινόμησε τους αθλητές σε αύξουσα διάταξη ώστε να βρούμε τους 3 πιο γρήγορους
   Για i από 2 μέχρι 22
      Για j από 22 μέχρι i με_βρήμα -1
         Αν ΧΡΟΝ[j] < ΧΡΟΝ[j-1] τότε
            αντιμετάθεσε ΟΝ_ΑΘΛ[j], ΟΝ_ΑΘΛ[j-1]
            αντιμετάθεσε ΟΜ_ΑΘΛ[j], ΟΜ_ΑΘΛ[j-1]
            αντιμετάθεσε ΧΡΟΝ[j], ΧΡΟΝ[j-1]
         Τέλος_αν
      Τέλος_επανάληψης
   Τέλος_επανάληψης
 
   Για i από 1 μέχρι 3
      Εμφάνισε ΟΝ_ΑΘΛ[i], ΟΜ_ΑΘΛ[i]
   Τέλος_επανάληψης
 
   ! Θα κάνουμε έναν πίνακα με την διαφορά κάθε αθλητή από τον συμπαίκτη του. 
   ! Την διαφορά αυτή αρχικά θα την μηδενίσουμε.
   Για i από 1 μέχρι 22
      ΔΙΑΦΟΡΑ[i] <- 0
   Τέλος_επανάληψης
 
   Για i από 1 μέχρι 22
      Αν ΔΙΑΦΟΡΑ[i] = 0 τότε
         διαφ <- 0
         Για j από i+1 μέχρι 22
            διαφ <- διαφ + 1
            Aν ΟΜ_ΑΘΛ[i] = ΟΜ_ΑΘΛ[j] τότε
               ΔΙΑΦΟΡΑ[i] <- διαφ
               ΔΙΑΦΟΡΑ[j] <- διαφ
            Τέλος_αν
         Τέλος_επανάληψης
      Τέλος_αν
   Τέλος_επανάληψης
 
   μεγ_διαφ <- ΔΙΑΦΟΡΑ[1]
   ομ_μεγ_διαφ <- ΟΜ_ΑΘΛ[1]
   Για i από 2 μέχρι 22   
      Αν ΔΙΑΦΟΡΑ[i] > μεγ_διαφ τότε
         μεγ_διαφ <- ΔΙΑΦΟΡΑ[i]
         ομ_μεγ_διαφ <- ΟΜ_ΑΘΛ[i]
      Τέλος_αν
   Τέλος_επανάληψης
 
   Εμφάνισε ομ_μεγ_διαφ
Τέλος αγώνες