Informatică, întrebare adresată de ionutmaracineanu2005, 8 ani în urmă

va rog frumos ajutatimaa !!!

Anexe:

Răspunsuri la întrebare

Răspuns de Apollyon
0

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);

}


Apollyon: static void aTreiaProblema() {
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);
Apollyon: // preluăm minimul din vector
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);
}
Apollyon: int main() {
primaProblema();
aDouaProblema();
aTreiaProblema();
return 0;
}
Apollyon: Dacă nu înțelegi ceva, scrie-mi
nasbhvfhg09: Ajutooooooor va rog mult
Alte întrebări interesante