Jump to content

Οποιος γνωριζει απο προγραμματισμο..ας βοηθησει..


stixima
 Κοινοποίηση

Recommended Posts

Χρειαζομαι την βοηθεια οσων μπορουν να με βοηθησουν πανω σε αλγοριθμους.

 

Παρακατω γραφω την ασκηση την οποια δεν μπορεσα να την λυσω, και ευελπιστω οτι ισως βρεθει καποια βοηθεια. Θελω να ενημερωσω οτι δεν πηρα την ασκηση και την εκανα εδω copy-paste εχω αλλες 5 ασκησεις εκ τον οποιων προσπαθω να της υλοποιησω. Δυστιχως αυτη η ασκηση βγηκε εκτος λιστας γιατι δεν μπορω να την απαντησω.

 

ΑΣΚΗΣΗ:

-----------

 

Οι επεξεργαστες κειμενου παρεχουν τη δυνατοτητα αναζητησης μιας λεξης ή μιας φρασης σε ενα κειμενο. Σε μια απλουστερη εκδοχη το προβλημα ειναι η αναζητηση ενος αλφαριθμητικου μεσα σε ενα αλλο αλφαρηθμητικο. Στις πραγματικες γλωσσες προγραμματισμου τα αλφαρηθμητικα αποθηκευονται σε πινακες απο χαρακτηρες, ενω στο τελος του καθε αλφαρηθμητικου σημειωνεται με εναν ειδικο "χαρακτηρα τελους". Για παραδειγμα στη C το αλφαρηθμητικό

 

ΤΕΟ-07 θα αποθηκευτει οπως φαινετε παρακατω:

 

'Τ' 'Ε' 'Ο' '0' '7' '\0'

 

Οι τελευταιες θεσεις του πινακα δεν μας απασχολουν καθως ο χαρακτηρας τελους σημειωνει ακριβως που τελειωνει το συγκεκριμενο αλφαριθμητικο.

 

Ζητειται να αναπτυξετε εναν αλγοριθμο με τη μορφη ψευδοκωδικα που θα υλοποιει την αναζητηση ενος αλφαριθμητικου μεσα σε ενα αλλο. Ο αλγοριθμος θα πρεπει να ελεγχει αν το Α1 βρισκεται μεσα στο Α2 ή οχι και να εκτυπωνει το καταλληλο μηνυμα "ΒΡΕΘΗΚΕ ή "ΔΕΝ ΒΡΕΘΗΚΕ" αντιστοιχα. Αν το στοιχειο βρεθει να δινεται και η θεση του Α1 στην οποια αρχιζει το Α2 (π.χ αν Α1='ΤΕΟ07' και Α2='ΕΟ', να τυπωενεται "ΒΡΕΘΗΚΕ ΣΤΗ ΘΕΣΗ 2"

 

Υποδειξη¨Στον αλγοριθμο σας θεωρηστε οτι εχετε ετοιμα δυο αλφαριθμητικα Α1 και Α2 που ειναι ηδη αποθηκευμενα σε δυο αντιστοιχους πινακες χαρακτηρων, οπου το μεγιστο μηκος του Α1 ειναι Ν χαρακτηρες , ενω του Α2 ειναι Μ χαρακτηρες. Για να θεωρηθει η απαντηση σας πληρης πρεπει να υιοθετησετε αμυντικο προγραμματισμο για τη σχεση που πρεπει να εχουν τα Ν και Μ. Θεωρηστε επισης οτι το τελος καθε αλφαριθμητικου σημειώνεται με τον χαρακτηρα '\0'.

 

--------

 

Εγω προς το παρον καταφερα τα εξης:

ΔΕΔΟΜΕΝΑ

Α1: ARRAY[1..N] OF CHAR;

Α2: ARRAY[1..M] OF CHAR;

ΑΡΧΗ

ΕΑΝ (Α2=Α1) ΤΟΤΕ

ΤΥΠΩΣΕ ("ΒΡΕΘΗΚΕ")

ΑΛΛΙΩΣ

ΤΥΠΩΣΕ ("ΔΕΝ ΒΡΕΘΗΚΕ")

ΕΑΝ-ΤΕΛΟΣ

 

ΤΕΛΟΣ

http://www.danasoft.com/sig/grlansin.jpg
Link to comment
Share on other sites

Δεν έχω τώρα όρεξη να προσπαθήσω να γράψω ολοκληρωμένο αλγόριθμο για να διαπιστώσω αν αυτό που θα σου προτείνω είναι σωστό, απλά θα το γράψω και αν βοηθάει καλώς.

 

Έχεις τα 2 arrays. Ξεκίνα να ελέγχεις το Α2 γράμμα προς γράμμα ώσπου να βρεις το πρώτο γράμμα του Α1. Από τη στιγμή που θα το βρεις με το κατάλληλο while σύγκρινέ τα γράμμα προς γράμμα. Αν φτάσεις στο τέλος του Α1 η απάντηση είναι ΝΑΙ. Αλλιώς είναι ΟΧΙ.

Παρακαλούνται τα fanboys των Samsung, Sony, Microsoft να σταματήσουν να μου γράφουν πμ με προσβολές γιατί γέμισε το inbox και πλέον δε θα τα λαμβάνω.

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Είχα λίγα κεφάκια και το έφτιαξα. Βέβαια βρίσκει μόνο την πρώτη ύπαρξη του string, άμα θες να βρίσκεις όλες τις φορές θα πρέπει να κάνεις το FOUND και το FOUNDSTART πίνακες.

 

Άμα έχεις απορίες εδώ είμαστε. Enjoy :)

 

ΔΕΔΟΜΕΝΑ
Α1: ARRAY[1..N] OF CHAR;
Α2: ARRAY[1..M] OF CHAR;
ΑΡΧΗ

LENGTH_Α1 = 0
LENGTH_Α2 = 0

Ι = 0
ΟΣΟ Ι <= Ν
ΑΝ (Α1 == '\0') ΤΟΤΕ 
	LENGTH_Α1 = Ι - 1
	Ι = Ν + 1
ΤΕΛΟΣ ΑΝ
Ι++
ΤΕΛΟΣ ΟΣΟ

Ι = 0
ΟΣΟ Ι <= Μ
ΑΝ (Α2 == '\0') ΤΟΤΕ 
	LENGTH_Α2 = Ι - 1
	Ι = Μ + 1
ΤΕΛΟΣ ΑΝ
Ι++
ΤΕΛΟΣ ΟΣΟ

FOUND = -1 	// -1 = δεν βρέθηκε, 1 βρέθηκε
FOUNDSTART = 0

AN (LENGTH_Α2 > LENGTH_Α1) TOTE
ΤΥΠΩΣΕ ("ΔΕΝ ΒΡΕΘΗΚΕ")
ΑΛΛΙΩΣ
I = 1
J = 1
ΓΙΑ Ι = 1 ΜΕΧΡΙ LENGTH_Α1
	ΑΝ (Α1[i] == A2[J]) TOTE
		ΑΝ (J == LENGTH_Α2) TOTE 
			FOUND = 1
			ΤΕΛΟΣ ΓΙΑ
		ΤΕΛΟΣ ΑΝ
		AN (FOUNDSTART == 0) TOTE FOUNDSTART = I
		J++
	ΑΛΛΙΩΣ
		FOUNDSTART = 0
		J = 1
	ΤΕΛΟΣ ΑΝ
ΤΕΛΟΣ ΓΙΑ
ΑΝ (FOUND == 1) TOTE
	ΤΥΠΩΣΕ ("ΒΡΕΘΗΚΕ ΣΤΗΝ ΘΕΣΗ ", FOUNDSTART)
ΑΛΛΙΩΣ
	ΤΥΠΩΣΕ ("ΔΕΝ ΒΡΕΘΗΚΕ")
ΤΕΛΟΣ ΑΝ
ΤΕΛΟΣ

Link to comment
Share on other sites

Sas eyxaristw kai toys dyo. PropheT 8a ka8iso tora na katanoiso ton kwdika pou mou edoses kai an exo kamia aporia.. 8a se ksana enoxliso an den se peirazei.. :rolleyes:
http://www.danasoft.com/sig/grlansin.jpg
Link to comment
Share on other sites

Αρχικό Μήνυμα από το μέλος papajohn ( 6 Ιαν. 2005 , 11:43)

 

Πω πω πως μπορείτε και γράφετε κώδικα στα ελληνικά! :)

 

 

Εγώ δε μπορώ.

Εδώ και PAscalοειδή κώδικα δε μπορώ να γράψω, σκέφτομαι κατευθείαν σε στυλ java.

Παρακαλούνται τα fanboys των Samsung, Sony, Microsoft να σταματήσουν να μου γράφουν πμ με προσβολές γιατί γέμισε το inbox και πλέον δε θα τα λαμβάνω.

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

"Ζητειται να αναπτυξετε εναν αλγοριθμο με τη μορφη ψευδοκωδικα που θα υλοποιει την αναζητηση ενος αλφαριθμητικου μεσα σε ενα αλλο. Ο αλγοριθμος θα πρεπει να ελεγχει αν το Α1 βρισκεται μεσα στο Α2 ή οχι και να εκτυπωνει το καταλληλο μηνυμα "ΒΡΕΘΗΚΕ ή "ΔΕΝ ΒΡΕΘΗΚΕ" αντιστοιχα. Αν το στοιχειο βρεθει να δινεται και η θεση του Α1 στην οποια αρχιζει το Α2 (π.χ αν Α1='ΤΕΟ07' και Α2='ΕΟ', να τυπωενεται "ΒΡΕΘΗΚΕ ΣΤΗ ΘΕΣΗ 2""

 

Εδώ κα΄τι δεν παέι καλά. Για να βρίσκεται το Α1 μέσα στο Α2 θα πρέπει το Α2 μήκος να είναι μεγαλύτερο του Α1. στο παράδειγμά σου, προφανώς αυτό δε συμβαίνει (αν αλλάξεις τα Α1 με Α2 και τουμπαλιν έχει μεγαλύτερο νόημα). αυτό το πρόβλημα νομίζω ότι περιέχεται και στη λύση που έδωσε ο PropheT -δυστυχώς δε μπορώ να το δω ποιο διεξοδικά. πάντως ο lewton τα είπε μια χαρά

Link to comment
Share on other sites

Αρχικό Μήνυμα από το μέλος Erevodifwntas ( 6 Ιαν. 2005 , 14:12)

 

"Ζητειται να αναπτυξετε εναν αλγοριθμο με τη μορφη ψευδοκωδικα που θα υλοποιει την αναζητηση ενος αλφαριθμητικου μεσα σε ενα αλλο. Ο αλγοριθμος θα πρεπει να ελεγχει αν το Α1 βρισκεται μεσα στο Α2 ή οχι και να εκτυπωνει το καταλληλο μηνυμα "ΒΡΕΘΗΚΕ ή "ΔΕΝ ΒΡΕΘΗΚΕ" αντιστοιχα. Αν το στοιχειο βρεθει να δινεται και η θεση του Α1 στην οποια αρχιζει το Α2 (π.χ αν Α1='ΤΕΟ07' και Α2='ΕΟ', να τυπωενεται "ΒΡΕΘΗΚΕ ΣΤΗ ΘΕΣΗ 2""

 

Εδώ κα΄τι δεν παέι καλά. Για να βρίσκεται το Α1 μέσα στο Α2 θα πρέπει το Α2 μήκος να είναι μεγαλύτερο του Α1. στο παράδειγμά σου, προφανώς αυτό δε συμβαίνει (αν αλλάξεις τα Α1 με Α2 και τουμπαλιν έχει μεγαλύτερο νόημα). αυτό το πρόβλημα νομίζω ότι περιέχεται και στη λύση που έδωσε ο PropheT -δυστυχώς δε μπορώ να το δω ποιο διεξοδικά. πάντως ο lewton τα είπε μια χαρά

 

 

Βασικά η εκφώνηση έχει λάθος, μια λέει το ένα και μια λέει το άλλο. Anywayz εγώ θεωρώ ότι Α1 το text και Α2 το search string, άρα A1>A2.

 

(π.χ αν Α1='ΤΕΟ07' και Α2='ΕΟ', να τυπωενεται "ΒΡΕΘΗΚΕ ΣΤΗ ΘΕΣΗ 2")

 

Αυτό διάβασα και έπραξα αναλόγος :)

Link to comment
Share on other sites

Αρχικό Μήνυμα από το μέλος papajohn ( 6 Ιαν. 2005 , 11:43)

 

Πω πω πως μπορείτε και γράφετε κώδικα στα ελληνικά! :)

 

 

Κάνουμε την καρδιά μας πέτρα, σκεφτόμαστε σε C++ και γράφουμε ελληνικά αντί για αγγλικά :P

Link to comment
Share on other sites

PropheT mporeis na mou eksigiseis ti akribos simenei to

I++? Ta dyo + diladi ti prospa8oyn na kanoun?

 

Episis mia alli erotisi. Giati bazeis dyo == kai oxi ena sto simeio (A1 == '\0')?

http://www.danasoft.com/sig/grlansin.jpg
Link to comment
Share on other sites

Αρχικό Μήνυμα από το μέλος stixima ( 6 Ιαν. 2005 , 15:46)

 

PropheT mporeis na mou eksigiseis ti akribos simenei to

I++? Ta dyo + diladi ti prospa8oyn na kanoun?

 

Episis mia alli erotisi. Giati bazeis dyo == kai oxi ena sto simeio (A1 == '\0')?

 

 

To I++ shmainei "Ayxhse to I kata 1" tha htan to idio dhladh an grafame

I=I+1. To grafoume etsi gia syntomia, den yparxei diafora.

Antistoixa uparxei kai to I-- (pou opws katalabaineis shmainei "meiwse to I kata 1")

 

Ta dyo = (==) xrhsimopoiountai se periptwsh elegxou isothtas, gi ayto k ta blepeis mono se ekfraseis tou styl

"AN (kati == kati allo)". An thes na ekxwrhseis esu timh mias metablhths se mia allh, tote mono xrhsimopoieis ena =

p.x. I = J + 5

 

Elpizw na boithisa ligo ... ;)

A clever person solves a problem.

A wise person avoids it.

 

-- Einstein

Link to comment
Share on other sites

Τα είπε όλα ωραία ο hsigma για μένα :)
Link to comment
Share on other sites

Αρχικό Μήνυμα από το μέλος hsigma ( 6 Ιαν. 2005 , 15:56)

 

To I++ shmainei "Ayxhse to I kata 1" tha htan to idio dhladh an grafame

I=I+1. To grafoume etsi gia syntomia, den yparxei diafora.

Antistoixa uparxei kai to I-- (pou opws katalabaineis shmainei "meiwse to I kata 1")

 

Ta dyo = (==) xrhsimopoiountai se periptwsh elegxou isothtas, gi ayto k ta blepeis mono se ekfraseis tou styl

"AN (kati == kati allo)". An thes na ekxwrhseis esu timh mias metablhths se mia allh, tote mono xrhsimopoieis ena =

p.x. I = J + 5

 

Elpizw na boithisa ligo ... ;)

 

 

Σωστά αλλά να σθμπληρώσω τη διευκρίνηση ότι ισχύουν μόνο σε C/C++ γιατί π.χ. σε Delphi η ισότητα ελέγχεται με απλό =

 

Σε ψευδοκώδικα ΙΜΗΗΗΟ "κανονικά" αφαιρείς οτιδήποτε σε δεσμεύει με συγκεκριμένη γλώσσα ( όπως τα == ) , γράφεις το τι θα κάνει το πρόγραμμα σε απλά αγγλικά (ή ελληνικά :) ).

KCB
Link to comment
Share on other sites

Μου επιτρέπετε να ρωτήσω κάτι από περιέργεια;

Η άσκηση για τι σχολή/μάθημα είναι;

Σε τι γλώσσα πρέπει να υλοποηθεί;

Εγκαταλείψτε την ελπίδα για ένα καλύτερο παρελθόν!
Link to comment
Share on other sites

Αρχικό Μήνυμα από το μέλος KCB ( 6 Ιαν. 2005 , 17:00)

 

Σε ψευδοκώδικα ΙΜΗΗΗΟ "κανονικά" αφαιρείς οτιδήποτε σε δεσμεύει με συγκεκριμένη γλώσσα ( όπως τα == ) , γράφεις το τι θα κάνει το πρόγραμμα σε απλά αγγλικά (ή ελληνικά :) ).

 

 

Έχεις απόλυτο δίκιο (γιαυτό πολλοί λένε ότι πρέπει να διδάσκονται μόνο αρχές προγραμματισμού σε ψευδογλώσσα στο πρώτο εξάμηνο στις σχολές) αλλά που να το βρεις;

Εγώ με java πρωτοπρογραμμάτισα με java σκέφτομαι.

Παρακαλούνται τα fanboys των Samsung, Sony, Microsoft να σταματήσουν να μου γράφουν πμ με προσβολές γιατί γέμισε το inbox και πλέον δε θα τα λαμβάνω.

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Αρχικό Μήνυμα από το μέλος ipparxos ( 6 Ιαν. 2005 , 17:19)

 

Μου επιτρέπετε να ρωτήσω κάτι από περιέργεια;

Η άσκηση για τι σχολή/μάθημα είναι;

Σε τι γλώσσα πρέπει να υλοποηθεί;

 

 

Η εκφώνηση λέει "Ζητειται να αναπτυξετε εναν αλγοριθμο με τη μορφη ψευδοκωδικα..." γι'αυτό και το σχόλιό μου περί ψευδοκώδικα.

Ένα βιβλίο που βρήκα καταπληκτικό και είναι σχεδόν ανεξάρτητο από γλώσσες είναι το Code Complete απόπου και το συμπέρασμα για τον ψευδοκώδικα.

KCB
Link to comment
Share on other sites

Akomi mia aporia:

 

FOUND = -1 // -1 = δεν βρέθηκε, 1 βρέθηκε

 

Oi dyo ka8etes-> // anamesa sto -1 ti simenoun?

http://www.danasoft.com/sig/grlansin.jpg
Link to comment
Share on other sites

Οι δυο κάθετες || σημαίνουν OR. (και αυτό απο C/C++)

 

Α, απ' ότι φαντάζομαι η άσκηση δεν είναι για σχολή, είναι για Γ Λυκείου.

 

Και κατι άσχετο:

Βρε παιδία μιας και μαζευτήκαμε αρκετοι, ξέρετε κανα καλο βιβλίο για εισαγωγη σε WIndows Προγραμματισμο σε C++ ας πούμε; Ξερω C και εχω διαβάσει ένα βιβλίο για C++ χωρις όμως να έχω γράψει ποτε τίποτα σε C++. Ψαχνοντας στη βιβλιοθήκη της σχολής δεν βρήκα τίποτα για windows. Η έυρισκα για C++ console based η για C# σε ΝΕΤ. Τι φρούτο είναι πάλι η C#; Έχω το .NET 2003, αξίζει να ασχοληθώ με αυτη αντί για C++;

Link to comment
Share on other sites

Οι δυο κάθετες || σημαίνουν OR. (και αυτό απο C/C++)

 

Opote afou simenoun OR mipos parapano pou anaferei :

 

FOUND = -1 // -1 = δεν βρέθηκε, 1 βρέθηκε

 

Ennoei: FOUND = -1 OR 1 = δεν βρέθηκε, 1 βρέθηκε

 

Diladi o deyteros assos 8a prepei na exei to "-" 'h oxi?

 

Sorry pou sas prizo alla taytoxrona prospa8o na katanoiso kai ton algori8mo para na ton kano antigrafi monokopania.. :eek:

http://www.danasoft.com/sig/grlansin.jpg
Link to comment
Share on other sites

Κοίτα όπως βλέπω τώρα πάλι τη γραμμή του κώδικα, αυτο που σου έχει γράψει, δηλαδή οι διπλές μπάρες // εννοεί σχόλιο. Όμως στη C δεν επιτρέπεται νομίζω να τις βάλεις in line παρα μόνο στην αρχή της γραμμής. Απλά όπως τις είδα στη γραμμή in line νόμιζα πως δεν είχε στο πληκτρολόγιο του τις ||. Sorry!

 

Τεσπα, δεν έχω διαβάσει όλο το κώδικα αλλα μαλλον σου λέει:

FOUND=-1;

// *Αυτο είναι σχόλιο* -1=δεν βρέθηκε , 1 βρέθηκε.

Link to comment
Share on other sites

Αρχικό Μήνυμα από το μέλος papajohn ( 6 Ιαν. 2005 , 22:04)

 

Α, απ' ότι φαντάζομαι η άσκηση δεν είναι για σχολή, είναι για Γ Λυκείου.

 

 

Κι εγώ έτσι κατάλαβα, αλλά επειδή είδα την ηλικία του stixima... ρώτησα.

Εγκαταλείψτε την ελπίδα για ένα καλύτερο παρελθόν!
Link to comment
Share on other sites

Κοίτα όπως βλέπω τώρα πάλι τη γραμμή του κώδικα, αυτο που σου έχει γράψει, δηλαδή οι διπλές μπάρες // εννοεί σχόλιο. Όμως στη C δεν επιτρέπεται νομίζω να τις βάλεις in line παρα μόνο στην αρχή της γραμμής. Απλά όπως τις είδα στη γραμμή in line νόμιζα πως δεν είχε στο πληκτρολόγιο του τις ||. Sorry!

 

Τεσπα, δεν έχω διαβάσει όλο το κώδικα αλλα μαλλον σου λέει:

FOUND=-1;

// *Αυτο είναι σχόλιο* -1=δεν βρέθηκε , 1 βρέθηκε.

 

 

Thanks.. :cool:

 

Κι εγώ έτσι κατάλαβα, αλλά επειδή είδα την ηλικία του stixima... ρώτησα.

 

Οχι δεν ειναι για Λυκειο.. προς θεου..

 

Ειναι για Πανεπιστημιου τμηματος Πληροφορικης (α' εξαμηνο).

http://www.danasoft.com/sig/grlansin.jpg
Link to comment
Share on other sites

Σχόλια στην C++ επιτρέπονται παντού. Mπορεις να βάλεις // στο τέλος κάθε γραμμής [ανεξαιρέτως περιεχομένου] και /* σχόλιο */ σε οποιο σημείο του κώδικα θες.

 

Oi dyo ka8etes-> // anamesa sto -1 ti simenoun?

 

Anywayz, σχόλιο είναι, ο κώδικας είναι απλά FOUND = -1 :)

Link to comment
Share on other sites

Τα άσχετα posts αφαιρέθηκαν, το topic θα μείνει ανοιχτό, αλλά θα κλειδωθεί αν επαναληφθεί κάτι παρόμοιο.
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Επισκέπτης
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Κοινοποίηση

×
×
  • Create New...