THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: pepe on April 13, 2010, 14:19:40 pm



Title: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: pepe on April 13, 2010, 14:19:40 pm
 Εργασία Β (Hμ/νία λήξης δηλώσεων: 19/04/2010)

Εργασία Β

Σε μία περιοχή δραστηριοποιούνται δύο εταιρίες κινητής τηλεφωνίας. Η εταιρία Α και η εταιρία Β η κάθε μια από τις οποίες διαθέτει έναν αριθμό από Ν πυλώνες οι οποίοι αριθμούνται από το 0 έως το Ν-1. Προκειμένου να συγχωνευτούν οι δύο εταιρίες πρέπει ο κάθε πυλώνας της εταιρίας Α να συνδεθεί με έναν και μόνον έναν πυλώνα της εταιρίας Β και αντίστροφα. Για να εξοικονομηθεί η αναγκαία καλωδίωση ακολουθείται η εξής διαδικασία. Αναζητούνται οι δύο πυλώνες που απέχουν μεταξύ τους τη μικρότερη απόσταση και συνδέονται μεταξύ τους. Στη συνέχεια οι πυλώνες αυτοί αφαιρούνται από τη λίστα των πυλώνων και η διαδικασία επαναλαμβάνεται με τους υπόλοιπους πυλώνες.. Η διαδικασία τερματίζεται όταν σχηματιστούν όλα τα ζεύγη σύνδεσης.

Να γραφεί το πρόγραμμα το οποίο να διαβάζει τον αριθμό των πυλώνων που διαθέτουν οι εταιρίες στην περιοχή και τις  συντεταγμένες (x,y) των πυλώνων κάθε εταιρίας. Στη συνέχεια το πρόγραμμα αν βρίσκει και να εκτυπώνει τα ζεύγη των πυλώνων που θα συνδεθούν μεταξύ τους.

Βοηθητικές παρατηρήσεις

Οι δύο εταιρίες διαθέτουν τον ίδιο αριθμό πυλώνων στην περιοχή.

 Για να αφαιρέσετε έναν πυλώνα από τη λίστα μπορείτε να τον αριθμήσετε με μια τιμή μεγαλύτερη του Ν και να κάνετε στη συνέχεια τον σχετικό έλεγχο.

Για τους πίνακες που θα χρειασθείτε να ορίσετε μια μέγιστη διάσταση την οποία δεν πρέπει να υπερβαίνει το Ν.

Οι συντεταγμένες (x,y) ορίζονται σε ένα τοπικό Καρτεσιανό σύστημα συντεταγμένων.   


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Αιμιλία η φτερωτή χελώνα on April 13, 2010, 14:29:20 pm
εγω λεω μονοδιαστατους :P :P :P


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 13, 2010, 14:31:18 pm
Ε βασικα οπως βολευεσαι.......


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: cyb3rb0ss on April 13, 2010, 14:44:16 pm
Η πρόταση κρύβει πολλά...

Απειλές...Εκπλήξεις...Υποσχέσεις...Δέλεαρ...Καφρί λες...Απογοητεύσεις....Ξενύχτι...Βωμολοχίες...Γυμ ναστική...
Κούραση...Ξεκούραση...Εκτόνωση...

Για την εργασία θα πούμε τίποτα?:)


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Auxilium on April 15, 2010, 11:55:53 am

Τα μεγαλύτερα έτη που δεν παρακολουθούν το εργαστήριο πρέπει και αυτοί να κάνουν τις εργασίες για να περάσουν το μάθημα?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: ΚΗΜΜΥ on April 15, 2010, 12:04:09 pm
Πρεπει να τις κανουν και να πανε στο τελος για προφορικη εξεταση για να γραψουν με βαση το 5.

Αν δεν εχει αλλαξει κατι απο περυσι που δεν νομιζω...


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Auxilium on April 15, 2010, 19:42:20 pm
 Μπορεί κάποιος να εξηγήσει λίγο περαιτέρω τι θέλει να πει ο ποιητής με το  " Για να αφαιρέσετε έναν πυλώνα από τη λίστα μπορείτε να τον αριθμήσετε με μια τιμή μεγαλύτερη του Ν "  ?   Ευχαριστώ


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 15, 2010, 19:49:42 pm
οπως το σκευτομαι εγω, εχεις 2 πινακες 3xN.Στην 1η στηλη καθε πινακα ειναι ο αυξων αριθμος του πυλωνα (1,2,...,ν), στην δευτερη η μια συντεταγμενη του (εστω η x) και στην τριτη η αλλη (η y).

Τωρα κανεις καποιες διαδικασιες για να βρεις ποιοι 2 πυλωνες ειναι πιο κοντα.Μολις το κανεις αυτο,στην γραμμη που περιεχονται οι δυο πυλωνες,δινεις ως τιμη της πρωτης στηλης εναν αλλο αριθμο,μεγαλυτερο του ν,ετσι ωστε να αφαιρεσεις τους 2 αυτους πυλωνες απο την επομενη συγκριση!

Για του συμβολισμους,το Ν ειναι η μεγιστη διασταση των πινακων και ν ο αιρθμος των πυλωνων.Προφανως ειναι ν<=Ν


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Auxilium on April 15, 2010, 22:03:00 pm
  Αν έχω δύο πίνακες , A kαι Β.

Αντι να γράψω  

B[2]=5
k=B[2]
A[k]=0

Μπορώ να γράψω κατευθείαν

B[2]=5
A[B[2]]=0   ?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: provataki on April 15, 2010, 22:16:31 pm
nai


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: pepe on April 15, 2010, 23:35:05 pm
Πολύ καλό μου ακούγεται αυτό που προτείνει ο il capitano, αλλά την έχω ξεκινήσει τελείως αλλιώς και δεν παίζει να τ' αλλάξω. Άσε που δεν ξέρω πως μπορεί να γίνει κάτι τέτοιο! :)
 Anyway, εγώ έτσι όπως την κάνω τους πίνακες Α και Β τους έκανα 2xΝ. Μπορώ να τους κάνω τύπου char για να διαβάζει τις συντεταγμένες και μετά σε κάποιο κελί να βάλω π.χ. ένα χαρακτήρα 'a'; (αυτό για να μην ξαναγίνεται μετά ο έλεγχος, δεν ξέρω αν καταλάβατε τι λέω...)


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 16, 2010, 00:35:40 am
Καπου κολλαει αυτο που λες.Εκτος απο το οτι γενικα σε char εχει γινει συνηθεια να αποθηκευουμε χαρακτηρες,η char προυποθετει ακεραιους αριθμους,αλλα πουθενα δεν αναφερεται οτι οι συντεταγμενες θα ειναι ακεραιοι.Οποτε το λογικο ειναι να δηλωθουν δεκαδικοι (float,η σε ακραια περιπτωση double),που ομως εκει δεν αποθηκευονται χαρακτηρες...


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: pepe on April 16, 2010, 00:56:49 am
Κρίμα, τζάμπα η έμπνευση... Δεν είχα σκεφτεί ότι μπορεί οι συντεταγμένες να είναι δεκαδικοί..   :-\
Άρα μένει η λύση σου;;;;;  :???: Σιγά μην το σκεφτόμουν ποτέ αυτό, φακ! Φχαριστώ!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Arthuros on April 16, 2010, 18:12:50 pm
πειράζει αν κάνω κάπια λύση χωρίς την χρήση πινάκων; γνώριζει κανείς;


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: provataki on April 16, 2010, 20:01:07 pm
πειράζει αν κάνω κάπια λύση χωρίς την χρήση πινάκων; γνώριζει κανείς;

Να γραφεί το πρόγραμμα το οποίο να διαβάζει τον αριθμό των πυλώνων που διαθέτουν οι εταιρίες στην περιοχή και τις  συντεταγμένες (x,y) των πυλώνων κάθε εταιρίας. Στη συνέχεια το πρόγραμμα αν βρίσκει και να εκτυπώνει τα ζεύγη των πυλώνων που θα συνδεθούν μεταξύ τους.

Δε νομιζω οτι μπορεις να κανεις υλοποιηση χωρις πινακες καθοτι θα πρεπει να διαβαζεις πρωτα και μετα να κανεις τη δουλεια που σου λεει με τα στοιχεια.
αλλα ακομη και αν επαιζε πρακτικη εναλλακτικη λυση(το να χρησιμοποιησεις Ν μεταβλητες ειναι σωστη υλοποιηση αλλα ειναι και μαλακια :D), στις παρατηρησεις σου λεει για πινακες....

παραδιδονται ιδιαιτερα μαθηματα C/C++. Τιμες προσιτες!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Avraam on April 16, 2010, 20:07:06 pm
Πως θα γραψω τα στοιχεια που πρεπει να εχει ο 3xN πινακας ωστε να τα αναγνωριζει ο compiler...Μια βοηθεια ρε σεις γιατι ημουν και Θετικη....


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Arthuros on April 16, 2010, 20:14:08 pm
kai epishs an exw pinaka 3xN pws tha kanw thn afairesh meta gia na vrw tthn minimum apostash xwris na simperilavw ton afxon arithmo pou exw sthn prwth stili tou pinaka...  kamia voithia...???


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: τσαι-borg on April 17, 2010, 00:26:35 am
kai epishs an exw pinaka 3xN pws tha kanw thn afairesh meta gia na vrw tthn minimum apostash xwris na simperilavw ton afxon arithmo pou exw sthn prwth stili tou pinaka...  kamia voithia...???

αν καταλαβα τι εννοεις,νομιζω πως γινεται με for μεσα σε for.


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 17, 2010, 04:52:22 am
Πως θα γραψω τα στοιχεια που πρεπει να εχει ο 3xN πινακας ωστε να τα αναγνωριζει ο compiler...Μια βοηθεια ρε σεις γιατι ημουν και Θετικη....
δεν σε πιανω καθουλου,εξηγησε λιγο παραπανω αν μπορεις!

kai epishs an exw pinaka 3xN pws tha kanw thn afairesh meta gia na vrw tthn minimum apostash xwris na simperilavw ton afxon arithmo pou exw sthn prwth stili tou pinaka...  kamia voithia...???

αν καταλαβα τι εννοεις,νομιζω πως γινεται με for μεσα σε for.
γενικα θα κανεις διπλη for, για να βρεις την ελαχιστη αποσταση,απλα πριν κανεις καθε συγκριση,θα κανεις εναν ελεγχο αν το στοιχειο της 1ης στηλης ειναι μικροτερο απο n.Αν ειναι κανεις συγκριση κανονικα,αν οχι πας στο επομενο στοιχειο (προφανως για να ειναι μεγαλυτερο απο n εχει χρησιμοποιηθει καπου αλλου)!
Ετσι χρησιμοποιοντας καμποσες βοηθητικες μεταβλητες (εγω υπολογιζω 2 αλλα δεν εχω γραψει κωδικα για να πω με σιγουρια),καταληγεις καθε φορα στους 2 πυλωνες με την ελαχιστη αποσταση,για τους οποιους κανεις το στοιχειο της 1ης στηλης >n για να μην τους συμπεριλαβεις σε επομενη συγκριση!

ελπιζω να γινομαι κατανοητος :)


p.s. γραφε με ελληνικα για να ειναι πιο ευαναγνωστα,εκτος και αν εχει καποιο προβλημα το pc σου


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Avraam on April 17, 2010, 10:01:36 am
Eννοω οτι ο πινακας ζηταμε να εχει τους πυλωνες και τις συντεταγμενες τους.Οποτε οταν στην αρχη θα τους γραψουμε σαν float A[ ] και


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: provataki on April 17, 2010, 11:35:29 am
kai epishs an exw pinaka 3xN pws tha kanw thn afairesh meta gia na vrw tthn minimum apostash xwris na simperilavw ton afxon arithmo pou exw sthn prwth stili tou pinaka...  kamia voithia...???

η αφερεση γινεται "κελι"-"κελι" και οχι γραμμη γραμμη.


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 17, 2010, 13:25:03 pm
Eννοω οτι ο πινακας ζηταμε να εχει τους πυλωνες και τις συντεταγμενες τους.Οποτε οταν στην αρχη θα τους γραψουμε σαν float A [ ] και Β [ ] θα δεσμευσει ο compiler καποιες θεσεις μνημης οπου θα γραφουν τα στοιχεια των πυλωνων και οι συντεταγμενες τους.Οποτε καπως πρεπει να γραψουμε οτι οι πινακες μας Α και Β θα εχουν τα ζητουμενα στοιχεια, δηλ. τις συντεταγμενες και τους πυλωνες για να το καταλαβει ο υπολογιστης.Ελπιζω να μην σε μπερδεψα περισσοτερο.

δεδομενου οτι θα κανεις εναν πινακα 3xN θα κανεις μια δηλωση του στιλ A[N][3] (το Ν πρεπει να ειναι συγκεκριμενο και να μην διαβαζεται μεσα στο προγραμμα γιατι μετα θα βγαζει σφαλμα ο κομπαιλερ).

Στην συνεχεια διαβαζεις της συντεταγμενες του πρωτου πυλωνα οποτε και αποθηκευεις στην θεση Α [ 0 ] [ 0 ]=1 (ο α/α που λεγαμε),στην θεση Α [ 0 ] [ 1 ] αποθηκευεις με scanf την x συντεταγμενη του πυλωνα,στην Α [ 0 ] [ 2 ] αποθηκευεις με scanf την y συντεταγμενη του πυλωνα(γραφεις κατι του στιλ scanf("%f",&A [ 0 ] [ 1 ]);).

Αυτο το κανεις για ολους του n πυλωνες που εχεις


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Avraam on April 17, 2010, 13:31:23 pm
Οκ συναδελφε...Χιλια ευχαριστω..!!!!!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: tzallas on April 17, 2010, 14:07:36 pm
εχω μια απορια ! χρησιμοποιω για compiler τον  dev και οταν αρχιζω με void main  μ βγαζει σφαλμα ! Οταν αρχιζω με int main απλα κλεινει ο  compiler ! μπορει καποιος να μ πει γτ γινεται αυτο ή τι πρεπει να κανς γ να τρεχει σωστα τ προγραμμα ? ? ? ελπιζω να καταλαωατε τι ρωτησα γτ δν τα ειπα και πολυ καλα !  :P


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 17, 2010, 14:21:14 pm
Γενικα αμα βαλεις void main βγαζει warning και οχι error (σε μενα τουλαχιστων),οποτε μπορεις να τρεξεις το προγραμμα κανονικα!
Επισης για να μην κλεισει το πραγραμμα στο τελος μπορεις να βαλεις να διαβαζει μια ακυρη μεταβλητη (ξερω μπακαλικο,αλλα αποτελεσματικο :P). π.χ. μπορεις στο τελος να γραψεις scanf("%d",&i); ή μπορεις να χρησιμοποιησεις ξερω γω την συναρτηση getch(),απο την βιβλιοθηκη conio.h


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: j@st_THM_me on April 17, 2010, 14:24:16 pm
int main(){

κωδικας


system("pause");

}


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: j@st_THM_me on April 17, 2010, 14:26:33 pm
και στην αρχη

#include<stdio.h>
#include<stdlib.h>



Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: tzallas on April 17, 2010, 14:30:17 pm
δηλαδη μπορω να τ αφισω με void παρολο π βγαζει το warning ? ? ?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: tzallas on April 17, 2010, 16:15:29 pm
oooooooooooooook ! τεσπα ευχαριστω για την βοηθεια παιδια ! ! !


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: ΚΗΜΜΥ on April 17, 2010, 19:16:24 pm
αμα βγαζει warning μπορει να τρεξει
με error δεν τρεχει


τι ειπα παλι... :D


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Arthuros on April 17, 2010, 20:56:07 pm
ευχαριστώ πολύ για την βοήθεια παιδιά!!!!!!  8))


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: kakashi on April 17, 2010, 21:07:08 pm
Για να βρούμε την απόσταση μεταξύ δύο πυλώνων δεν θα χρειαστούμε την τετραγωνική ρίζα( abs());Αυτή ειναι στην math.h?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: The Stig on April 17, 2010, 21:11:17 pm
Παιδιά μια μικρή βοήθεια αν μπορείτε γιατί κοντεύω να μπω σε ατέρμονη επανάληψη με αυτό το δίλημμα... Έγραψα τη δική μου εκδοχή για την εργασία η οποία δουλεύει κανονικά αλλά ανακάλυψα ότι υπάρχει ένα κενό. Θα το περιγράψω με ένα παράδειγμα γιατί αλλιώς δεν μπορώ. Αν οι πυλώνες είναι 3 αρχικά ελέγχει τον 1ο με τους άλλους 3 και επιλέγει την ελάχιστη απόσταση και σβήνει τον 1ο από τον Α με έναν άλλο πυλώνα από τον πίνακα Β (π.χ: τον 3ο). Αυτό σημαίνει ότι στις επόμενες φορές μένουν για σύγκριση μόνο ο 2ος και ο 3ος από τον Α και ο 1ος και 2ος από τον Β και αναγκαστικά θα πρέπει να ελεγχθεί η απόσταση μεταξύ αυτών των ζευγαριών. Το πρόβλημα είναι ότι μπορεί ο 3ος π.χ πυλώνας του Α να βρίσκεται σε πιο κοντινή απόσταση με τον 3ο του Β από ότι ο Α αλλά πλέον ο 3ος του Β έχει κλειδωθεί με τον 1ο του Α και δεν γίνεται να ενωθούν... Δηλαδή δεν ελέγχονται όλα με όλα...
Αν καταλάβατε μέχρι εδώ τότε θα μπορούσατε να μου πείτε γιατί πολύ απλά να μην κάνω το πρόγραμμα να ελέγχει όλες τις αποστάσεις με όλες. Αυτό συμβαίνει γιατί σκέφτηκα ότι αν το έκανα μπορεί μεν ο 3ος (Α) να πήγαινε με τον 3ο(Β) αλλά μετά ο 1ος που θα έμενε ελεύθερος (Α) μπορεί η απόστασή του από τους 2,1 (Β) να ήταν μεγαλύτερη από αυτήν που αρχικά είχε με τον 3ο(Β). Δηλαδή ο ένας τρόπος βελτιώνει έναν πυλώνα αλλά χαλάει έναν άλλο.
Συγγνώμη αν σας τρέλανα (μπορεί να είναι λάθος ο συλλογισμός) αλλά μήπως μπορείτε να μου πείτε ποιος τρόπος είναι πιο σωστός???


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: The Stig on April 17, 2010, 21:12:58 pm
Για να βρούμε την απόσταση μεταξύ δύο πυλώνων δεν θα χρειαστούμε την τετραγωνική ρίζα( abs());Αυτή ειναι στην math.h?
Η ρίζα είναι sqrt αλλά και πάλι δεν χρειάζεται γιατί αν ελέγξεις τα τετράγωνα τις απόστασης τότε το μικρότερο θα έχει και μικρότερη ρίζα... ;)


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: antaris on April 17, 2010, 21:44:10 pm
Το μεγεθός των πινάκων το υπολογίζουμε με malloc ή τον θέτουμε εμείς όταν τον ορίζουμε έμεις ας πούμε a[50][3]


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: ΚΗΜΜΥ on April 17, 2010, 22:08:02 pm
Tι εννοεις υπολογιζουμε?
Με μαλοκ δεσμευεις δυναμικα μνημη... κανατε απο τωρα?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: The Stig on April 17, 2010, 22:23:31 pm
Βασικά σχετικά με το πρόβλημα που προανέφερα σκέφτηκα να κάνω έναν πίνακα (ν*ν,2) ο οποίος θα έχει τις συγκρίσεις όλων με όλων και μετά από κατάλληλη ταξινόμηση να καταχωρήσω σε έναν άλλο πίνακα (ν,2) τις συνδέσεις με τις ελάχιστες δυνατές αποστάσεις για κάθε πυλώνα. Βέβαια αυτός ο τρόπος έχει το πρόβλημα ότι δεν συμβαδίζει με αυτό που λέει η εκφώνηση ότι πρέπει να διαγράφονται οι πυλώνες μετά από την σύνδεση... Τι προτείνετε???


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 17, 2010, 23:01:47 pm
Εχω σκευτει μια λυση για αυτο που λες,αλλα δεν ξερω αν ειναι η βελτιστη γιατι γενικα προϋποθετει πολλες συγκρισεις!Εχουμε και λεμε:

Συγκρινεις το 1ο στοιχειο του πινακα Α με καθε στοιχειο του πινακα Β,μετα το 2ο του Α με καθε το Β κ.ο.κ. Μολις εχει συγκριθει και το ν-οστο στοιχειο του Α με το ν-οστο στοιχειο του Β εχεις την ελαχιστη δυνατη αποσταση μεταξυ δυο πυλωνων.Αυτες τις τιμες αφαιρεις απο τους πινακες Α,Β και μετα επαναλαμβανεις την διαδικασια με ν-1 τωρα τιμες,μετα με ν-2 κ.ο.κ. Με αυτον τον τροπο θα εχεις σιγουρα τις ελαχιστες αποστασεις αλλα προυποθετει ν2+(ν-1)2+...+1 συγκρισεις......πολλες ε?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: The Stig on April 17, 2010, 23:37:30 pm
Μια χαρά είναι ο τρόπος που προτείνεις γιατί λύνει το πρόβλημα που υπάρχει και λαμβάνει υπόψη ότι λέει η εκφώνηση. Όσο για τις πολλές πράξεις ο επεξεργαστης θα τραβήξει το ζόρι. Θα ψάξω μήπως υπάρχει κάποιος με λιγότερη πολυπλοκότητα και αν όχι θα δοκιμάσω αυτόν. Ευχαριστώ!!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: The Stig on April 18, 2010, 01:24:01 am
Κάτι τελευταίο.. Έψαξα την λύση που πρότεινε ο il capitano και είδα ότι εξακολουθεί να έχει το πρόβλημα ότι βρίσκει την βέλτιστη απόσταση για τις αρχικές τιμές αλλά όσο περιορίζεται το εύρος τόσο χαλάει και η απόσταση... Θα ανεβάσω την αρχική μου λύση τελικά. Ευχαριστώ για την βοήθεια!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: rspappas on April 18, 2010, 04:04:47 am
Παιδιά μια μικρή βοήθεια αν μπορείτε γιατί κοντεύω να μπω σε ατέρμονη επανάληψη με αυτό το δίλημμα... Έγραψα τη δική μου εκδοχή για την εργασία η οποία δουλεύει κανονικά αλλά ανακάλυψα ότι υπάρχει ένα κενό. Θα το περιγράψω με ένα παράδειγμα γιατί αλλιώς δεν μπορώ. Αν οι πυλώνες είναι 3 αρχικά ελέγχει τον 1ο με τους άλλους 3 και επιλέγει την ελάχιστη απόσταση και σβήνει τον 1ο από τον Α με έναν άλλο πυλώνα από τον πίνακα Β (π.χ: τον 3ο). Αυτό σημαίνει ότι στις επόμενες φορές μένουν για σύγκριση μόνο ο 2ος και ο 3ος από τον Α και ο 1ος και 2ος από τον Β και αναγκαστικά θα πρέπει να ελεγχθεί η απόσταση μεταξύ αυτών των ζευγαριών. Το πρόβλημα είναι ότι μπορεί ο 3ος π.χ πυλώνας του Α να βρίσκεται σε πιο κοντινή απόσταση με τον 3ο του Β από ότι ο Α αλλά πλέον ο 3ος του Β έχει κλειδωθεί με τον 1ο του Α και δεν γίνεται να ενωθούν... Δηλαδή δεν ελέγχονται όλα με όλα...
Αν καταλάβατε μέχρι εδώ τότε θα μπορούσατε να μου πείτε γιατί πολύ απλά να μην κάνω το πρόγραμμα να ελέγχει όλες τις αποστάσεις με όλες. Αυτό συμβαίνει γιατί σκέφτηκα ότι αν το έκανα μπορεί μεν ο 3ος (Α) να πήγαινε με τον 3ο(Β) αλλά μετά ο 1ος που θα έμενε ελεύθερος (Α) μπορεί η απόστασή του από τους 2,1 (Β) να ήταν μεγαλύτερη από αυτήν που αρχικά είχε με τον 3ο(Β). Δηλαδή ο ένας τρόπος βελτιώνει έναν πυλώνα αλλά χαλάει έναν άλλο.
Συγγνώμη αν σας τρέλανα (μπορεί να είναι λάθος ο συλλογισμός) αλλά μήπως μπορείτε να μου πείτε ποιος τρόπος είναι πιο σωστός???
θεωρω οτι πρεπει να ελεγξεις ολες τις αποστασεις με 2 for, και ολο αυτο να το επαναλαβεις ν φορες με ενα αλλο for, αφου καθορισεις πρωτα καπως ποιοι πυλωνες εχουν ηδη "συζευχθει".


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Lampros on April 18, 2010, 12:09:26 pm
Δεν καταλαβαίνω γιατί πρέπει να βάλουμε στην αρχή μια τιμή στο Ν;Αφου πρέπει να την δώσει ο χρήστης και αφού με αυτή θα δουλέψουμε παρακάτω


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Emfanever on April 18, 2010, 12:14:12 pm
Επειδή λογικά δεν έχετε κάνει ακόμα δυναμική δέσμευση μνήμης, πρέπει να επιλέξεις από την αρχή το μέγεθος του πίνακα που θέλεις να φτιάξεις. Γιαυτό διαλέγεις μια μέγιστη τιμή για το Ν με βάση την οποία κατασκευάζεις τον πίνακα και μετά προσέχεις η τιμή που επιλέγει ο χρήστης να είναι μικρότερη από το μέγιστο ( προφανώς μερικές θέσεις του πίνακα θα μείνουν κενές).

αλλιώς μπορεί να γίνει υπερχείλιση του πίνακα και να " κρεμάσει " το πρόγραμμα


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Lampros on April 18, 2010, 12:39:23 pm
Πως κάνουμε έλεγχο για την μικρότερη απόσταση;For μέσα σε for...αλλά πως;


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Orfikoss on April 18, 2010, 13:49:57 pm
όπως βρίσκεις το ελάχιστο γενικά...


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Αιμιλία η φτερωτή χελώνα on April 18, 2010, 13:53:04 pm
ε βαζεις αρχικα σαν ελαχιστο το πρωτο στοιχειο, και ξεκινας την λουπα απο το 2ο στοιχειο και τα συγκρινεις ολα με αυτο
σιγα τα αυγα :P :P :P :P :P :P


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: provataki on April 18, 2010, 14:30:06 pm
ε βαζεις αρχικα σαν ελαχιστο το πρωτο στοιχειο, και ξεκινας την λουπα απο το 2ο στοιχειο και τα συγκρινεις ολα με αυτο
σιγα τα αυγα :P :P :P :P :P :P

και αμα κρασαρει ο κομπαιλερ παει να πει οτι σπασανε τα αυγά;


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: iason1907 on April 18, 2010, 14:47:42 pm
ε βαζεις αρχικα σαν ελαχιστο το πρωτο στοιχειο, και ξεκινας την λουπα απο το 2ο στοιχειο και τα συγκρινεις ολα με αυτο
σιγα τα αυγα :P :P :P :P :P :P

και αμα κρασαρει ο κομπαιλερ παει να πει οτι σπασανε τα αυγά;

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


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: png on April 18, 2010, 14:51:42 pm
ε βαζεις αρχικα σαν ελαχιστο το πρωτο στοιχειο, και ξεκινας την λουπα απο το 2ο στοιχειο και τα συγκρινεις ολα με αυτο
σιγα τα αυγα :P :P :P :P :P :P

και αμα κρασαρει ο κομπαιλερ παει να πει οτι σπασανε τα αυγά;

οχι ολα με το πρωτο σαν ελαχιστο.. το καλυτερο ειναι να βρεις το μεγιστο και να το θεσεις ελαχιστο.. ετσι παντα θα υπαρχει μικροτερη αποσταση εκτος απο την τελευταια φορα της λουπας
ναι αλλά έτσι ανεβαίνει η πολυπλοκότητα του αλγορίθμου.


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: iason1907 on April 18, 2010, 14:58:53 pm
ε βαζεις αρχικα σαν ελαχιστο το πρωτο στοιχειο, και ξεκινας την λουπα απο το 2ο στοιχειο και τα συγκρινεις ολα με αυτο
σιγα τα αυγα :P :P :P :P :P :P

και αμα κρασαρει ο κομπαιλερ παει να πει οτι σπασανε τα αυγά;

οχι ολα με το πρωτο σαν ελαχιστο.. το καλυτερο ειναι να βρεις το μεγιστο και να το θεσεις ελαχιστο.. ετσι παντα θα υπαρχει μικροτερη αποσταση εκτος απο την τελευταια φορα της λουπας
ναι αλλά έτσι ανεβαίνει η πολυπλοκότητα του αλγορίθμου.
ναι αλλα αλλιως κινδυνευεις να μην δουλεψει απο ενα σημειο και μετα, αν θα υπαρχουν μεγαλυτερες αποστασεις απο το στοιχειο 1,1.. τι προτιμας?? μια αναζητηση με το που υπολογιζεις τις αποστασεις και τελειωσες


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 18, 2010, 15:09:56 pm
ναι αλλα αλλιως κινδυνευεις να μην δουλεψει απο ενα σημειο και μετα, αν θα υπαρχουν μεγαλυτερες αποστασεις απο το στοιχειο 1,1.. τι προτιμας?? μια αναζητηση με το που υπολογιζεις τις αποστασεις και τελειωσες

γιατι να μην δουλεψει? αν το στοιχειο 1,1 ειναι ελαχιστο,στο τελος της λουπας θα αποθηκευτει ως ελαχιστο και θα αφαιρεθει απο την σχετικη "λιστα".Στην επομενη λουπα θα αποθηκευθει ως ελαχιστο το αμεσως επομενο πρωτο (το 2,2 στην προκυμενη περιπτωση)!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: iason1907 on April 18, 2010, 16:21:57 pm
ναι αλλα αλλιως κινδυνευεις να μην δουλεψει απο ενα σημειο και μετα, αν θα υπαρχουν μεγαλυτερες αποστασεις απο το στοιχειο 1,1.. τι προτιμας?? μια αναζητηση με το που υπολογιζεις τις αποστασεις και τελειωσες

γιατι να μην δουλεψει? αν το στοιχειο 1,1 ειναι ελαχιστο,στο τελος της λουπας θα αποθηκευτει ως ελαχιστο και θα αφαιρεθει απο την σχετικη "λιστα".Στην επομενη λουπα θα αποθηκευθει ως ελαχιστο το αμεσως επομενο πρωτο (το 2,2 στην προκυμενη περιπτωση)!
α... αλλο αυτο! εγω καταλαβα να βαλεις εκτος επαναληψης το 1,1 ελαχιστο.. οπου δεν θα δουλευει απο ενα σημειο και μετα!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: pepe on April 18, 2010, 17:37:08 pm
(Νομίζω ότι) τον έκανα καλά τον κώδικα, απλώς όταν το έτρεχα έκανα define στην αρχή το Ν, ενώ λέει η άσκηση ότι θα διαβάζει το Ν. Οπότε έχω μια απορία -μάλλον- νηπιακού επιπέδου: τι θα βάλω στη δήλωση των πινάκων, εφόσον δεν μπορώ να βάλω αυτό το Ν;


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 18, 2010, 17:58:37 pm
Θα πρεπει να χρησιμοποιησεις 2 διαφορετικα νι(εστω το Ν και το n).Το Ν θα ειναι ενας αριθμος ο οποιος θα λεει ποσες θεσεις θα εχουν οι πινακες Α,Β μαξιμουμ και θα οριζεται απο την αρχη στην δηλωση του πινακα (ολα αυτα γινονται γιατι δεν εχει διδαξει ακομα την δυναμικη δεσμευση μνημης aka malloc).Το n θα διαβαζεται απο το προγραμμα και θα ειναι ο αριθμος των πυλωνων που εχει η καθε εταιρια. Προφανως θα ειναι n<=N γιατι αλλιως θα εχουμε overloading καποιων στοιχειων και το προγραμμα δεν θα δουλευει σωστα!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: iason1907 on April 18, 2010, 18:05:07 pm
Θα πρεπει να χρησιμοποιησεις 2 διαφορετικα νι(εστω το Ν και το n).Το Ν θα ειναι ενας αριθμος ο οποιος θα λεει ποσες θεσεις θα εχουν οι πινακες Α,Β μαξιμουμ και θα οριζεται απο την αρχη στην δηλωση του πινακα (ολα αυτα γινονται γιατι δεν εχει διδαξει ακομα την δυναμικη δεσμευση μνημης aka malloc).Το n θα διαβαζεται απο το προγραμμα και θα ειναι ο αριθμος των πυλωνων που εχει η καθε εταιρια. Προφανως θα ειναι n<=N γιατι αλλιως θα εχουμε overloading καποιων στοιχειων και το προγραμμα δεν θα δουλευει σωστα!
δε μπορουμε να δηλωσουμε τον πινακα αφου διαβασουμε το Ν?  :???: :???:


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 18, 2010, 18:08:38 pm
ουχι.....πρεπει να δηλωσεις ολες τις μεταβλητες στην αρχη του προγραμματος (οποτε και τους πινακες).Αρα το Ν δεν θα ξερεις ποσο θα ειναι,οποτε δεν θα ξερει ποση μνημη να δεσμευσει ο γκομπαιλερ!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: iason1907 on April 18, 2010, 18:09:27 pm
ουχι.....πρεπει να δηλωσεις ολες τις μεταβλητες στην αρχη του προγραμματος (οποτε και τους πινακες).Αρα το Ν δεν θα ξερεις ποσο θα ειναι,οποτε δεν θα ξερει ποση μνημη να δεσμευσει ο γκομπαιλερ!
και το προγραμματακι μου πως τρεχει τοτε? εχει κατι το μαγικο ο δικος μου κομποιουτερ??  :-\


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: nikos912000 on April 18, 2010, 18:16:40 pm
Μπορεί κάποιος να με βοηθήσει?Έχω γράψει τον κώδικα...Από συντακτικής άποψης δεν υπάρχει πρόβλημα...Όταν τρέχω όμως το πρόγραμμα μου βγάζει ότι "Ο πυλώνας 0 της 1ης εταιρείας θα συνδεθεί με τον πυλώνα 1046543254(ένα τεράστιο νούμερο) της 2ης"...Αυτό το μήνυμα το δείχνει ν/2 φορές(όσες πρέπει δηλαδή)!Νομίζω ότι μέσα στις for δν έχω κάνει κάτι λάθος...Τι πρόβλημα μπορεί να υπάρχει?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: iason1907 on April 18, 2010, 18:20:30 pm
Μπορεί κάποιος να με βοηθήσει?Έχω γράψει τον κώδικα...Από συντακτικής άποψης δεν υπάρχει πρόβλημα...Όταν τρέχω όμως το πρόγραμμα μου βγάζει ότι "Ο πυλώνας 0 της 1ης εταιρείας θα συνδεθεί με τον πυλώνα 1046543254(ένα τεράστιο νούμερο) της 2ης"...Αυτό το μήνυμα το δείχνει ν/2 φορές(όσες πρέπει δηλαδή)!Νομίζω ότι μέσα στις for δν έχω κάνει κάτι λάθος...Τι πρόβλημα μπορεί να υπάρχει?
εκει που γινεται η αντιστοιχηση (σε πινακα λογικα) για τους πυλωνες, μαλλον το κανεις με μια if η οποια δεν ικανοποιει ποτε τις συνθηκες που εχει αρα ο πινακας με τα αποτελεσματα σου δεν παιρνει ποτε τιμη


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: nikos912000 on April 18, 2010, 18:53:08 pm
Thanx...Αν και έχω ελέγξει τις συνθήκες... :???:Μάλλον θα την παραδώσω έτσι όπως την έχω γτ έχω σπάσει το κεφάλι μ και δε βρίσκω τι φταίει!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 18, 2010, 19:14:06 pm
μηπως μεσα στις scanf εχεις ξεχασει να βαλεις το & πριν απο τις μεταβλητες??

δηλαδη μηπως εχεις γραψει scanf("%d",n); αντι για scanf("%d",&n); που ειναι το σωστο!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: png on April 18, 2010, 19:32:52 pm
σος αρχικοποίηση.
εχω καραμπλεχτεί.
που σκατά θέτω dmin κάθε φορά?
μέσα στο πρώτο βρόχο?
μέσα και στο δεύτερο?

Ας δωσει κάποιος έναν κώδικα βοηθείας.
Τα άλλα τα έχω κομπλέ.


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Argirios on April 18, 2010, 19:37:01 pm
Εμένα μου βγάζει ένα error "B7358 has caused a stack fault in module Β7358.exe.." δε θυμάμαι μετά. Συμβαίνει μόνο αν βάλω μεγάλους σε μέγεθος πίνακες! Και ακόμα ένα που μου βγάζει "B7358 has caused a general protection fault in module Β7358.exe...". Το δεύτερο μου το βγάζει πάντα. Και τα δύο τα βγάζει στο run και όχι στο compile, το compile γίνετε success. :???: Καμιά ιδέα κανείς?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: iason1907 on April 18, 2010, 19:38:27 pm
@png
εμενα ο τροπος του καπιτανο δεν μου αρεσει για την περιπτωση που ισαπεχουν! παντως ετσι οπως το λεει θα το θεσεις στο τελος της for.. αφου εχεις βγει απο τον ελεγχο για την ελαχιστη αποσταση


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: png on April 18, 2010, 19:41:52 pm
Εμένα μου βγάζει ένα error "B7358 has caused a stack fault in module Β7358.exe.." δε θυμάμαι μετά. Συμβαίνει μόνο αν βάλω μεγάλους σε μέγεθος πίνακες! Και ακόμα ένα που μου βγάζει "B7358 has caused a general protection fault in module Β7358.exe...". Το δεύτερο μου το βγάζει πάντα. Και τα δύο τα βγάζει στο run και όχι στο compile, το compile γίνετε success. :???: Καμιά ιδέα κανείς?

μήπως stack overflow, και πρέπει να βάλεις long/double τις μεταβλητές?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Argirios on April 18, 2010, 19:44:50 pm
Εμένα μου βγάζει ένα error "B7358 has caused a stack fault in module Β7358.exe.." δε θυμάμαι μετά. Συμβαίνει μόνο αν βάλω μεγάλους σε μέγεθος πίνακες! Και ακόμα ένα που μου βγάζει "B7358 has caused a general protection fault in module Β7358.exe...". Το δεύτερο μου το βγάζει πάντα. Και τα δύο τα βγάζει στο run και όχι στο compile, το compile γίνετε success. :???: Καμιά ιδέα κανείς?

μήπως stack overflow, και πρέπει να βάλεις long/double τις μεταβλητές?

δίκιο έχεις, θένχ ;)


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Argirios on April 18, 2010, 21:14:26 pm
πώς μπορώ να βάλω έναν double να είναι long και πώς τον εμφανίζω? δλδ τί γράφω μετά το %


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: nohponex on April 18, 2010, 21:30:10 pm
Πω θα χαζέψω με αυτό το πρόβλημα δεν αντέχω... έχω κάνει 2 λύσεις μια λύση για Ν = 5 μου βγάζει συνολική απόσταση σύνδεσης  574.88 και για τα ίδια σημεία η άλλη μου λύση 590  (με 24 κ 15 συγκρίσεις αντίστοιχά το καθένα) , ενώ όταν το έκανα σε σχήμα διαλέγοντας μόνος μου τα ζεύγη η συνολική απόσταση ήταν μόλις 500.15....>:(  >:(

Αν έχει κανείς όρεξη να συγκρίνει αποτελέσματα για τα ίδια τυχαία  σημεία που χρησιμοποίησα , για να δω αν είναι να βρω κάτι καλύτερο ..
A
{43,15} {432,321} {32,45} {54,65} {87,32}
B
{76,32} {21,43} {65,43} {32,54} {54,67}


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: evelin on April 18, 2010, 22:11:37 pm
μεχρι τι ωρα μπορουμε να την ανεβασουμε;


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Emfanever on April 18, 2010, 22:18:03 pm
ουχι.....πρεπει να δηλωσεις ολες τις μεταβλητες στην αρχη του προγραμματος (οποτε και τους πινακες).Αρα το Ν δεν θα ξερεις ποσο θα ειναι,οποτε δεν θα ξερει ποση μνημη να δεσμευσει ο γκομπαιλερ!
και το προγραμματακι μου πως τρεχει τοτε? εχει κατι το μαγικο ο δικος μου κομποιουτερ??  :-\

Στην έκδοση C 99 μπορείς πλέον να δηλώνεις οπουδήποτε μέσα στο πρόγραμμα μια μεταβλητή. Σε παλαιότερες εκδόσεις δεν γινόταν αυτό και η δήλωση έπρεπε οπωσδήποτε να είναι στην αρχή του προγράμματος.

Ο Dev ++ για παράδειγμα, χρησιμοποιεί την έκδοση C 99 και μπορείς να το κάνεις αυτό.
Ο Κορτέσης μάλλον έχει μείνει σε παλαιότερες εκδόσεις

http://en.wikipedia.org/wiki/C99


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Μάρω on April 18, 2010, 22:30:49 pm
μεχρι τι ωρα μπορουμε να την ανεβασουμε;

βασικά λέει μέχρι 19/4, οπότε μέχρι αύριο στις 00:00? :P


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: evelin on April 18, 2010, 22:56:49 pm
standard?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Argirios on April 18, 2010, 22:59:46 pm
δουλευέι σε κανέναν το ετημμυ? >:(


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Μάρω on April 18, 2010, 23:01:23 pm
standard?
δουλευέι σε κανέναν το ετημμυ? >:(

ναι.ναι.


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: evelin on April 18, 2010, 23:06:10 pm
δουλευέι σε κανέναν το ετημμυ? >:(
και απο μενα ενα ναι.


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: evelin on April 18, 2010, 23:06:43 pm
standard?
δουλευέι σε κανέναν το ετημμυ? >:(

ναι.ναι.
Ευχαριστω!


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: st0up on April 18, 2010, 23:10:22 pm
C ovredose χωρις κανενα αποτελεσμα... Υπεροχα!!!  :-[


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: st0up on April 19, 2010, 13:43:23 pm
Στειλτον αν θελεις να στον κανω compile :)

Ρε παιδια... εχω κολλησει στο εξης σημειο: αφου βρω την πρωτη ελαχιστη αποσταση, πως ξερω ποιοι ειναι αυτοι οι 2 πυλωνες που αντιπροσωπευουν την ελαχιστη αποσταση? Ωστε μετα να τους αποθηκευσω, να τους αφαιρεσω απο τους πινακες και στο τελος να τουσ εμφανισω? Καταλαβαινετε τι εννοω ή τα λεω οπως να'ναι?? :-\


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Μάρω on April 19, 2010, 13:45:43 pm
Στειλτον αν θελεις να στον κανω compile :)

Ρε παιδια... εχω κολλησει στο εξης σημειο: αφου βρω την πρωτη ελαχιστη αποσταση, πως ξερω ποιοι ειναι αυτοι οι 2 πυλωνες που αντιπροσωπευουν την ελαχιστη αποσταση? Ωστε μετα να τους αποθηκευσω, να τους αφαιρεσω απο τους πινακες και στο τελος να τουσ εμφανισω? Καταλαβαινετε τι εννοω ή τα λεω οπως να'ναι?? :-\

Χρησιμοποιείς δύο παράλληλους σ' αυτούς που ήδη έχεις κάνει πίνακες (έναν για την κάθε εταιρία) στους οποίους θα αποθηκεύσεις τον αύξοντα αριθμό των πυλώνων...

ε εναλλακτικά μπορείς να κάνεις τους πίνακες σου Νx3 (μία στήλη για το χ, μία για το y και μία για τον αύξοντα αριθμό)  8))


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: st0up on April 19, 2010, 13:56:47 pm
Νx3 τους εκανα τους πινακες...
Και εστω οτι εχω βρει ποια ειναι η 1η μικροτερη αποσταση... πως θα αποθηκευσω αυτους τους 2 αυξοντες αριθμους των πυλωνων? Κολλαω σε κατι γελοιο μηπως? Οτι κολλαω, κολλαω παντως!  :???:


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Μάρω on April 19, 2010, 13:59:55 pm
Νx3 τους εκανα τους πινακες...
Και εστω οτι εχω βρει ποια ειναι η 1η μικροτερη αποσταση... πως θα αποθηκευσω αυτους τους 2 αυξοντες αριθμους των πυλωνων? Κολλαω σε κατι γελοιο μηπως? Οτι κολλαω, κολλαω παντως!  :???:

δε θα τους αποθηκεύσεις κάπου... απλά θα τους εκτυπώσεις (αυτό ζητάει το πρόγραμμα) κ στη συνέχεια στη θέση του αύξοντα αριθμού τους θα βάζεις μια τιμή μεγαλύτερη του Ν (διάσταση πίνακα). Οπότε στις επόμενες συγκρίσεις, θα κάνεις το σχετικό έλεγχο...


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: st0up on April 19, 2010, 14:24:23 pm
ααααααα!!! Εγω σκεφτομουν να τους αποθηκευσω σε πινακα Νx2 (Ν οι γραμμες των ζευγων και 1 στηλη για καθε αυξοντα αριθμο) και μετα να εκπτυπωσω τον πινακα! Αλλα ετσι οπως το ειπες τωρα φαινεται πιο ευκολο νομιζω! ΘΕΝΞ!!!!  :D


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: st0up on April 19, 2010, 15:18:14 pm
Μπορει καποιος να μου πει τι προβλημα υπαρχει εδω? Μου κλεινει το παραθυρο εκτελεσης! και οταν χρησιμοποιω την system("pause"); κολλαει ολο!

Code:
min_distance=sqrt( (A[0][1]-B[0][1])*(A[0][1]-B[0][1])+(A[0][2]-B[0][2])*(A[0][2]-B[0][2]) ); //Arxikopoihsh ths metavlhths
                                                                                                    //opou apo8hkeuetai h elaxisth apostash
      for (k=0; k<N; k++){                                                                                     
         for (i=0;i<size_of_A;i++){             //Sto shmeio auto upologizetai h apostash ka8e pylwna ths A apo ka8e pylwna ths B
             for (j=0;j<size_of_B;j++){       
                 dst=sqrt( (A[i][1]-B[j][1])*(A[i][1]-B[j][1])+(A[i][2]-B[j][2])*(A[i][2]-B[j][2]) ); //upologismos apostashs
                 
                 if (dst<min_distance){
                     min_distance=dst;
                     l=i;
                     m=j;
                     } } }
                     A[l][0]=N+1;
                     B[m][0]=N+1;
 
                     printf ("Oi %doi pylwnes pou 8a synde8oun metaksy toys einai o %d kai o %d\n", counter, i+1, j+1);     
                     counter++;
                     }
                     }


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Argirios on April 19, 2010, 17:58:29 pm
το size_of_A και Β τί ακριβώς είναι?


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: st0up on April 19, 2010, 18:37:56 pm
Ο αριθμος των πυλωνων καθε εταιριας, αρα ο αριθμος γραμμων του πινακα της εταιριας Α και Β αντιστοιχα


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Lampros on April 19, 2010, 19:33:39 pm
Αν δεν δώσω την εργασία τι γίνεται;


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: ΚΗΜΜΥ on April 19, 2010, 19:37:55 pm
Aν δεν δωσεις μια δεν γινεται κατι... (ετσι ειπε ο Κορτεσης στο προηγουμενο εξαμηνο)
Αν δεν δωσεις δυο αρχιζει να ανεβαινει η βαση ;)


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Lampros on April 19, 2010, 19:43:59 pm
Εντάξει,γιατί δεν την έκανα την εργασία και δεν θέλω να την αντιγράψω απο κάποιον


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: ΚΗΜΜΥ on April 19, 2010, 19:48:55 pm
ανεβασε αν μπορεις τουλαχιστον κατι κουτσουρεμενο...


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Lampros on April 19, 2010, 19:53:38 pm
Δεν μπορώ...


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Argirios on April 19, 2010, 19:55:09 pm
εγώ δεν έχω καταλάβει κάτι, τις βαθμολογούν τις εργασίες? πχ αν δε δουλεύει εντελώς σωστα πέρνουμε 0 ή κοιτάνε τον κώδικα? :P

Δεν μπορώ...
διάβασε τις σημειώσεις που έχει στο ετημμυ κεγώ αυτές διάβασα


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: il capitano on April 19, 2010, 19:59:25 pm
οχι ακριβως......τις κοιταει λιγο,και επισης σε εξεταζει στο τελος.Αν κατι απο τα 2 η και τα 2 δεν ειναι και τοσο καλο γραφεις στις εξετασεις με βαση το 6.


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: Argirios on April 19, 2010, 20:01:12 pm
Μπορει καποιος να μου πει τι προβλημα υπαρχει εδω? Μου κλεινει το παραθυρο εκτελεσης! και οταν χρησιμοποιω την system("pause"); κολλαει ολο!

Code:
min_distance=sqrt( (A[0][1]-B[0][1])*(A[0][1]-B[0][1])+(A[0][2]-B[0][2])*(A[0][2]-B[0][2]) ); //Arxikopoihsh ths metavlhths
                                                                                                    //opou apo8hkeuetai h elaxisth apostash
      for (k=0; k<N; k++){                                                                                      
         for (i=0;i<size_of_A;i++){             //Sto shmeio auto upologizetai h apostash ka8e pylwna ths A apo ka8e pylwna ths B
             for (j=0;j<size_of_B;j++){        
                 dst=sqrt( (A[i][1]-B[j][1])*(A[i][1]-B[j][1])+(A[i][2]-B[j][2])*(A[i][2]-B[j][2]) ); //upologismos apostashs
                
                 if (dst<min_distance){
                     min_distance=dst;
                     l=i;
                     m=j;
                     } } }
                     A[l][0]=N+1;
                     B[m][0]=N+1;
 
                     printf ("Oi %doi pylwnes pou 8a synde8oun metaksy toys einai o %d kai o %d\n", counter, i+1, j+1);    
                     counter++;
                     }
                     }

σεμένα κανονικά τρέχει, μάλον το λάθος σου είναι πιό πριν


Title: Re: [Δομημένος Πρ.] Εργασία Β 09/10
Post by: st0up on April 19, 2010, 20:53:33 pm
Ok, ευχαριστω πολυ!  :) :)