Domenii
  Top Expert
1 djbrain 44355
2 subofferul 5220
3 robica 4610
4 krystyana84 3980
5 elena2008 2690
  Top Statistici
Membri inscrisi 96837
Intrebari 35959
Raspunsuri 164755
  Contact
nume
email
Introduceti textul din imagine
(pentru evitarea spam-ului):
Numar random
 
introduceti mesajul
email admin: adip.at.myexpert.ro
Consultanta ISO, Audituri Interne - Business Advising Team
Vizualizare intrebare
Intrebare
bullet Arrays de andreipop84596
Am o mica problema cu un exercitiu care imi da de cap:
Avem de exemplu următorul şir:

int[] array = {12, 0, -22, 0, 43, 545, -4, -55, 12, 43, 0, -999, -87}

Trebuie să se facă două şiruri, unul pentru stocarea elementelor pozitive și celălalt pentru elementele negative ale şirului array, și logica necesară care va efectua extragerea elementelor corespunzătoare şi plasarea lor în şirul adecvat. Elementele egale cu zero nu trebuie introduse în şirurile rezultate.

Cu alte cuvinte, din şirul array care este dat trebuie să se extragă toate elementele pozitive și să fie puse într-un şir separat. De asemenea, trebuie să se extragă toate elementele negative și să fie puse într-un şir separat.

De asemenea, trebuie să se determine numărul de repetiţii pentru fiecare număr din şirul iniţial care se repetă de două sau de mai multe ori. În acest caz, trebuie numărate şi elementele egale cu zero. Astfel, pentru fiecare valoare a unui element care se repetă trebuie afişată valoarea respectivă, împreună cu numărul de repetiţii.

Desigur, este necesar ca funcționalitatea scrisă să fie aplicabilă pe orice şir cu valori întregi, nu doar în acest exemplu concret.
Ce am facut pana acum este:
package assigment01;

import java.util.Arrays;

class Assigment01 {

    public static void main(String[] args) {
        int[] array = {12, 0, -22, 0, 43, 545, -4, -55, 12, 43, 0, -999, -87};
        Arrays.sort(array); // Sortarea sirului
        System.out.println("Rezultatul sortarii sirului este:: ");
        System.out.println(java.util.Arrays.toString(array));
        int nrDouble = 0;
        if (array.length > 1) {
            for (int i = 0; i < array.length - 1; i++) {
                if (array[i] == array[i + 1]) {
                    nrDouble++;
                }
            }
        }
        int i = 0;
        // Numararea elementelor negative
        while (i < array.length && array[i] < 0) {
            i++;
        }
        int[] negative = new int[i];
        int[] positive = new int[array.length - i];
        System.arraycopy(array, 0, negative, 0, negative.length);
        for (int a = 0; a < positive.length; a++) {
            positive[a] = array[a + i];

        if (array[a + i] != 0)
        {
            System.out.println("Numere pozitive: " + array[a + i]);
        }
        }
        System.out.println("Numere negative: " + Arrays.toString(negative));
        System.out.println("Numere Pozitive" + Arrays.toString(positive));
        System.out.printf("Numere duble: %d", nrDouble);
        System.out.println("");
    }
}
La partea cu   if (array[a + i] != 0) acolo normal trebuie sa pun numerele pozitive intr-un array nu sa mi le printeze una sub alta si nam idee cum sa mai fac, pe langa asta mai trebuie sa ultima parte din exercitiu cu numere duble... mor incet :)))
Tags:
5
puncte
1147
vizualizari
19-03-2020 15:48:27
Data intrebarii:
(0.00 - 0 voturi)
Ratings: 
Pentru a putea bifa optiunea de notificare in email in cazul adaugarii de comentarii la aceasta intrebare trebuie sa fiti logat.
Daca nu aveti cont, click Aici
Raspunsuri
Comentariul lui:
19-03-2020 18:03:54
Data:
Afisare numere pozitive in loc sa le puna in array - stergi linia:
System.out.println("Numere pozitive: " + array[a + i]);
Oricum, am sters complet partea respectiva.

Separare pozitive / negative: numeri elementele pozitive si negative, faci 2 array, copiezi elementele.

Aia cu numere duble nu e bine, deoarece iti trebuie:
- numarul de repetitii (nu doar duble, ci si triple, de 4 ori...) - tu numarai doar dublele
- pentru fiecare valoare in parte- nu aveai asa ceva deloc.

Uite aici, facut din mai multe bucati - http://tpcg.io/FJbUgrIB
Posibil sa mearga ceva optimizari, dar nu ma pricep asa bine la Java


import java.util.Arrays;
public class Assigment01 {
    public static void main(String[] args) {
        int[] array = {12,  -22, -22, 43, 545, -4, -55, 12, 43,0,2,3,3,3,45, -999, -87};
        Arrays.sort(array); // Sortarea sirului
        System.out.println("Rezultatul sortarii sirului este:: ");
        System.out.println(java.util.Arrays.toString(array));

        // numara pozitivele si negativele
        int numPositives = 0;
        int numNegatives = 0;
        for(int i=0;i<array.length;i++){
            if (array[i] > 0) {
                numPositives++;
            }
            if(array[i]<0){
                numNegatives++;
            }
        }
        // pune in 2 array pozitivele si negativele
        int[] negative = new int[numNegatives];
        int[] positive = new int[numPositives];
        int n = 0;
        int p = 0;
        
        for(int i=0;i<array.length;i++){
            if(array[i]<0){
                negative[n] = array[i];
                n++;
            }
            if(array[i]>0){
                positive[p] = array[i];
                p++;
            }
        }
        
        
    int sum = 0, counter = 0;        
    for (int i = 0; i < array.length; i++) {
        if (array[0] == array[array.length - 1]) {
            System.out.println(array[0] + ": " + counter + " times");
            break;
        } else {
            if (i == (array.length - 1)) {
                sum += array[array.length - 1];
                counter++;
                if(counter>1) { System.out.println((sum / counter) + " : " + counter + " times"); }
                break;
            } else {
                if (array[i] == array[i + 1]) {
                    sum += array[i];
                    counter++;
                } else if (array[i] != array[i + 1]) {
                    sum += array[i];
                    counter++;
                    if(counter>1) { System.out.println((sum / counter) + " : " + counter + " times");}
                    sum = 0;
                    counter = 0;
                }
            }
        }
    }

        System.out.println("Numere negative: " + Arrays.toString(negative));
        System.out.println("Numere Pozitive" + Arrays.toString(positive));

        System.out.println("");
    }

* Raspuns acceptatVoturi: 16 Voteaza



Raspunde / Comenteaza
Adauga un comentariu / raspuns:
Va rugam sa selectati unul din campuri: Utilizator nou Utilizator inregistrat
Ataseaza fisiere» (Max 200KB)