Se afișează postările cu eticheta vectori. Afișați toate postările
Se afișează postările cu eticheta vectori. Afișați toate postările

luni, 23 septembrie 2024

Set de probleme pentru exersarea și aplicarea operațiilor pe vectori unidimensionali

  1. Elaborați un program Java care va declara un vector ce va conține elementele 4, 5, 7, 0, 5, 6. Programul va afișa la ecran elementele vectorului.
  2. Elaborați un program care va întreba numele utilizatorului, îl va saluta, îi va cere dimensiunea vectorului și apoi elementele acestuia. Programul să afișeze vectorul introdus.
  3. Elaborați un program Java care va va calcula suma elementelor unui vector.
  4. Elaborați un program Java care va înlocui elementele divizibile la 3 dintr-un vector cu cifra 3.
  5. Se dă un vector de n numere și un număr d. Elaborați un program care va afișa elementele vectorului divizibile la d.
  6. Elaborați un program Java care va afișa numărul de elemente pare dintr-un vector, elementele pare şi pozițiile acestora.
  7. Se dă un vector de 10 numere întregi. Elaborați un program care va afișa pe primul rând numerele pare şi pe al doilea cele impare.
  8. Să se elaboreze un program care va calcula maximul elementelor negative și suma elementelor pozitive ce se conțin într-un vector de dimensiunea n cu elemente numere întregi.
  9. Să se elaboreze un program care va determina elementul maximal și numărul de apariții ale lui într-un tablou liniar de dimensiunea n cu elemente numere reale.
  10. Să se scrie un program care va determina numărul schimbărilor de semn într-un tablou liniar de dimensiunea n cu elemente numere naturale nenule.
  11. Elaborați un program care va citi dimensiunea și elementele unui vector de la tastatură și va afișa media aritmetică a tuturor elementelor vectorului.
  12. Elaborați un program care va citi dimensiunea și elementele unui vector de la tastatură. Programul va număra câte elemente sunt pozitive, negative și egale cu zero.
  13. Elaborați un program care va citi dimensiunea și elementele unui vector de la tastatură. Programul va solicita utilizatorului o valoare de căutat în vector și va afișa dacă aceasta există sau nu. Dacă valoarea este găsită, se va afișa și poziția la care se află.
  14. Elaborați un program care să citească de la tastatură dimensiunea și elementele a doi vectori de aceeași mărime. Programul va calcula suma celor doi vectori element cu element și va stoca rezultatul într-un al treilea vector. La final, se vor afișa pe ecran toate valorile cele trei vectori însoțite de mesaje user-friendly.
  15. Elaborați un program Java care va citi de la tastatură dimensiunea și elementele unui vector. Programul va calcula și afișa două valori, suma elementelor de pe poziții pare și suma elementelor de pe poziții impare.
  16. Elaborați un program Java care va citi de la tastatură dimensiunea și elementele unui vector. Programul va calcula și afișa câte elemente sunt mai mari decât media elementelor din vector.
  17. Elaborați un program Java care să citească de la tastatură dimensiunea și elementele unui vector, precum și două valori care definesc un interval. Programul va afișa toate valorile din vector care se încadrează în acest interval.
  18. Elaborați un program Java care va citi de la tastatură dimensiunea și elementele unui vector. Va afișa vectorul introdus pe o singură linie. După care va cere utilizatorului să aleagă cum dorește să fie vectorul sortat: prin metoda bulelor, prin metoda inserției sau prin metode selecției. În dependență de opțiunea aleasă programul va sorta vectorul introdus de utilizator și va afișa vectorul sortat însoțit de mesaje sugestive.
  19. Elaborați un program Java care va citi de la tastatură dimensiunea și elementele a doi vectori de aceeași dimensiune. Programul va combina vectorii, astfel încât să se obțină un al treilea vector intercalat (elemente alternativ din primul și al doilea vector). De exemplu: dacă avem doi vectori: Vector A: 1, 3, 5 și Vector B: 2, 4, 6 se va afișa Vector C: 1, 2, 3, 4, 5, 6

luni, 26 august 2024

Operațiile destinate prelucrării tipurilor de date tablou unidimensional

În programarea Java, vectorii (tablourile) sunt utilizați pentru a stoca un număr fix de valori de același tip. Mai jos veți găsi câteva operații importante prezentate cât se poate de simplu, cu algoritm și exemple practice.

1️⃣ Declararea și inițializarea unui vector

Operația: Crearea unui vector și alocarea de valori.
Algoritm:
  1. Se declară vectorul.
  2. Se initializează cu valori.
int[] v = {3, 5, 7, 2, 9};

2️⃣ Citirea elementelor unui vector de la tastatură

Operația: Crearea unui vector și alocarea de valori citite de la tastatură.
Algoritm:
  1. Citește numărul de elemente.
  2. Creează vectorul.
  3. Parcurge și citește fiecare valoare.
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] v = new int[n];
for(int i = 0; i < n; i++){
    v[i] = sc.nextInt();
}

3️⃣ Afișarea elementelor unui vector

Operația: Afișarea tuturor valorilor din vector.
Algoritm:
  1. Parcurge vectorul.
  2. Afișează fiecare element.
for(int i = 0; i < v.length; i++){
    System.out.print(v[i] + " ");
}

4️⃣ Calculul sumei elementelor din vector

Operația: Determinarea sumei tuturor valorilor.
Algoritm:
  1. Inițializează suma cu 0.
  2. Adună succesiv toate elementele.
int suma = 0;
for(int i = 0; i < v.length; i++){
    suma += v[i];
}
System.out.println("Suma = " + suma);

5️⃣ Determinarea valorii maxime

Operația: Găsirea celui mai mare element.
Algoritm:
  1. Se presupune că primul element este maxim.
  2. Se compară toate valorile cu acesta.
int max = v[0];
for(int i = 1; i < v.length; i++){
    if(v[i] > max)
        max = v[i];
}
System.out.println("Maximul = " + max);

6️⃣ Determinarea valorii minime

Operația: Găsirea celui mai mic element.
Algoritm:
  1. Se consideră primul element minim.
  2. Se compară toate valorile cu el.
int min = v[0];
for(int i = 1; i < v.length; i++){
    if(v[i] < min)
        min = v[i];
}
System.out.println("Minimul = " + min);

7️⃣ Căutarea unui element în vector

Operația: Verificarea existenței unei valori.
Algoritm:
  1. Se parcurge vectorul.
  2. Dacă un element coincide cu cel căutat → găsit.
int caut = 7;
boolean gasit = false;
for(int i = 0; i < v.length; i++){
    if(v[i] == caut){
        gasit = true;
        break;
    }
}
if(gasit)
    System.out.println("Elementul a fost găsit.");
else
    System.out.println("Elementul NU există.");

8️⃣ Determinarea mediei elementelor

Operația: Calculul mediei aritmetice.
Algoritm:
  1. Se calculează suma.
  2. Se împarte la numărul elementelor.
int suma = 0;
for(int x : v){
    suma += x;
}
double media = (double)suma / v.length;
System.out.println("Media = " + media);

9️⃣ Sortarea elementelor prin metoda bulelor (Bubble Sort)

Operația: Sortarea vectorului în ordine crescătoare prin compararea elementelor vecine.
Algoritm:
  1. Parcurge vectorul de mai multe ori.
  2. Compară elementele adiacente.
  3. Dacă sunt în ordine greșită, le interschimbă.
  4. Cel mai mare element „urcă” spre final.
for(int i = 0; i < v.length - 1; i++){
    for(int j = 0; j < v.length - 1 - i; j++){
        if(v[j] > v[j + 1]){
            int temp = v[j];
            v[j] = v[j + 1];
            v[j + 1] = temp;
        }
    }
}
System.out.println("Vector sortat cu metoda bulelor:");
for(int x : v)
    System.out.print(x + " ");

🔟 Inversarea elementelor din vector

Operația: Ultimul element devine primul și invers.
Algoritm:
  1. Se folosesc doi indici (stânga și dreapta).
  2. Se interschimbă valorile până la mijloc.
int left = 0, right = v.length - 1;
while(left < right){
    int temp = v[left];
    v[left] = v[right];
    v[right] = temp;
    left++;
    right--;
}

miercuri, 18 septembrie 2019

Prelucrarea tablourilor unidimensionale în Java


Un vector, tablou, masiv unidimensional sau array reprezintă un container pentru un număr de elemente de același tip, fiecare element fiind indexat de un număr. 
În limbajul Java vectorii sunt obiecte, tipul acestora fiind referință.

Vectorii sunt de 2 tipuri:
1.  cu lungime fixă – dimensiunea  vectorului este stabilită la crearea acestuia și nu poate fi modificată ulterior. Pentru ei nu există o clasă care se instanţiază  pentru a obține un obiect vector.
2. cu lungime variabilă – dimensiunea vectorului poate fi modificată pe parcursul rulării programului. Pentru ei există clase Java predefinite ce pot fi instanțiate (de ex.  java.util.Vector, java.util.Arrays, ș.a).

Iată structura unui vector:


După cum observați în figura de mai sus, fiecărui element dintr-un vector îi corespunde un index numeric, cu ajutorul căruia poate fi accesat. Numerotarea elementelor începe întotdeauna de la 0, ceea ce înseamnă că, de exemplu, cel de-al nouălea element va fi accesat de indexul 8.

Pentru a folosi un vector este necesar să:

1. declarați o variabilă de tip vector care va servi drept referință către vectorul propriu-zis: 
Pentru a declara o variabila de tip vector se va respecta sintaxa:
tip [] nume;
unde
tip este tipul de date al elementelor conținute de vector;
[ ] sunt simboluri speciale ce indică ca variabila respectivă este un vector;
nume este identificatorul variabilei vectorului;

Ca şi în cazul altor tipuri de variabile, declararea nu creează de fapt un vector, dar pur şi simplu anunță compilatorul că variabila respectivă va deține un vector de tipul specificat. Deci, la această etapă vectorul nu poate fi utilizat.
Exemple:
byte[]unVectorDeTipByte;
short[]unVectorDeTipShort;
double[]unVectorDeTipDouble;
boolean[]unVectorDeTipBoolean;
char[]unVectorDeTipChar;
String[]unVectorDeTipString;
 

2. creați vectorul și stabiliți dimensiunea acestuia, adică numărul de elemente pe care le va putea conține.
Un vector poate fi creat utilizând operatorul new printr-o construcție de forma: 
new tip_vector [dimensiune]; 
unde:
tip_vector reprezintă tipul elementelor stocate în vector
dimensiune este o expresie de tip întreg pozitivă ce semnifică numărul de elemente ce se vor stoca în vector.

Întreaga construcție va crea un vector de tip tip_vector cu o dimensiune de dimensiune elemente indexate de la 0 la dimensiune-1.

Dacă această instrucțiune ar lipsi, compilatorul ar afișa o eroare asemănătoare celei de mai jos și execuția programului ar eșua:    
Variable anArray may not have been initialized.
De exemplu:
int [] a; // se declară variabila a ce conţine referință către un vector cu elemente întregi
a = new int[5];     // se crează un vector cu 5 elemente întregi de același tip cu variabila a  

3. accesați elementele vectorului, folosind variabila declarată, fie pentru a le atribui valori, fie pentru a citi valorile deja stocate.
Fiecare element distinct din vector poate fi accesat ca o variabilă separată printr-o construcție de forma:
nume [index]
unde 
nume reprezintă numele vectorului ce stochează elementele
index este o expresie de tip întreg strict pozitivă ce semnifică poziția elementului care doriți să îl accesați din vectorul dat. 

Dacă vectorul conține elemente atunci index trebuie să fie cuprins în intervalul  [0, n-1], în caz contrar o excepție de execuție va fi semnalată.

De exemplu:
int [] a; // se declară variabila a ce conţine referință către un vector cu elemente întregi
a = new int[5]; // se crează un vector cu 5 elemente întregi de același tip cu variabila a
a[0] = 23;    // primului element din vector i se atribuie valoarea 23
a[4] = 10;    // ultimului element din vector i se atribuie valoarea 10
a[5] = 9;     // excepție generată! Indexul nu se află în diapazonul [0,4]

Exemplu A: Declararea, inițializarea și afișarea pe ecran a elementelor unui vector

class ExArray {
  public static void main(String[] args) {
   int[] anArray;
   anArray = new int[10];
       
   anArray[0] = 100;
   anArray[1] = 200;
   anArray[2] = 300;
   anArray[3] = 400;
   anArray[4] = 500;
   anArray[5] = 600;
   anArray[6] = 700;
   anArray[7] = 800;
   anArray[8] = 900;
   anArray[9] = 1000;
        
System.out.println("Elementul cu index 0: " + anArray[0]);
System.out.println("Elementul cu index 1: " + anArray[1]);
System.out.println("Elementul cu index 2: " + anArray[2]);
System.out.println("Elementul cu index 3: " + anArray[3]);
System.out.println("Elementul cu index 4: " + anArray[4]);
System.out.println("Elementul cu index 5: " + anArray[5]);
System.out.println("Elementul cu index 6: " + anArray[6]);
System.out.println("Elementul cu index 7: " + anArray[7]);
System.out.println("Elementul cu index 8: " + anArray[8]);
System.out.println("Elementul cu index 9: " + anArray[9]);
}}


Alternativ, poate fi creat și inițializat un vector în felul următor:

int[] anArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};

În acest caz, dimensiunea vectorului este determinată automat de numărul de valori specificate între acolade și poate fi obținută prin anArray.length.

Deci, fiecare vector conține, pe lângă elemente, o variabilă de instanță publică ce nu poate fi modificată numită length ce stochează numărul de elemente în vector. 

Prin urmare accesând această variabilă putem obține lungimea unui vector.

Exemplu:
double[] v;
v = new double[5];
System.out.println(v.length);      // se va afișa valoarea 5

Expresia:
double[] v;
v = new double[5];

este echivalentă cu expresia:
 double[] v = new double[5];

Orice vector îndată ce a fost declarat este inițializat cu valori default după cum urmează: 
  • pentru byte, shortintlong - valoarea default este 0;
  • pentru float, double - valoarea default este 0.0;
  • pentru boolean - valoarea default este false;
  • pentru obiecte - valoarea default este null;
Exemplul B Inițializarea unui vector cu valori implicite (default):

public class Main {
public static void main(String[] args) {
int[] v = new int[5]; 

System.out.println("Valorile implicite ale vectorului sunt:");
for (int i = 0; i < v.length; i++) {
 System.out.println("v[" + i + "] = " + v[i]);
}}}

Exemplul D Citirea valorilor unui vector de la tastatură

import java.util.Scanner;
public class Main {
 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
   int[] v = new int[5]; // vector cu 5 elemente
   for (int i = 0; i < v.length; i++) {
   System.out.print("Introduceți elementul " + i + ": ");
   v[i] = sc.nextInt();
}
System.out.println("Vectorul introdus este:");
for (int x : v) {
   System.out.print(x + " ");
}}}

Rețineți! 
for (int x : v) {
   System.out.print(x + " ");
}
Acestei forme a instrucțiunii for i se mai spune în Java for-each sau forma scurtă a ciclului for. Dacă ar fi să traducem această instrucțiune în limba română ar suna cam în felul următor: pentru fiecare element x din vectorul v afișează la ecran pe x
Această formă a instrucțiunii parcurge automat toate elementele vectorului v și la fiecare iterație, variabila x primește valoarea curentă din vector. Aici nu există de a depăși limitele vectorului, pentru că nu se lucrează cu i. Este ideal pentru citirea elementelor, afișări, calcule simple. Pe lângă aceste beneficii, sunt desigur și limitări. Nu poți modifica valorile direct în vector prin variabila x, deoarece x este doar o copie a elementului. Nu ai acces la index, deci nu-l poți folosi când ai nevoie să știi poziția unui element.

Exemplul D găsirea elementului minim dintr-un vector folosind for-each

public class Main {
    public static void main(String[] args) {
        int[] v = {12, -3, 45, 0, 7, -10, 9};

        int minim = v[0]; 

        for (int x : v) {
            if (x < minim) {
                minim = x;
            }}

        System.out.println("Elementul minim este: " + minim);
    }
}


Să identificăm, din cele expuse mai sus, care sunt restricțiile impuse în lucrul cu masivele unidimensionale în Java: 
  • Dimensiunea tabloului este fixă, deci ea NU poate fi modificată.
  • Pentru a declara un vector se folosește sintaxa: tip[] denumire = new tip[dimensiune];
  • Tipul vectorului poate fi atât primitiv, cât și referință.
  • Vectorul o dată ce a fost declarat este inițializat cu valori default.
  • Indexarea elementelor în vector începe de la 0.
  • Accesul în afara limitelor indicilor elementeor produce eroare de execuție: ArrayIndexOutOfBoundsException.