Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- INICIO
- Si Cini<Cfin-1, hacer:
- mitad = Parte entera de (Cini+Cfin)/2
- [Max1, Min1]= MaximoMinimoDV (A, Cini, mitad)
- [Max2, Min2]= MaximoMinimoDV (A, mitad+1, Cfin)
- Max= Máximo(Max1, Max2);
- Min= Mínimo(Min1, Min2);
- En otro caso, hacer:
- si A[Cmin]>A[Cmax]
- Max = A[Cmin] ; Min = A[Cmax]
- en otro caso
- Max = A[Cmax] ; Min = A[Cmin]
- Fin-En otro caso
- Fin-En otro caso
- FIN-Algoritmo
- int* MaxMin(int *A, const int Cini, const int Cfin) {
- int *v1,*v2;
- v1=new int [2]; // v1[max1,min1]
- v2=new int[2]; // v2[max2,min2]
- if (Cini<Cfin-1)
- {
- int mitad= (Cini-Cfin)/2;
- v1=MaxMin(A,0,mitad);
- v2=MaxMin(A,mitad+1,4);
- int max=maximo(v1[0],v2[0]); //devuelve max de 2 num
- int min=minimo(v1[1],v2[1]); //devuelve min de 2 num
- }
- if (Cini=Cfin-1)
- {
- if (A[Cini]>A[Cfin]{
- max=A[Cini];
- min=A[Cfin];
- }else
- {
- max=A[Cfin];
- min=A[Cini];
- }
- }else
- max=A[Cini];
- min=max;
- }
- if (Cini=Cfin-1)
- Cini = Cfin-1;
- if (Cini)
- error: assignment of read-only parameter 'Cini'
- if (Cini=Cfin-1)
- ^
- if (Cini==Cfin-1)
- if (A[Cini]>A[Cfin]{
- error: expected ')' before '{' token
- if (A[Cini]>A[Cfin]{
- ^
- if (a[Cini]>A[Cfin]){
- error: 'max' was not declared in this scope
- max=A[Cini];
- ^
- if (Cini<Cfin-1)
- { // <<--- Inicio del ambito
- int mitad= (Cini-Cfin)/2;
- v1=MaxMin(A,0,mitad);
- v2=MaxMin(A,mitad+1,4);
- int max=maximo(v1[0],v2[0]); //devuelve max de 2 num
- int min=minimo(v1[1],v2[1]); //devuelve min de 2 num
- } // <<--- Fin del ambito (max y min dejan de existir)
- int max, min;
- if (Cini<Cfin-1)
- // ...
- }else
- max=A[Cini];
- min=max;
- }
- int* MaxMin(/*...*/) {
- // ...
- }else{
- max=A[Cini];
- min=max;
- }
- }
- int mitad = (Cini-Cfin)/2;
- int mitad = (Cfin-Cini)/2;
- Cini = 0, Cfin = 10 => (10-0)/2 = 5 -> OK
- Cini = 5, Cfin = 10 => (10-5)/2 = 2 -> ¿en serio?
- int mitad = Cini + (Cfin-Cini)/2;
- int* MaxMin(int *A, const int Cini, const int Cfin) {
- template<typename ITERATOR>
- auto MinMax(ITERATOR begin, ITERATOR end);
- template<typename ITERATOR>
- auto MinMax(ITERATOR begin, ITERATOR end)
- {
- if (auto distance = std::distance(begin, end); distance <= 1)
- {
- return std::tuple{std::min(*begin, *end), std::max(*begin, *end)};
- }
- else
- {
- auto half = distance / 2;
- auto [min_l, max_l] = MinMax(begin, begin + half);
- auto [min_r, max_r] = MinMax(begin + half + 1, end);
- return std::tuple{std::min(min_l, min_r), std::max(max_l, max_r)};
- }
- }
- /* La separación entre begin
- y end es de 1 o 0
- vvvvvvvvvvvvv <--- elementos */
- if (auto distance = std::distance(begin, end); distance <= 1)
- // ~~~~~~~~~~~~~~~~~~~~~~~~~ <--- Distancia entre begin y end
- return std::tuple{std::min(*begin, *end), std::max(*begin, *end)};
- auto half = distance / 2;
- auto [min_l, max_l] = MinMax(begin, begin + half);
- auto [min_r, max_r] = MinMax(begin + half + 1, end);
- return std::tuple{std::min(min_l, min_r), std::max(max_l, max_r)};
- unsigned u[]{0,1,2,3,4,5,6,7,8, ... ,36,37,38,39,40};
- MinMax(std::begin(u), std::end(u) - 1);
- std::vector<double> d{387461298.3,76.340, ... ,6.90,3.6,3.4,63.4,98.7};
- MinMax(std::begin(d), std::end(d) - 1);
- std::string panagrama{"Benjamin pidio una bebida de kiwi y fresa. Noe, sin verguenza, la mas exquisita champanya del menu."};
- MinMax(std::begin(panagrama), std::end(panagrama) - 1);
Add Comment
Please, Sign In to add comment