Enunciado
La función Max1 devuelve el valor máximo de los elementos del vector. El algoritmo se basa en suponer que el máximo valor es el que está en la primera posición y luego comparar los elementos de la segunda a la última posición actualizando el máximo cada vez que se encuentra un elemento mayor.
La función Max2 devuelve la posición del elemento máximo del vector.
El procedimiento Max3 devuelve el valor máximo de los elementos de un vector (max), la cantidad de veces que este valor aparece en el vector (c) y las posiciones en donde se encuentra (pos). Dado que el máximo puede aparecer en el vector entre 1 y a lo sumo n veces, pos debe ser un vector.
Para buscar un valor mínimo, los algoritmos son idénticos salvo que, en lugar de averiguar si el elemento del vector es mayor a la variable auxiliar (max), preguntaríamos si es menor a esa variable auxiliar, que en este caso la llamaríamos min.
Código
Python
Video: Búsqueda del Máximo / Mínimo
def Max1( v ):
max = v[0]
for i in range( len( v ) ):
if max < v[i]:
max = v[i]
return max
def Max2( v ):
p = 0
for i in range( len( v ) ):
if v[p] < v[i]:
p = i
return p
def Max3( v ):
c = 0
p = []
for i in range ( 0, len( v ) ):
if v[i]>v[c]:
p = []
c = i
p.append(i)
elif v[i]==v[c]:
p.append(i)
return p
def main():
print( "Ingresar/Enter vector ", end="" )
print( "(5 elementos/elements): " )
v=[]
for i in range( 5 ):
v.append( int( input() ))
print( "\nMayor elemento/Largest element: ",
Max1( v ) )
p = Max2( v )
print( "\nMayor elemento/Largest element: ",
v[p], "\nPosicion/Position: ", p+1 )
vp = Max3( v )
print( "\nMayor elemento/Largest element: ",
v[vp[0]], "\nPosicion/Position:" )
for i in range( len( vp )):
print( vp[i]+1 )
input( "Presionar/Press Enter to exit " )
main()
C++
#include <iostream>
#include <iomanip>
using namespace std ;
#include <conio.h>
float Max1 ( float v[ ], int n )
{
int i ; float max ;
max = v[ 0 ] ;
for ( i = 1 ; i < n ; i++ )
if ( max < v[ i ] )
max = v[ i ] ;
return max ;
}
void Max2 ( float v[ ] , int n , int* p )
{
int i ;
*p = 0 ;
for ( i = 1 ; i < n ; i++ )
if ( v[ *p ] < v[ i ] )
*p = i ;
}
void Max3 ( float v[ ] , int n ,
float* max , int p[ ] , int* c )
{
int i ;
*max = v[ 0 ] ;
*c = 0 ;
p[ *c ] = 0 ;
for ( i = 1 ; i < n ; i++ )
if ( *max < v[ i ] )
{
*max = v[ i ] ;
*c = 0 ;
p[ *c ] = i ;
}
else
if ( *max == v[ i ] )
{
*c = *c + 1 ;
p[ *c ] = i ;
}
*c = *c + 1 ;
}
int main ()
{
int i, p, n, vp[10] ;
float v1[10], elem ;
cout << "Ingresar/Enter vector " ;
cout << "(5 elementos/elements): " << endl ;
for ( i=0; i<5; i++ )
cin >> v1[i] ;
cout << endl << "Mayor elemento/Largest element: "
<< Max1( v1, 5 ) << endl << endl ;
Max2( v1, 5, &p ) ;
cout << endl << "Mayor elemento/Largest element: "
<< v1[p] << endl << "Posicion/Position: "
<< p+1 << endl << endl ;
Max3( v1, 5, &elem, vp, &n ) ;
cout << endl << "Mayor elemento/Largest element: "
<< elem << endl << "Posicion/Position: " ;
for ( i=0; i<n; i++ )
cout << endl << setw(10) << vp[i]+1 ;
cout << endl ;
cout << "Presionar/Press Enter to exit " ;
getch() ;
return 0 ;
}
Pascal
program EjemploVector ;
uses crt ;
type
rango = 0..20 ;
vecInt = array [rango] of integer ;
vecRan = array [rango] of rango ;
vecStr = array [rango] of string[30] ;
var
v1: vecInt ;
vp: vecRan ;
p, n, i: rango ;
elem: integer ;
Procedure CargarVector( n: rango; var v: vecInt ) ;
var
i: rango ;
begin
for i:=1 to n do
begin
write( 'Ingresar elemento ', i, ': ' ) ;
readln( v[i] ) ;
end;
end;
Procedure MostrarVector( n: rango; var v: vecInt ) ;
var
i: rango ;
begin
for i:=1 to n do
begin
writeln(i:10,v[i]:14) ;
end ;
end ;
Procedure Max1( n: rango; var v: vecInt;
var max: integer ) ;
var
i: rango ;
begin
max := v[1] ;
for i:=2 to n do
if v[i]>max
then
begin
max := v[i] ;
end ;
end ;
Procedure Max2( n: rango; var v: vecInt;
var p: rango ) ;
var
i: rango ;
begin
p := 1 ;
for i:=2 to n do
if v[i]>v[p]
then
begin
p := i ;
end ;
end ;
Procedure Max3( n: rango; var v: vecInt;
var max: integer; var p: vecRan;
var c: rango ) ;
var
i: rango ;
begin
c := 1 ;
max := v[c] ;
p[c] := c ;
for i:=2 to n do
if v[i]>max
then
begin
max := v[i] ;
c := 1 ;
p[c] := i ;
end
else if v[i]=max
then
begin
c := c+1 ;
p[c] := i ;
end;
end;
begin
ClrScr;
write( 'Ingresar/Enter vector ' ) ;
writeln( '(5 elementos/elements): ' ) ;
CargarVector( 5, v1 ) ;
writeln ;
writeln( 'Vector' ) ;
MostrarVector( 5, v1 ) ;
readkey ;
Max1( 5, v1, elem ) ;
writeln ;
writeln( 'Mayor elemento/Largest element: ',
elem ) ;
readkey ;
Max2( 5, v1, p ) ;
writeln ;
writeln( 'Posicion/Position: ', p ) ;
readkey ;
Max3( 5, v1, elem, vp, n ) ;
writeln ;
writeln( 'Mayor elemento/Largest element: ',
elem ) ;
writeln( 'Posicion/Position: ' ) ;
For i:=1 to n do
begin
writeln( vp[i]:18 ) ;
end ;
writeln ;
writeln( 'Presionar/Press Enter to exit ' ) ;
readkey ;
end.
Diagramas
Subprogramas





