ΑΕΠΠ ΑΣΚΗΣΕΙΣ ΤΕΤΡΑΔΙΟΥ ΕΡΓΑΣΙΩΝ 3ΟΥ ΚΕΦ

Στο παρακάτω link υπάρχουν οι λύσεις των ασκήσεων .

https://aeppinfo.files.wordpress.com/2013/02/ask_ch03.pdf

- Στη ΔΣ4 ωστόσο καλύτερη είναι η λύση με την ΟΣΟ (παρακάτω)

- Στη ΔΤ4 σας ανεβάζω και τη πιο δύσκολη εκδοχή της με την κύλιση των στοιχείων σε περίπτωση που ο δείκτης rear "τερματίσει".

3ο ΚΕΦ - ΑΣΚΗΣΗ ΔΣ4

ΠΡΟΓΡΑΜΜΑ cd
ΜΕΤΑΒΛΗΤΕΣ
 
ΑΚΕΡΑΙΕΣ: i, j, year[100], temp1, sum, flag
 
ΧΑΡΑΚΤΗΡΕΣ: titlos[100], temp2
ΑΡΧΗ
 
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
   
ΓΡΑΨΕ "ΔΩΣΕ ΤΟΝ ΤΙΤΛΟ ΚΑΙ ΤΗΝ ΧΡΟΝΟΛΟΓΙΑ ΤΟΥ CD"
   
ΔΙΑΒΑΣΕ titlos[i], year[i] 
 
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100
   
ΓΙΑ j ΑΠΟ 100 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
     
ΑΝ year[j] < year[j - 1] ΤΟΤΕ
        temp1 
<- year[j] 
        year
[j] <- year[j - 1] 
        year
[j - 1] <- temp1
        temp2 
<- titlos[j] 
        titlos
[j] <- titlos[j - 1] 
        titlos
[j - 1] <- temp2
     
ΤΕΛΟΣ_ΑΝ
   
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  flag 
<- 0
  i 
<- 1
  sum 
<- 0
 
ΟΣΟ (i <= 100 ΚΑΙ flag = 0) ΕΠΑΝΑΛΑΒΕ
   
ΑΝ year[i] < 1995 ΤΟΤΕ
      sum 
<- sum + 1
      i 
<- i + 1
   
ΑΛΛΙΩΣ
      flag 
<- 1
   
ΤΕΛΟΣ_ΑΝ
 
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

 


 

3ο ΚΕΦ - ΑΣΚΗΣΗ ΔΤ4   

(ΜΕ ΚΥΛΙΣΗ ΠΡΟΣ ΤΑ ΕΜΠΡΟΣ ΣΕ ΠΕΡΙΠΤΩΣΗ ΓΕΜΙΣΜΑΤΟΣ)

 

 

ΠΡΟΓΡΑΜΜΑ ΟΥΡΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: table[10]!υλοποιούμε την ουρά με έναν μονοδιάστατο πίνακα 10 πραγματικών
  ΑΚΕΡΑΙΕΣ: i, front, rear
  ΧΑΡΑΚΤΗΡΕΣ: eidos
ΑΡΧΗ
  front <- 1
  rear <- 0
  ΓΡΑΨΕ "ΠΛΗΚΤΡΟΛΟΓΗΣΕ 1 ΓΙΑ ΕΙΣΑΓΩΓΗ, 0 ΓΙΑ ΕΞΑΓΩΓΗ ΚΑΙ ΟΤΙΔΗΟΤΕ ΑΛΛΟ ΓΙΑ ΕΞΟΔΟ"
  ΔΙΑΒΑΣΕ eidos

  ΟΣΟ eidos = "0" Η eidos = "1" ΕΠΑΝΑΛΑΒΕ

    ΑΝ eidos = "0" ΤΟΤΕ
      ΑΝ front <= rear ΤΟΤΕ
        ΓΡΑΨΕ table[front] 
        front <- front + 1
      ΑΛΛΙΩΣ
        ΓΡΑΨΕ "ΟΥΡΑ ΑΔΕΙΑ"
      ΤΕΛΟΣ_ΑΝ

    ΑΛΛΙΩΣ_ΑΝ eidos = "1" ΤΟΤΕ
      ΑΝ rear < 10 ΤΟΤΕ
        rear <- rear + 1
        ΔΙΑΒΑΣΕ table[rear] 
      ΑΛΛΙΩΣ
        ΑΝ front > 1 ΤΟΤΕ
          ΓΙΑ i ΑΠΟ front ΜΕΧΡΙ 10
            table[i - front + 1] <- table[i] 
          ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          rear <- 10 - front + 1
          front <- 1
          ΔΙΑΒΑΣΕ table[rear] 
        ΑΛΛΙΩΣ
          ΓΡΑΨΕ "ΟΥΡΑ ΓΕΜΑΤΗ"
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
    ΑΛΛΙΩΣ
      ΓΡΑΨΕ "ΤΕΛΟΣ"
    ΤΕΛΟΣ_ΑΝ
    ΓΡΑΨΕ "ΠΛΗΚΤΡΟΛΟΓΗΣΕ 1 ΓΙΑ ΕΙΣΑΓΩΓΗ, 0 ΓΙΑ ΕΞΑΓΩΓΗ ΚΑΙ ΟΤΙΔΗΟΤΕ ΑΛΛΟ ΓΙΑ ΕΞΟΔΟ"
    ΔΙΑΒΑΣΕ eidos
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ