Προς το περιεχόμενο

Java μεγαλύτερη τιμή δύο πινάκων


spyros83

Προτεινόμενες αναρτήσεις

Δημοσ.

Μια συνάρτηση θα δέχεται δυο πίνακες Χ και Υ

(π.χ) ο Χ θα έχει {1,4,5,10} ο Υ θα έχει {2,8,9} τιμές

Η συνάρτηση θα πρέπει να επιστρέψει μόνο 1 στοιχείο το μεγαλύτερο δηλαδή το 10

 

 

[Ερώτησης]

 

Τον πίνακα να τον κάνω έτσι --> ,

 

>int [] pinakasX 
int [] pinakaY 

 

ή

 

>int x[][]=new int[4][3]

Δημοσ.

Μια συνάρτηση θα δέχεται δυο πίνακες Χ και Υ

(π.χ) ο Χ θα έχει {1,4,5,10} ο Υ θα έχει {2,8,9} τιμές

Η συνάρτηση θα πρέπει να επιστρέψει μόνο 1 στοιχείο το μεγαλύτερο δηλαδή το 10

 

 

[Ερώτησης]

 

Τον πίνακα να τον κάνω έτσι --> ,

 

>int [] pinakasX 
int [] pinakaY 

 

ή

 

>int x[][]=new int[4][3]

 

 

Εφόσον λέει δύο πίνακες θα φτιάξεις δύο πίνακες δηλαδή το πρώτο. Φυσικά θα φτιάξεις μια μέθοδο που θα βρίσκει το μέγιστο στοιχείο ενός πίνακα(reusable) και θα την χρησιμοποιήσεις στην μέθοδο που θα συγκρίνει δύο πίνακες εκτός και αν χρησιμοποιήσεις κάτι διαφορετικό όπως την Arrays.sort και συγκρίνεις απλά τα τελευταία.

Δημοσ.

Ευχαριστώ παιδιά!!!

 

Υπάρχει κάπου κάποιο tutorial κάποιο example με πράξεις μεταξύ πινάκων γιατι δεν ξέρω πως να το κάνω!!!

για ένα μονοδιάστατο ξέρω πως να βρω την μεγαλύτερη τιμή αλλά εδώ για να συγκρίνω 2 πίνακες τι κάνουμε???

Δημοσ.

Ευχαριστώ παιδιά!!!

 

Υπάρχει κάπου κάποιο tutorial κάποιο example με πράξεις μεταξύ πινάκων γιατι δεν ξέρω πως να το κάνω!!!

για ένα μονοδιάστατο ξέρω πως να βρω την μεγαλύτερη τιμή αλλά εδώ για να συγκρίνω 2 πίνακες τι κάνουμε???

 

Δηλαδή αν βρεις την μεγαλύτερη για κάθε πίνακα με ένα if δεν καλύπτεσαι ?

Δημοσ.

Δηλαδή αν βρεις την μεγαλύτερη για κάθε πίνακα με ένα if δεν καλύπτεσαι ?

 

 

Δηλ. αν έχω τιμές για τον Χ = {1,4,5,10,11} και Υ = {2,8,9}

 

Τότε θα έπρεπε να εμφανίσω 2 τιμές το 10 και το 11

Αυτό που λες εσύ δεν θα κάνει αυτό που ζητάω ...

Δημοσ.

Δηλ. αν έχω τιμές για τον Χ = {1,4,5,10,11} και Υ = {2,8,9}

 

Τότε θα έπρεπε να εμφανίσω 2 τιμές το 10 και το 11

Αυτό που λες εσύ δεν θα κάνει αυτό που ζητάω ...

 

Εγώ κατάλαβα απο το αρχικό post ότι θες την μέγιστη τιμή που υπάρχει μέσα στους δύο πίνακες. Μία τιμή όχι δύο

 

Δηλαδή

 

βρίσκεις την μέγιστη απο τον πρώτο που είναι 11

βρίσκεις την μέγιστη απο τον δεύτερο που είναι 9

 

και με μια σύγκριση γυρνάς την 11 που είναι και η μέγιστη και απο τους δύο πίνακες

 

>public int findmax(int[] l)
{
  edo paei o kodikas gia tin megisti apo ton enan pinaka
}


public int findmaxarrays(int[] one,int[] two)
{
  int max1=findmax(one);
  int max2=findmax(two);

  if (max1>max2) 
       { 
         return max1;
       } 
     else 
        {
        return max2;
        }
  
}

Δημοσ.

>package snippet;
import java.util.Arrays;
import java.util.Collections;

public class Main {
 public static void main(String[] args) {
   Integer[] numbers = { 2, 0, 1, 4, 3 , 6 ,7};
   Integer[] numbers1 = { 1, 2, 3, 4, 5 };

   int max = (int) Collections.max(Arrays.asList(numbers));
   int max1 = (int) Collections.max(Arrays.asList(numbers1));
   {
       if (max1>max) 
       { 
       	  System.out.println("Megaluteros apo pinaka2: " + max1);
       } 
     else 
        {
   	  System.out.println("Megaluteros apo pinaka1: " + max);
        }

   }
 }
}

 

Αυτό που λες εσύ το έκανα μόλις τώρα!!! (Το έκανα και compile και τρέχει κανονικά)

Αποτέλεσμα στην οθόνη δίνει το 7!!! Τώρα αυτό που θέλω να κάνω εγώ μπορεί να με βοηθήσει κάποιος στον παραπάνω κώδικα?

Δηλαδή να δώσει και το 6 και το 7...???

Δημοσ.

άκυρο!

 

 

Πες το ρε συ Mitsako. Φταίει το κρασί που πίνω ? Τι θέλει ? Τα δύο μέγιστα συνολικά απο τους δύο πίνακες ?

 

>package snippet;
import java.util.Arrays;
import java.util.Collections;

public class Main {
 public static void main(String[] args) {
   Integer[] numbers = { 2, 0, 1, 4, 3 , 6 ,7};
   Integer[] numbers1 = { 1, 2, 3, 4, 5 };

   int max = (int) Collections.max(Arrays.asList(numbers));
   int max1 = (int) Collections.max(Arrays.asList(numbers1));
   {
       if (max1>max) 
       { 
       	  System.out.println("Megaluteros apo pinaka2: " + max1);
       } 
     else 
        {
   	  System.out.println("Megaluteros apo pinaka1: " + max);
        }

   }
 }
}

 

Αυτό που λες εσύ το έκανα μόλις τώρα!!! (Το έκανα και compile και τρέχει κανονικά)

Αποτέλεσμα στην οθόνη δίνει το 7!!! Τώρα αυτό που θέλω να κάνω εγώ μπορεί να με βοηθήσει κάποιος στον παραπάνω κώδικα?

Δηλαδή να δώσει και το 6 και το 7...???

 

 

Ναι το έκανες αλλά χωρίς μέθοδο την οποία ζήτησες. Χωρίς αλγόριθμο για την εύρεση του max . Χωρίς primitive αλλά με objects αρα πιο αργα operations . Εβαλες στο παιχνίδι Collections αρα γιατί να μην χρησιμοποιήσεις απευθείας collections και λες για arrays ? Τέσπα παραδίνομαι.

Δημοσ.

Πες το ρε συ Mitsako. Φταίει το κρασί που πίνω ? Τι θέλει ? Τα δύο μέγιστα συνολικά απο τους δύο πίνακες ?

Όπως λέει στο τελευταίο post θέλει τα δύο μέγιστα συνολικά από τους δύο πίνακες... Στην αρχή νόμιζα το ένα μέγιστο από κάθε πίνακα αλλά σύμφωνα με το τελευταίο post τα δύο μέγιστα. Ήπια και εγώ κάτι μπύρες οπότε δεν μπορώ να βρω λύση τώρα...

 

Πάντως είναι διαφορετική ερώτηση από την αρχική οπότε δεν φταίνε τα κρασιά σου!!!!! :P

Δημοσ.

>
 public static void main(String[] args) {
   Integer[] numbers = { 2, 0, 1, 4, 3 , 6 ,7};
   Integer[] numbers1 = { 1, 2, 3, 4, 5, 8, 9 };

   int max = (int) Collections.max(Arrays.asList(numbers));
   int max1 = (int) Collections.max(Arrays.asList(numbers1));
   
   if(max1<max){
       for(int i=0; i<numbers.length; ++i)
           if(max1 < numbers[i] && numbers[i] != max)
               max1 = numbers[i];
   }else{
       for(int i=0; i<numbers1.length; ++i)
           if(max < numbers1[i] && numbers1[i] != max1)
               max = numbers1[i];
   }
   
   
   System.out.println("Megaluteros1: " + max1);
   System.out.println("Megaluteros2: " + max);
 }

 

Συνήθισε να μην βάζεις numbers, numbers1, max, max1 γιατί θα τα χάσεις όταν το διαβάζεις.... Αυτό κάνει αυτό που θέλεις (με πρόλαβες Aztec)!

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

Δημοσ.

>
 public static void main(String[] args) {
   Integer[] numbers = { 2, 0, 1, 4, 3 , 6 ,7};
   Integer[] numbers1 = { 1, 2, 3, 4, 5, 8, 9 };

   int max = (int) Collections.max(Arrays.asList(numbers));
   int max1 = (int) Collections.max(Arrays.asList(numbers1));
   
   if(max1<max){
       for(int i=0; i<numbers.length; ++i)
           if(max1 < numbers[i] && numbers[i] != max)
               max1 = numbers[i];
   }else{
       for(int i=0; i<numbers1.length; ++i)
           if(max < numbers1[i] && numbers1[i] != max1)
               max = numbers1[i];
   }
   
   
   System.out.println("Megaluteros1: " + max1);
   System.out.println("Megaluteros2: " + max);
 }

 

Συνήθισε να μην βάζεις numbers, numbers1, max, max1 γιατί θα τα χάσεις όταν το διαβάζεις.... Αυτό κάνει αυτό που θέλεις (με πρόλαβες Aztec)!

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

 

καλά εγω εννοουσα merging σε τρίτο array και στην συνέχεια sorting . Πιο πολύ μνήμη αλλά αν αργότερα ζητήσει τα τρία μεγαλύτερα αλλάζει πολύ ευκολα. Η δική σου λύση είναι καλύτερη για τα δεδομένα που έχει το πρόβλημα. Άντε καλό βράδυ :rolleyes:

Δημοσ.

Δίκιο έχεις για την επεκτασιμότητα της λύσης που πρότεινες σε σχέση με την δική μου. Απλά επειδή μάλλον είναι σαν εργασία για εκμάθηση δεν νομίζω να θέλει κάτι τέτοιο.

>

   public static void main(String[] args) {
       int numbers[] = { 2, 0, 1, 4, 3 , 6 ,7};
       int numbers1[] = { 1, 2, 3, 4, 5, 8, 9 };
       findmaxarrays(numbers, numbers1);
   }
 
   public static int findmax(int[] l)
   {
       int max=l[0];
       for(int i=1; i<l.length; ++i)
           if(max < l[i])
               max = l[i];
       return max;
   }


   public static void findmaxarrays(int[] one, int[] two){

       int max = findmax(one);
       int max1 = findmax(two);

       if(max1<max){
           for(int i=0; i<one.length; ++i)
               if(max1 < one[i] && one[i] != max)
                   max1 = one[i];
       }else{
           for(int i=0; i<two.length; ++i)
               if(max < two[i] && two[i] != max1)
                   max = two[i];
       }


       System.out.println("Megaluteros1: " + max1);
       System.out.println("Megaluteros2: " + max);   
   }

Και χωρίς να χρησιμοποιήσεις άλλες συναρτήσεις από το collections.

 

Καληνύχτα.

Αρχειοθετημένο

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

  • Δημιουργία νέου...