Αποστολέας Θέμα: Παραληλοι πινακες  (Αναγνώστηκε 2753 φορές)

aleremain

  • Θαμώνας
  • ***
  • Μηνύματα: 28
Παραληλοι πινακες
« στις: 02 Μάρ 2008, 02:12:55 μμ »
Ναι γεια σας εχω προβλημα σε αυτο το Προγραμμα...


Σε μια τραπεζα τηρουνται τα παρακατω στοιχεια σε δυο παραληλους πινακες ως εξης, πινακας ΟΝ[100] στον οποιο ειναι αποθηκευμενα τα ονοματεπωνυμα των πελατων και ΛΟΓ[100] οι αντιστιχοι αριθμοι λογιαριασμου τους.Να γραφει προγραμμα το οποιο  Θα διαβαζει ενα τυχαιο αριθμο λογαριασμου,θα ελεγχει τα στοιχεια των παρακατω πινακων και 8α μας εμφανιζει το αντιστοιχο ονοματεπωνυμο και  8α εμφανιζει το αντιστοιχο μηνυμα στην περιπτωση που ο λογιασμος δεν υπαρχει..

Lev

  • Οπαδός
  • **
  • Μηνύματα: 17
Απ: Παραληλοι πινακες
« Απάντηση #1 στις: 02 Μάρ 2008, 03:11:14 μμ »
Η λύση έχει ως εξής:

Διαβάζεις τον τυχαίο αριθμό λογαριασμού

Κάνεις σειριακή αναζήτηση στον πίνακα ΛΟΓ[100] με κλειδί τον αριθμός_λογαριασμού

Αποθηκεύεις την θέση που το βρήκες στον πίνακα σε μια μεταβλητή pos την οποία και έχεις αρχικοποιήσει στον 0

Αν pos<>0 τότε
     Εκτύπωσε ΟΝ[pos]
Αλλιώς
     Εκτύπωσε "Δεν υπάρχει"
Τέλος_αν

Μπορείς στο αν να χρησιμοποιήσεις και την αντίστοιχη λογική μεταβλητή που χρησιμοποίησες κατά την σειριακή αναζήτηση π.χ υπάρχει
Αν υπάρχει=αληθής τότε
     Εκτύπωσε ΟΝ[pos]
Αλλιώς
     Εκτύπωσε "Δεν υπάρχει"
Τέλος_αν

aleremain

  • Θαμώνας
  • ***
  • Μηνύματα: 28
Απ: Παραληλοι πινακες
« Απάντηση #2 στις: 02 Μάρ 2008, 05:13:45 μμ »
Μηπως μπορω να χω ολοκληρη την λυση γιατι δεν τα παω και πολυ καλα με αυτα?

P.Tsiotakis

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3301
  • agent romanoff you miss me?
    • P.Tsiotakis
Απ: Παραληλοι πινακες
« Απάντηση #3 στις: 02 Μάρ 2008, 06:25:29 μμ »
Κάτι σαν αυτό (πρώην άσκηση 5.249);

Η τράπεζα Τενεούπολης, για τη διαχείριση των πιστωτικών καρτών των 12000 πελατών της, χρησιμοποιεί πίνακα Ο που περιέχει το ονοματεπώνυμο κάθε πελάτη και παράλληλο πίνακα Π που περιέχει το ποσό που έχει χρεωθεί στην κάρτα του. Να αναπτύξετε αλγόριθμο που:
α. Θα διαβάζει το όνομα ενός πελάτη και το νέο ποσό που χρέωσε την κάρτα του, και θα τροποποιεί το κατάλληλο κελί του πίνακα Π.
β. Θα εκτυπώνει τα ονόματα των 100 μεγαλύτερων μεγαλοοφειλετών. (Να θεωρήσετε ότι είναι μόνο 100.)
γ. Θα διαβάζει το όνομα ενός πελάτη και θα εκτυπώνει τα ονόματα των πελατών με οφειλή μεγαλύτερη από εκείνον και την οφειλή τους.

Αλγόριθμος Τράπεζα
 Δεδομένα // Ο, Π //
 Διάβασε ονπελάτη  ! (α)
 ! σειρ. αναζ. πίνακα Ο με κλειδί ονπελάτη
 …………………………………………………
 Αν done = Αληθής τότε
  Διάβασε χρέωση
  Π[pos] ← Π[pos] + χρέωση
 Αλλιώς    ! δε βρέθηκε
  Εκτύπωσε "Δεν υπάρχει αυτός ο πελάτης"
 Τέλος_αν
 ! φθίνουσα ταξ. πίνακα Π, αντιμ. πίνακα Ο
 …………………………………………………
 Για i από 1 μέχρι 100
  Εκτύπωσε Ο[ i ]
 Τέλος_επανάληψης
 Διάβασε ονπελάτη   ! (γ)
 ! σειρ. αναζ. πίνακα Ο με κλειδί ονπελάτη
 …………………………………………………
 Αν done = Aληθής τότε
  i ← 1   ! ταξινομημένος
  Όσο Π [ i ] > Π[pos] επανάλαβε
   Εκτύπωσε Ο[ i ], Π[ i ]
   i ← i + 1
  Τέλος_επανάληψης
 Αλλιώς    ! δε βρέθηκε
  Εκτύπωσε "Δεν υπάρχει αυτός ο πελάτης"
 Τέλος_αν
Τέλος Τράπεζα

EleniK

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 708
Απ: Παραληλοι πινακες
« Απάντηση #4 στις: 26 Μάρ 2008, 12:24:11 πμ »
Αλγόριθμος Τράπεζα
Για i από 1 μέχρι 100
    Διάβασε Λο[ i ], Ον[ i ]
τέλος_επανάληψης
Διάβασε λογαριασμό
θέση <- 0
i <- 1
flag <-ψευδής
όσο i<=100 και flag=ψευδής επανάλαβε
   Αν λογαριασμό=Λο[ i ] τότε
       θέση <-i
       flag <- αληθής
   τέλος_αν
   i <- i+1
τέλος_επανάληψης
Αν θέση < > 0 τότε
   εμφάνισε Ον[ θέση ]
αλλιώς
   εμφάνισε 'δεν υπάρχει ο λογαριασμός'
τέλος_αν
Τέλος Τράπεζα

Δλδ ψάχνεις σύμφωνα με αυτό που έχεις, δλδ αν είχες μια λίστα με ονοματα μαθητών και δίπλα το βαθμό τους και σου έλεγαν ποιος είναι ο βαθμός της Κοκκίνου, πρώτα δεν θα κοιτούσες στη λίστα με τα ονοματα και μετά κρατημένο το δακτυλάκι θα εβλεπες δίπλα το βαθμό. Έτσι και εδώ κάνεις αναζήτηση τον λογαριασμό που έχεις στον πίνακα με τους λογαριασμούς και στη συνέχεια αν υπάρχει (αρα έχεις τη γραμμή) εμφανίζει το όνομα που βρίσκετα 'δίπλα'.       
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19