Răspuns :
Răspuns:
#include <iostream>
int* creareVector(const size_t& dimensiuneVector);
void afisareVector(const std::pair<size_t, size_t>& perecheIndexi, int vectorNumere[]);
std::pair<size_t, size_t> calculareIndexi(int vectorNumere[], const size_t& dimensiuneVector);
int main()
{
size_t dimensiuneVector;
std::cout << "Introdu dimensiunea vectorului >> ";
std::cin >> dimensiuneVector; // citim dimensiunea vectorului
if (!dimensiuneVector > 0) {
exit(EXIT_FAILURE);
}
int* vectorNumere = creareVector(dimensiuneVector); // creăm vectorul cu dimensiunea dată
// gasim indexii minimului si maximului din vector
std::pair<size_t, size_t> perecheIndexi{ calculareIndexi(vectorNumere, dimensiuneVector) };
// afișăm valorile dintre cei doi indexi
afisareVector(perecheIndexi, vectorNumere);
delete[] vectorNumere; // la final eliberăm memoria alocată mai sus
return 0;
}
int* creareVector(const size_t& dimensiuneVector)
{
int* vectorNumere = new int[dimensiuneVector];
// după ce am alocat memoria citim numerele
for (size_t i{}; i < dimensiuneVector; ++i) {
std::cout << "vectorNumere[" << i << "] = ";
std::cin >> vectorNumere[i];
}
return vectorNumere;
}
void afisareVector(const std::pair<size_t, size_t>& perecheIndexi, int vectorNumere[])
{
for (size_t i{ perecheIndexi.first }; i <= perecheIndexi.second; ++i) {
std::cout << vectorNumere[i] << (i != perecheIndexi.second ? " " : "");
}
}
std::pair<size_t, size_t> calculareIndexi(int vectorNumere[], const size_t& dimensiuneVector) {
int valMaxima{ INT_MIN }, valMinima{ INT_MAX };
size_t minIndex{}, maxIndex{};
// parcurgem vectorul
for (size_t i{}; i < dimensiuneVector; ++i) {
// dacă numărul curent este mai mic decât valoarea minimă
if (vectorNumere[i] < valMinima) {
valMinima = vectorNumere[i]; // actualizăm valoarea minimă
minIndex = i; // și-i salvăm index-ul
}
// la fel și aici, dacă numărul curent e mai mare decât valoarea maximă facem aceași chestie
if (vectorNumere[i] > valMaxima) {
valMaxima = vectorNumere[i];
maxIndex = i;
}
}
// la final avem grijă ca pe prima poziție să fie index-ul cel mai mic (pentru a putea afișa cum trebuie-n for)
// am folosit std::pair pentru a returna cei doi indexi deodată într-o pereche (altfel trebuiau 2 funcții separate / pasați prin referință)
return minIndex < maxIndex ? std::make_pair(minIndex, maxIndex) : std::make_pair(maxIndex, minIndex);
}
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Ne vedem curând și nu uitați să ne adăugați la marcaje!