Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cu ce va aparati de cainii agresi...

Nu imi platiti coletul cu cardul ...

Mi-au disparut amigdalitele ?

Exista vreun plan de terorizare p...
 Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 

Sortarea valorilor negative si pozitive in doua siruri separate.

- - - - -
  • Please log in to reply
14 replies to this topic

#1
MihalacheM

MihalacheM

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 16.01.2010
Salutare la toata lumea si Sarbatori Fericite!

Sunt incepator in programare si m-am inscris la un curs on-line pt. programare JAVA.

Se da problema:

Avem dat următorul șir:
int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 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.
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 și numărul duplicatelor în șirul array.
Desigur, este necesar ca funcționalitatea scrisă să fie aplicabilă pe orice șir cu valori întregi.

Va rog sa ma ajutati sa realizez acest program. :)

package assignment1;
import java.util.Arrays;
public class MyClass {
	public static void main(String[] args) {
		int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};
		Arrays.sort(array);
		System.out.println("This is the sorted array: ");
		System.out.println(java.util.Arrays.toString(array));
		for (int x : array) {
			if (x < 0) {
				System.out.println(x);
			} else {
				System.out.println(x);
			}
		}
	}
}


Se vede ca programul printeaza pe rand valorile negative si pe cele pozitive, dar cum fac sa fie afisate in siruri separate?

#2
EnachescuAlin

EnachescuAlin

    Active Member

  • Grup: Members
  • Posts: 1,008
  • Înscris: 08.07.2013
for (int x : array)
	if (x < 0) {
		// il adaugi pe x intr-un sir
	} else {
		// il adaugi pe x in alt sir
	}



#3
MihalacheM

MihalacheM

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 16.01.2010
Da, dar fiecare valoare obtinuta in urma executarii buclei este afisata separat. Cum fac ca ele sa fie introduse toate, in cate un sir separat?

Edited by MihalacheM, 25 December 2014 - 16:46.


#4
EnachescuAlin

EnachescuAlin

    Active Member

  • Grup: Members
  • Posts: 1,008
  • Înscris: 08.07.2013
Pai cum ti-am scris mai sus. Intai le bagi in sir si dupa afisezi cele doua siruri.
Iar daca nu stii cum sa bagi in sir, uite aici ceva care poate te ajuta: http://stackoverflow...t-array-in-java

#5
MihalacheM

MihalacheM

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 16.01.2010
Am citit ce scrie acolo, dar tot nu inteleg. Am incercat astfel:
int[] pozitive;
			 pozitive = ArrayUtils.add(pozitive, x);

Dar nu functioneaza. Te rog sa-mi dai un exemplu de cod functional, daca poti. Din ce stiu eu, un sir are o lungime definita, iar dupa ce este definita, nu se mai poate mari sau micsora. De aia nu inteleg cum se poate lua fiecare valoare a lui x pt care corespunde conditia si sa o adaug intr-un sir care sa-si mareasca dimensiunea, dupa ce, in prealabil, nu are niciun element.

Edited by MihalacheM, 25 December 2014 - 18:28.


#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Pentru dimensiune variabila exista clase speciale, cum e ArrayList.
Tie insa ti-e de ajuns si un sir de dimensiune fixa, cat a sirului initial, sau cu dimensiune ce-o aflii dupa ce numeri cate valori pozitive/negative ai in sirul initial.

#7
MihalacheM

MihalacheM

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 16.01.2010
Am ajuns la urmatorul pas:
package assignment1;
import java.util.Arrays;
public class MyClass {
	public static void main(String[] args) {
		int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};
		Arrays.sort(array);
		System.out.println("This is the sorted array: ");
		System.out.println(java.util.Arrays.toString(array));
		int y = 0;
		for (int x : array) {
			if (x < 0) {
				System.out.println(x);
			} else {
				y++;
				int[] pozitive = new int[y];
				pozitive[y - 1] = x;
				System.out.println(y);
				System.out.println(java.util.Arrays.toString(pozitive));
			}
		}
	}
}

Dar acum nu stiu cum sa-l fac sa pastreze la fiecare iteratie si valorile anterioare astfel incat la sfarsit sa ramana sirul cu toate valorile pozitive, nu numai cu ultima pe care o preia din ultima iteratie a buclei.

#8
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Creezi sirul de numere positive odata, nu il tot recreezi dupa fiecare element.

#9
EnachescuAlin

EnachescuAlin

    Active Member

  • Grup: Members
  • Posts: 1,008
  • Înscris: 08.07.2013
Dar de ce nu vrei sa folosesti List sau Vector? Iti va fi mult mai usor.

#10
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Inca n-a inteles nici array-urile cum trebuie, toate la timpul lor.

#11
MihalacheM

MihalacheM

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 16.01.2010
Va multumesc mult pentru sfaturi. Dupa ce m-am mai chinuit putin, am reusit intr-un sfarsit, sa fac toata aplicatia. Am trimis-o profesorului spre evaluare. Astept sa vad ce zice. :)

#12
chrys17

chrys17

    New Member

  • Grup: Junior Members
  • Posts: 3
  • Înscris: 21.01.2015
Aceiasi problema o am si eu ... nu imi pune numerele in aceiasi linie ...si doar in lini separate ...dar fara cele negative ...Am exact aceiasi problema ca a ta... Daca ai putea sa imi spui si mie cum ai facut .Multumesc

#13
chrys17

chrys17

    New Member

  • Grup: Junior Members
  • Posts: 3
  • Înscris: 21.01.2015
int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};
    Arrays.sort(array);
    System.out.println("Acestea sunt sortate: ");
    System.out.println(java.util.Arrays.toString(array));
    int x = 0;
    for (int y : array) {
    if (y > 0) ;
    {
    System.out.println(y);
    }
    }





problema e ca la mine nu le pune pe o linie separata cele negative si cele pozitive .... Le pune una sub alta ... Cum fac ?... Eu fac cursuri dupa net mai citesc una alta ... si mi s-a parut dragut acest exercitiu ... Puteti sa ma ajutati ?Chiar imi da batai de cap .Multumesc frumos

#14
sorin147

sorin147

    Senior Member

  • Grup: Senior Members
  • Posts: 6,364
  • Înscris: 11.08.2003
System.out.println("text"); - scrie "text" pe randuri separate
System.out.print("text");   - scrie "text" pe acelasi rand



for(int i=0;i<5;i++){
  System.out.println(i);
}
OUTPUT:
0
1
2
3
4
for(int i=0;i<5;i++){
  System.out.print(i);
}
OUTPUT:
01234


Edited by sorin147, 22 January 2015 - 07:57.


#15
chrys17

chrys17

    New Member

  • Grup: Junior Members
  • Posts: 3
  • Înscris: 21.01.2015
Dupa cateva ore de lucru si stor creierii am reusit ,....





package myjavaprogram;
import java.util.Arrays;
class MyJavaProgram {
    public static void main(String[] args) {
    int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};
    Arrays.sort(array);
    System.out.println("Acestea sunt sortate: ");
    System.out.println(java.util.Arrays.toString(array));
    Arrays.sort(array);
    int dubluri = 0;
    if (array.length > 1) {
    for (int i = 0; i < array.length - 1; i++) {
    if (array[i] == array[i + 1]) {
    dubluri++;
    }
    }
    }
    int i = 0;
    // numara cate elem sunt negative
    while (i < array.length && array[i] < 0) {
    i++;
    }
    int[] neg = new int[i];
    int[] poz = new int[array.length - i];
    for (int j = 0; j < neg.length; j++) {
    neg[j] = array[j];
    }
    for (int j = 0; j < poz.length; j++) {
    poz[j] = array[j + i];
    }
    System.out.println(Arrays.toString(neg));
    System.out.println(Arrays.toString(poz));
    System.out.printf("Dubluri: %d", dubluri);
    }
}

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate