THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: princess on April 10, 2006, 16:13:43 pm



Title: Απορία για πίνακες!!
Post by: princess on April 10, 2006, 16:13:43 pm
Λοιπόν, για την εργασία Β ήθελα να ρωτήσω κι εγώ...
 :) :)

Εχουμε 2 διαφορετικούς πίνακες. Θέλουμε ένα πρόγραμμα που να δημιουργεί καινούριο πίνακα με τα κοινά

στοιχεία των παραπάνω. ΠΩΣ?? ;) ;) μπορούμε να το κάνουμε αυτό?? Καμιά ιδέα???


---

edit: Να βαζετε πιο κατατοπιστικους τιτλους!!!


Title: Re: Απορία!!
Post by: Themis on April 10, 2006, 16:52:48 pm
κανε δυο for,τη μια μεσα στην αλλη...και αποθηκευεσε τα κοινα στοιχεια στον over...


Title: Re: Απορία!!
Post by: princess on April 10, 2006, 17:00:09 pm


Δηλαδή??? ;) ;) Δεν κατάλαβα καλά τι προσπαθείς να πεις!!!


Title: Re: Απορία!!
Post by: Themis on April 10, 2006, 17:15:42 pm
                g=0;
   for (e=1;e<=n;e++)
   {   
      for (j=1;j<=m;j++)
      {   
         if (A[e-1]==B[j-1])
         {
            over[g]=A[e-1];
            g++;
         }
      }
      
   }
αφου φυσικα εχεις διαβασει τους πινακες Α,Β


Title: Re: Απορία!!
Post by: princess on April 10, 2006, 17:48:07 pm

if (A[e-1]==B[j-1])

Aυτή η συνθήκη όμως δε σημαίνει ότι ζητάω οι 2 πίνακες να είναι ίδιοι?? Η κάνω λάθος?

Αν γράψω δηλαδή το παραπάνω, εξετάζονται τα στοιχεία του πίνακα ένα ένα, και όχι ολόκληρος ο πίνακας?? ::) ::)


Title: Re: Απορία!!
Post by: Themis on April 10, 2006, 17:59:06 pm
Περσι ησουν θετικη,ε?...Ναι ελεγχει ενα ενα τα στοιχεια των δυο πινακων...


Title: Re: Απορία!!
Post by: princess on April 10, 2006, 18:02:50 pm


Ναι, ήμουν στη θετική!! ::) ::)


Title: Re: Απορία!!
Post by: princess on April 10, 2006, 18:11:18 pm

Για τα στοιχεία των πινάκων που δεν είναι ίδια, τι μπορούμε να κάνουμε??

Υπάρχει η έννοια του διάφορου =/ στη C?? Mε ποιο συμβολισμό?? ::) ::)



Title: Re: Απορία!!
Post by: Themis on April 10, 2006, 18:21:46 pm
δεν γινεται με το διαφορο...πρεπει να φυγω τωρα οως και η λυση ειναι λιγο πιο συνθετη και δεν προλαβαινω να σου την εξηγησω...


Title: Re: Απορία!!
Post by: princess on April 10, 2006, 18:26:54 pm

Thanks!!! Για τις συμβουλές πάντως!!! Σαν να αρχίζουν να ξεκαθαρίζουν τα πράγματα ;) ;) ;)


Title: Re: Απορία!!
Post by: Appelsinpiken on April 10, 2006, 20:52:12 pm
               for (e=1;e<=n;e++)
   {   
      for (j=1;j<=m;j++)
      {   
         
Μια συμβουλή πριγκίπισσα, αν και λεπτομέρεια:
στην ανισότητα από το παραπάνω for ΔΕΝ πρέπει να βάλεις ισότητα και αρχικές τιμές για το e και j αντίστοιχα πρέπει να είναι το 0 !!!!


Title: Re: Απορία!!
Post by: Themis on April 11, 2006, 02:44:22 am
e=1 αρχικα και A[e-1] αν προσεχες...και η ισοτητα χρειαζεται...


Title: Re: Απορία!!
Post by: princess on April 11, 2006, 10:05:00 am


Kαλά, ένα ίσον είναι αυτό όλο κι όλο..., δε θα τα χαλάσουμε εκεί πέρα...!!! :D :D

Για τα στοιχεία των πινάκων που δεν είναι ίδια, έχει κανείς καμιά ιδέα??? ::) ::)


Title: Re: Απορία!!
Post by: Faidon on April 11, 2006, 12:22:21 pm
e=1 αρχικα και A[e-1] αν προσεχες...και η ισοτητα χρειαζεται...

Συγνώμη κιόλας ballin αλλά η λύση που πρότεινε η Χριστίνα:

   g=0;
   for (e=0;e<n;e++)
   {   
      for (j=0;j<m;j++)
      {   
         if (A[e]==B[j])
         {
            over[g]=A[e];
            g++;
         }
      } 
   }

Είναι προφανώς πιο οικονομική και είναι αυτή που συνήθως χρησιμοποιείται...

Για τα στοιχεία των πινάκων που δεν είναι ίδια, έχει κανείς καμιά ιδέα??? ::) ::)

Θα έχεις μία μεταβλητή (π.χ t) που θα της δίνεις την τιμή 0 πριν το 2ο for. Αν στο δεύτερο for τρέξει το if (εντοπίσει ότι η συχνότητα είναι κοινή) τότε θα δίνεις στην t την τιμή 1. Τότε μόλις τελιώσει το δεύτερο for θα κάνεις τον έλεγχο: Αν t=0 (η συχνότητα του Α ήταν διαφορετική από όλες του Β) τότε θα προσθέτεις αυτή τη συχνότητα στον no_free.

Υ.Γ. princess, έχει ήδη ανοίξει topic (Εργασία vol B 2006) για την εργασία Β. Γιατί δε στέλνεις εκεί τα μηνύματά σου;


Title: Re: Απορία!!
Post by: princess on April 11, 2006, 12:59:09 pm

Yπάρχει και ο τελεστής  !=  (όχι ίσο)

Δεν μπορούμε να χρησιμοποιήσουμε αυτόν???


Title: Re: Απορία για πίνακες!!
Post by: Faidon on April 11, 2006, 15:25:52 pm
Δε συμφέρει... Θα πρέπει η A[ι] συχνότητα να είναι διαφορετική από κάθε B[j] συχνότητα και αυτό υλοποιείται πιο εύκολα έτσι όπως σου είπα πριν. Δηλαδή αν τύχει η Α[ι] να είναι ίδια με μία B[j] τότε αλλάζεις τιμή σε μία μεταβλητή από 0 σε 1 ώστε να ξέρεις ότι η αναζήτησή σου είχε ως αποτέλεσμα να βρεθεί η συχνότητα A[ι] στον πίνακα B[j] και έτσι να μην την συμπεριλάβεις στον πίνακα no_free[].

Υ.Γ. Οι απορίες σου εξακολουθούν να έχουν θέμα γενικά την Εργασία Β...