va rog frumos ajutatimaa !!!
Răspunsuri la întrebare
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);
}
int minimVector = minimulDinVector(pVector, dimensiuneVector);
// și dacă numărul curent are valoarea minimului din vector îl dublăm
for (size_t i = 0; i < dimensiuneVector; ++i)
if (pVector[i] == minimVector) pVector[i] *= 2;
cout << "Vectorul dupa modificari:\n";
afisareVector(pVector, dimensiuneVector);
eliberareMemorie(pVector);
}
primaProblema();
aDouaProblema();
aTreiaProblema();
return 0;
}
size_t dimensiuneVector;
cout << "Introdu dimensiunea vectorului >> ";
cin >> dimensiuneVector;
if (dimensiuneVector < 2 || dimensiuneVector > 100) {
cerr << "Dimensiunea vectorului trebuie sa fie o valoare din intervalul "
"[2,100]!"
<< endl;
exit(EXIT_FAILURE);
}
int* pVector = creareVector(dimensiuneVector);
cout << "Vectorul inainte de modificari:\n";
afisareVector(pVector, dimensiuneVector);