Εισαγωγή στον Προγραμματισμό (Εργαστήριο)

Παρακολουθώ όλα τα μαθήματα.

Συντονιστές: markelos, Ryu, φιάλη klein, meleneemil

Απάντηση
Άβαταρ μέλους
spartiatisgx
Δημοσιεύσεις: 310
Εγγραφή: Τετ Νοέμ 14, 2007 9:07 pm
Τοποθεσία: ilisia,athens

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από spartiatisgx »

ty....na eisai kala.....

eimai aderfos tis thalias btw!!
Τελευταία επεξεργασία από το μέλος pao132003 την Σάβ Σεπ 13, 2008 11:26 pm, έχει επεξεργασθεί 1 φορά συνολικά.
Λόγος: συγχώνευση δημοσιεύσεων
thalia
Δημοσιεύσεις: 109
Εγγραφή: Τρί Ιουν 10, 2008 12:29 pm
Real Name: Θάλεια
Gender: Female
Facebook ID: 0

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από thalia »

ΘΕΜΑ 1/ΣΕΠ 2006

Ο Locknload δίνει το εξής:

Κώδικας: Επιλογή όλων

public static void printMax2(int[] a){
        int max1=a[0];
        int pos1=0;
        for (int i=1; i<a.length; i++){
            if (max1<a[i]){
                max1=a[i];
                pos1=i;}}
        int max2=a[a.length-pos1];
        int pos2=a.length-pos1;
        for (int i=0; i<a.length; i++){
            if (max2<a[i] && i!=pos1){
                max2=a[i];
                pos2=i;}}
        System.out.println("Ο μεγαλυτερος ειναι ο "+max1+" στη θεση "+pos1+" και ο 2ος μεγαλυτερος "+max2+"στη θεση "+pos2);}

Αυτό που με προβληματίζει είναι οτι στο σημείο που δηλώνουμε την int max2=a[a.length-pos1],τα a.length και pos1 είναι αριθμοί και γίνεται αφαίρεση.
Για να γίνω πιο σαφής:ας πούμε οτι max1=a[4] άρα pos1=4 και οτι a.length=10. Οταν γράφουμε max2=a[a.length-pos1],εννοούμε max2=a[6] και οχι οτι η max2 ισούται με οτιδήποτε άλλο εκτός από την την τιμή του a[4].
Βγάζετε νόημα ή έχω χάσει την μπάλα;
Άβαταρ μέλους
LocknLoad
Forum Administrator
Forum Administrator
Δημοσιεύσεις: 2250
Εγγραφή: Κυρ Οκτ 07, 2007 5:34 pm

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από LocknLoad »

Αν ο μεγαλυτερος ειναι στην 4 θεση τοτε θα μπει ο αριθμος 10-4=6. Αυτο ομως ειναι τυχαιο. Οπου και να ηταν ο μεγαλυτερος το a.length-pos1 θα εδινε αλλη θεση απο αυτην.

Ηθελα ενα τυχαιο σημειο για να αρχικοποιησω το max2. Θα μπορουσες να κανεις οτιδηποτε θελεις εκει. Εγω προτιμησα αυτο.

θα μπορουσες να κανεις κατι σαν

Κώδικας: Επιλογή όλων

int max2= (εδω ενας αριθμος που πιστευεις οτι θα ηταν μικροτερος απο οποιονδηποτε αριθμο στον πινακα)
int pos2= -1;
for (int i=0; i<a.length; i++)
{
    if (max2<a[i] && i!=pos1)<==(εδω το i!=pos1 θα φροντιζε και παλι να μην παρει την τιμη του max1)
    {
        max2=a[i];
        pos2=i;
    }
}
Ναι, [you] σε παρακολουθώ!

Εικόνα


@[you]
Εικόνα
Άβαταρ μέλους
spartiatisgx
Δημοσιεύσεις: 310
Εγγραφή: Τετ Νοέμ 14, 2007 9:07 pm
Τοποθεσία: ilisia,athens

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από spartiatisgx »

nai alla ean exeis enan pinaka me 4 stoixeia kai to max1 einai to trito stoixeio apo aristera tote a.length=4 kai to max1=a[2] kai pos1=2.....omos tote to max2=a[a.length-pos1]=a[4-2]=a[2]=max 1!!!
kai tote ti kanoume?
mou fainetai oti den tha doulepsei to 4loop gia to max 2...ty pantos gia ola....eisai poli ipomonetikos me tous noobades!!
thalia
Δημοσιεύσεις: 109
Εγγραφή: Τρί Ιουν 10, 2008 12:29 pm
Real Name: Θάλεια
Gender: Female
Facebook ID: 0

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από thalia »

Καλημέρα σε όλους!
Locknload το εψαξα λίγο αυτό που μου είπες και με δοκιμές στο BlueJ είδα τα εξής:
1.Δίνω π.χ τον {9,8,4,5},οπότε max1=α[0].Χτυπάει ότι για το max2=a[a.length-pos1] είναι εκτός από τα όρια του διανύσματος!!!Λογικό αφού 4-0=4 και α[4] δεν υπάρχει.....
2.Δοκίμασα αυτό που γράφει ο spartiatisgx και έχει δίκιο.Π.χ στο {1,2,9,5} μου βγάζει max1=9 pos1=2 και max2=9 pos2=2
3.Δοκίμασα και αυτό που μου είπες για το pos2=-1.
α) Αν πέσουμε στην περίπτωση που λέει ο spartiatisgx, π.χ
{1,2,9,5},τυπώνει max1=9 pos1=2 και max2=9 pos2=-1
β) Αν πάλι το max1=α[0], τότε πάλι χτυπάει ότι για το max2=a[a.length-pos1] είναι εκτός από τα όρια του διανύσματος!!!

Νομίζω οτι αυτές οι δύο περιπτώσεις είναι που δυσκολεύουν την κατάσταση
Επειδή τώρα μπαίνω στο νόημα και το δεν έχω το άθλημα θα δοκιμάσω διάφορα και θα δούμε...
Άβαταρ μέλους
congi
Δημοσιεύσεις: 290
Εγγραφή: Πέμ Νοέμ 22, 2007 6:29 pm
Real Name: CG
Gender: Male

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από congi »

Ανέβασα τις λύσεις για JAva1
1)29/9/2006 (Επαναληπτική 2006)
2)19/10/2007 (Κανονική 2007)

Υ.Γ. Οι επαναληπτική 2007 είναι το ίδιο αρχείο με κανονική 2007.
Άβαταρ μέλους
LocknLoad
Forum Administrator
Forum Administrator
Δημοσιεύσεις: 2250
Εγγραφή: Κυρ Οκτ 07, 2007 5:34 pm

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από LocknLoad »

@Thalia & spartiatisgx. Ουπς!

Ναι, ειναι λαθος. Στην 2η περιπτωση που προτεινα με το -1 δεν θα βαλεις max2=a[a.length-pos1]. Θα βαλεις max2= -100 (για παραδειγμα). Η καποιον μικρο αριθμο (που πιστευεις οτι ειναι μικροτερος απο τους περισσοτερους, αν οχι ολους, τους αριθμους στον πινανκα. Δλδ αν σου δεινει ενα διανυσμα με θετικους ακεραιους, αρκει να πεις max2=-1;

Αντιστοιχα για min. Τοτε θα εβαζες εναν μεγαλο αριθμο.
ty pantos gia ola....eisai poli ipomonetikos me tous noobades!!
Ολοι ημασταν καποτε. :wink:
Ναι, [you] σε παρακολουθώ!

Εικόνα


@[you]
Εικόνα
thalia
Δημοσιεύσεις: 109
Εγγραφή: Τρί Ιουν 10, 2008 12:29 pm
Real Name: Θάλεια
Gender: Female
Facebook ID: 0

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από thalia »

Γιούπι!!!Τρέχει το πρόγραμμα.....Σωστό αυτό που λες για το min και max,δίνει τον τρόπο σκέψης :idea:
thalia
Δημοσιεύσεις: 109
Εγγραφή: Τρί Ιουν 10, 2008 12:29 pm
Real Name: Θάλεια
Gender: Female
Facebook ID: 0

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από thalia »

ΘΕΜΑ 4/ΦΛΕΒ 08

Κώδικας: Επιλογή όλων


    public static int BinΤoDec(String bin){
        int dec=0;
        int p;
        for(int i=0; i<bin.length(); i++){
            if(bin.charAt(i)=='1'){
               if(i==0)
                  dec+=1;
               else
                  {p=1; 
                   for (int j=1; j<=i; j++)
                        p=p*2;
                   dec+=p;}}}
        return dec;}
Το έτρεξα στο BlueJ και με μερικές δοκιμές είδα οτι όταν υπάρχει 0,το αποτέλεσμα είναι ΛΑΘΟΣ!!!
π.χ "100"=4 ενώ μου βγάζει 1.
"1101"=13 ενώ μου βγάζει 11
Το ψάχνω.....
Άβαταρ μέλους
congi
Δημοσιεύσεις: 290
Εγγραφή: Πέμ Νοέμ 22, 2007 6:29 pm
Real Name: CG
Gender: Male

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από congi »

Έχω δύο άποριες αν μπορεί κάποιος να μου τις απαντήσει...
1)Όταν έχω μονοδιάστατο πίνακα α[] για το μέγεθος του παίρνω παίρνω α.length. Όταν έχω δισδιάστατο α[μ][μ] πάιρνω πάλι α.length. Όταν έχω δισδιαστατο α[μ][ν] τι παίρνω? (Για να διευκρυνίσω ποια εντόλη παίρνω )
2)Ποια πακέτα χρειάζονται import ή καλύτερα ποιο δεν χρειάζεται..

Ευχαριστώ εκ των προτέρων
Τελευταία επεξεργασία από το μέλος congi την Κυρ Σεπ 14, 2008 9:47 pm, έχει επεξεργασθεί 1 φορά συνολικά.
thalia
Δημοσιεύσεις: 109
Εγγραφή: Τρί Ιουν 10, 2008 12:29 pm
Real Name: Θάλεια
Gender: Female
Facebook ID: 0

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από thalia »

Congi,
1. Στις σελίδες 4,5 αυτού του topic o Wizard εχει εξηγήσει τι γίνεται με τα διανύσματα.Τα λέει super.
2.Για το Import που θες συμβαίνει το εξής : Ο,τι βρίσκεται μέσα στην βιβλιοθήκη java.lang δεν θέλει import.H κλάση Random όμως ΘΕΜΑ 4/ΣΕΠ 05 την οποία ζητάει ο Συμβώνης, αν δεις σου λέει οτι ανήκει στο πακέτο java.util.Αυτό θέλει import αφου δεν βρίσκεται στην java.lang
Άβαταρ μέλους
congi
Δημοσιεύσεις: 290
Εγγραφή: Πέμ Νοέμ 22, 2007 6:29 pm
Real Name: CG
Gender: Male

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από congi »

Ευχαριστώ thalia
Άβαταρ μέλους
LocknLoad
Forum Administrator
Forum Administrator
Δημοσιεύσεις: 2250
Εγγραφή: Κυρ Οκτ 07, 2007 5:34 pm

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από LocknLoad »

@ Thalia.

Αυτο το δεν το ειχα διαβασει και δεν θυμομουν πως να το λυσω. Η λυση που βλεπεις ειναι κατι που σκεφτηκα εκεινη την στιγμη. Δουλευει (απ'οτι ειδα τωρα!) αν βαλεις το bin αναποδα (πχ 01 = 2)

το σωστο ειναι απο τα εργαστηρια:

Κώδικας: Επιλογή όλων

    public static long bin2Dec(String binary)
    {
        int bash=2;
        long dec=0;
        int position=binary.length()-1;
        int ekthetis=0;
        int suntelestis=0;
        while(position >= 0)
        {
            if (binary.charAt(position)=='1')
                suntelestis=1;
            else 
                suntelestis=0;
            dec += (long) (suntelestis * Math.pow(bash,ekthetis));
            position--;
            ekthetis++;
        }
        return dec;
    }//bin2Dec

@ Congi. a.length Αν ειναι ορθογωνιος το αφηνεις εκει, αλλιως πρεπει να παρεις για καθε i ξεχωριστα.
Τελευταία επεξεργασία από το μέλος LocknLoad την Κυρ Σεπ 14, 2008 11:24 pm, έχει επεξεργασθεί 1 φορά συνολικά.
Ναι, [you] σε παρακολουθώ!

Εικόνα


@[you]
Εικόνα
thalia
Δημοσιεύσεις: 109
Εγγραφή: Τρί Ιουν 10, 2008 12:29 pm
Real Name: Θάλεια
Gender: Female
Facebook ID: 0

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από thalia »

LocknLoad εγώ σκέφτηκα το εξής επειδή μας λέει αυστηρά την θέση των α:

Κώδικας: Επιλογή όλων

public class BinToDec1
{
     public static int BinΤoDec(String bin){
        int dec=0;
        int p;
        int k=bin.length()-1;
        for(int i=0; i<bin.length(); i++){
            if(bin.charAt(k-i)=='1'){
               if(k-i==0)
                  dec+=1;
               else
                  {p=1; 
                   for (int j=1; j<=k-i; j++)
                        p=p*2;
                   dec+=p;}}}
        return dec;}
}
όπου αν δεις έχω βάλει έναν int k....Θέλει όμως μια μικροαλλαγή που να σου πω την αλήθεια δεν τη βρίσκω γιατί έχω κουραστεί και.....Αν σου έρθει έμπνευση,καλοδεχούμενη
Άβαταρ μέλους
LocknLoad
Forum Administrator
Forum Administrator
Δημοσιεύσεις: 2250
Εγγραφή: Κυρ Οκτ 07, 2007 5:34 pm

Re: Εισαγωγή στον προγραμματισμό (εργαστήριο)

Δημοσίευση από LocknLoad »

Κώδικας: Επιλογή όλων

        for(int i=(bin.length()-1); i>=0; i--){
            if(bin.charAt(i)=='1'){
               if(i==(bin.length()-1))
                  dec+=1;
               else{
                   dec+=Math.pow(2,bin.length()-i-1);}}}
Δεν χρειαζεται αλλη μεταβλητη. Προσαρμοσα το εργαστηριο στην for μου και δουλεψε.

Προσεχε αυτο bin.length()-i-1 . Το + ή - 1 χρειαζεται καπως συχνα οταν πας να μπλεξεις για τα καλα με τους πινακες. Και καλου-κακου να θυμασαι οτι Math.pow(βαση, εκθετης) ειναι αριθμος και μπορεις κανεις πραξεις μαζι του (οπως φαινεται σ'αυτο που δινω και στο παραδειγμα) και Math.PI ειναι το π.
Ναι, [you] σε παρακολουθώ!

Εικόνα


@[you]
Εικόνα
Απάντηση

Επιστροφή στο “Πρώτο Έτος”