[ Foro de C# ]

duda con vectores: mayor valor

26-Oct-2013 01:49
Invitado (joe)
1 Respuestas

hola si alguien me pueda ayudar en una duda!! estoy estudiando c# y me quede en la parte de vectores mayor y menor elemento .No logro comprender la explicación:

Definimos los dos vectores paralelos donde almacenaremos los nombres y los sueldos de los operarios:
private string[] nombres;
private float[] sueldos;
Creamos los dos vectores y procedemos a cargar sus elementos:
nombres=new string[5];
sueldos=new float[5];
for(int f=0;f < nombres.Length;f++)
{
Console.Write("Ingrese el nombre del empleado:");
nombres[f] = Console.ReadLine();
Console.Write("Ingrese el sueldo:");
string linea;
linea = Console.ReadLine();
sueldos[f]=float.Parse(linea);
}
Para obtener el mayor sueldo y el nombre del operario realizar los siguientes pasos:
Inicializamos una variable mayor con la primer componente del vector sueldos:
mayor=sueldos[0];
Inicializamos una variable pos con el valor 0, ya que decimos primeramente que el mayor es la primer componente del vector:
pos=0;
Recorremos las componentes del vector que faltan analizar, o sea, de la 1 a la 4:
for(int f=1;f < nombres.Length;f++)
Accedemos a cada componente para controlar si supera lo que tiene la variable mayor:
if (sueldos[f] > mayor)
En caso de ser verdadera la condición asignamos a la variable mayor este nuevo valor sueldos[f]
mayor=sueldos[f];
y a la variable pos le cargamos la variable f que indica la componente que estamos analizando:
pos=f
Cuando salimos de la estructura repetitiva imprimimos la variable mayor que contiene el mayor sueldo y para imprimir el nombre del operario conociendo la posición del mayor sueldo imprimimos el elemento que ocupa la posición que indica la variable pos en el vector paralelo:
Console.WriteLine("El empleado con sueldo mayor es "+nombres[pos]);
Console.WriteLine("Tiene un sueldo:"+mayor);

" No entiendo bien la funcion de la variables mayor y pos para que verifique cual es el vector mayor alguien me podria ayudar"


27-Oct-2013 11:47
Nacho Cabanes (+30)

En primer lugar, has publicado tu pregunta 3 veces. Si preguntas como anónimo, tu pregunta no aparecerá hasta que algún moderador la autorice. Eso puede tardar varias horas, según la zona horaria en que estés, así que deberás tener paciencia. Si no quieres esperar tanto a que la duda sea visible, siempre puedes registrarte.

En segundo lugar, olvídate de vectores paralelos y ve a lo sencillo. Para las primeras pruebas, yo te recomendaría que ni siquiera pidieras datos al usuario, sino que estuvieran prefijados, y así te será más fácil hacer comprobaciones:

 
int[] datos = {200, 350, 100, -50, 300};
 


Para seguir: la forma habitual de encontrar el mayor es sencilla. Tomas el primer valor como "mayor provisional". A partir de ahí, vas comparando todos los demás valores con ese "mayor provisional". Si un valor es mayor que el "mayor provisional", ese deberá pasar a ser el nuevo "mayor provisional":

 
int mayor = datos[0];
for (int i=1; i<datos.Length; i++)
{
  if (datos[i] > mayor)
    mayor = datos[i];
}
Console.Write(mayor);
 



Completa y prueba ese ejemplo para ver si te funciona y si lo entiendes, y de ahí ya pasamos a ver por qué "ese pos" y las diferencias con vectores paralelos.

Finalmente, recuerda que en estas mismas páginas tienes una introducción a C#:

http://www.aprendeaprogramar.com/course/view.php?id=23

Y si quieres algo más exhaustivo, puedes descargar la versión PDF desde mi página web (calcular el mayor elemento de un vector es el ejercicio 4.1.1.3, y en la versión PDF tienes las "pistas" de cómo hacerlo, que son las mismas que te he dado más arriba):

http://www.nachocabanes.com/csharp/






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)