👤

va rog frumos ajutatimaa !!!

Va Rog Frumos Ajutatimaa class=

Răspuns :

Răspuns:

#include <iostream>

using std::cout, std::cerr, std::endl, std::cin, std::size_t;

// Funcția returnează din câte cifre este format un număr (pentru a verifica la crearea vectorului dacă utilizatorul introduce un număr format din mai mult de 4 cifre, total opțională, folosită pentru a valida input-ul utilizatorului dacă vrei)

static int numarCifre(int numar) {

 int contorCifre{};

 while (numar) {

   contorCifre++;

   numar /= 10;

 }

 return contorCifre;

}

// Funcția îți returnează adresa unui vector cu numere, l-am alocat dinamic pentru a avea un vector de fix câte elemente ai nevoie, mai e o variantă în care îți declari un vector cu dimensiunea 50, 100.. cât vrei... și-l folosești pe acela dacă nu vrei să lucrezi cu pointeri dar e mai eficient așa d.p.d.v. al spațiului

static int* creareVector(size_t dimensiuneVector) {

 // aloci pe memorie o zonă de dimensiunea primită

 int* pVector = new int[dimensiuneVector];

 for (size_t i = 0; i < dimensiuneVector; ++i) {

   cout << "pVector[" << i << "] = ";

   // citești numărul în vector

   cin >> pVector[i];

   // dacă numărul are mai mult de 4 cifre ieși din program

   if (numarCifre(pVector[i]) > 4) {

     cerr << "Numarul introdus trebuie sa aiba cel mult 4 cifre!" << endl;

     exit(EXIT_FAILURE);

   }

 }

 // la final returnezi adresa vectorului

 return pVector;

}

// Afișarea ți-am făcut-o să arate ca și-n enunțurile problemei

static void afisareVector(int vectorNumere[], size_t dimensiuneVector) {

 cout << "vectorNumere = (";

 for (size_t i = 0; i < dimensiuneVector; ++i)

   (i != dimensiuneVector - 1) ? cout << vectorNumere[i] << ", "

                               : cout << vectorNumere[i] << ")" << endl;

}

// Funcția doar îți eliberează memoria alocată la crearea vectorului (dacă lucrezi cu un vector pe stivă nu mai ai nevoie de funcția asta)

static void eliberareMemorie(int vectorNumere[]) { delete[] vectorNumere; }

// O altă funcție ajutătoare pe care o folosim la problema3 în care căutăm minimul dintr-un vector și-l returnăm

static int minimulDinVector(int vectorNumere[], size_t dimensiuneVector) {

 int minimVector = INT32_MAX;

 for (size_t i = 0; i < dimensiuneVector; ++i)

   if (vectorNumere[i] < minimVector) minimVector = vectorNumere[i];

 return minimVector;

}

// Acuma creăm funcțiile efectiv pentru problemele 1, 2 și 3

static void primaProblema() {

 size_t dimensiuneVector;

 cout << "Introdu dimensiunea vectorului >> ";

 // citim dimensiunea vectorului

 cin >> dimensiuneVector;

 // dacă dimensiunea este mai mică decât 2 sau mai mare decât 50 ieșim dinprogram

 if (dimensiuneVector < 2 || dimensiuneVector > 50) {

   cerr << "Dimensiunea vectorului trebuie sa fie o valoare din intervalul [2,50]!" << endl;

   exit(EXIT_FAILURE);

 }

 // creăm vectorul cu dimensiunea dorită

 int* pVector = creareVector(dimensiuneVector);

 // afișăm vectorul înainte de a-l modifica

 cout << "Vectorul inainte de modificari:\n";

 afisareVector(pVector, dimensiuneVector);

 // preluăm primul element al vectorului

 int primulElement = pVector[0];

 // parcurgem vectorul și dacă elementul curent are aceași valoare cu primul din vector îl setăm la 0

 for (size_t i = 0; i < dimensiuneVector; ++i)

   if (pVector[i] <= primulElement) pVector[i] = 0;

 // la final afișăm vectorul cu modificările aduse

 cout << "Vectorul dupa modificari:\n";

 afisareVector(pVector, dimensiuneVector);

 // și eliberăm memoria

 eliberareMemorie(pVector);

}

// Cam aceași pași doar că se adaugă un „câtScădem” care e X-ul tău

static void aDouaProblema() {

 size_t dimensiuneVector;

 int catScadem;

 cout << "Introdu dimensiunea vectorului >> ";

 cin >> dimensiuneVector;

 cout << "Introdu cat sa scadem din valorile pare >> ";

 cin >> catScadem;

 if ((dimensiuneVector < 2 || dimensiuneVector > 50) ||

     (catScadem < 0 || catScadem > 10)) {

   cerr << "Dimensiunea vectorului trebuie sa fie o valoare din intervalul "

           "[2,50] / catScadem trebuie să fie o valoare din intervalul [0,10]!"

        << endl;

   exit(EXIT_FAILURE);

 }

 int* pVector = creareVector(dimensiuneVector);

 cout << "Vectorul inainte de modificari:\n";

 afisareVector(pVector, dimensiuneVector);

 // și din fiecare număr par scădem valoarea ta din „câtScădem” (X)

 for (size_t i = 0; i < dimensiuneVector; ++i)

   if (pVector[i] % 2 == 0) pVector[i] -= catScadem;

 cout << "Vectorul dupa modificari:\n";

 afisareVector(pVector, dimensiuneVector);

 eliberareMemorie(pVector);

}