Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

Vector en Dev C++

Desde
23 Abr 2010
Mensajes
29
Hola bakunos... tengo una duda y solo en este subforo encaja un poco...

Es sobre programacion, la llevo en la prepa y es algo dificil en ocasiones de entender...

Nos hacen utilizar Dev C++.

Bien, me encargaron que realizara un programa con las siguientes caracteristicas.

*Es un programa donde utilizamos vectores.
*El programa consiste en ingresar un vector de "n" posiciones (o lo que sean).
*Despues debe mostrar en pantalla los numeros que pertenecen al vector y tambien mostrar la mediana del vector (osease el numero que esta enmedio de las posiciones).

Ahora, el problema es que no se como realizarlo, ya logre hacer un programa similar, solo que este si contenia un numero determinado de posiciones, eran 9 posiciones, y tambien logre sacar la mediana.

Pero ahora nose como realizarlo sino conosco el tamaño del vector.

De antemano gracias, y si esta mal ubicado el tema, no duden en borrarlo o moverlo.

Saludos.


EDIT. (Ese es el primer programa donde el vector tiene 9 posiciones).

#include <conio.h>
#include <iostream.h>
int v[9],i;
main()
{
for(i=0;i<=8;i++)
{
cout<<"Ingresa Tus Numeros: "<<endl;
cin>> v;
system ("CLS");
}
for(i=0;i<=8;i++)
{
cout<<"Numeros Del Vector: "<<v<<endl;
}
cout<<"\n\nNumero Mediana: "<<v[4]<<endl;
getch();
}
 
Hay varias maneras de hacerlo pero vámonos con la más simple.

Primero declara un vector un tanto grande. Puede ser int v[50], int v[100], etc. Con esto sólo estás reservando el espacio en memoria de un vector de números enteros que puede albergar 50 y 100 datos, respectivamente (no es necesario que lo llenes por completo).

En el programa pide el número de datos a ingresar, digamos 9 (declara este valor de n como entero) y comienza a pedir que ingrese los datos tal como tienes en el programa que muestras. Nada más que ahora va a ser un ciclo for de i = 0 a i < n (9 en este caso y nota que es de 0 a menor a 9, no de 0 a menor o igual a 9, sino vas a pedir 10 datos en vez de 9).

Ahora, el cálculo de la mediana no es tan sencillo como muestras en tu programa. Tu código sólo sirve para datos sin agrupar cuando n es impar y los datos están ordenados en orden ascendente. Para más información: http://es.wikipedia.org/wiki/Mediana_(estad%C3%ADstica)

Si así es especificamente como te lo pidieron sólo necesitas hacer una pequeña operación en la que tendrías que dividir n/2 y ese sería la posición de tu vector en la que aparece la mediana. Recuerda que estás declarando valores enteros y al hacer la operación en enteros de 9/2 el resultado es 4, no 4.5 porque estás desechando los decimales al declarar n como entero y sólo te quedas con la parte entera.

Ahora solo imprime en pantalla el valor de la posición n/2 en el vector y listo. Recuerda que sólo sirve con las indicaciones que mencioné antes, si son un número impar de datos o no están en orden ascendente, el cálculo es completamente distinto. Suerte.
 
Leyendo tu problema , y la solucion que te da el compañero, digo que no es la mejor ya que lo que tu necesitas o al menos veo, para hacer tu programa mas eficiente debes de usar memoria dinamica y aparte la funcion strlen que mide la longitud de la cadena terminada en nulo y asi poder dividir esa longitud en dos.

Mano, yo sé que no es la solución óptima pero el compañero apenas está aprendiendo a programar y tiene broncas con problemas de arreglos (vectores) sencillos. No le puedes dar una solución donde asigne memoria dinámica a través de apuntadores (que por cierto, ya son estructuras de datos y no arreglos). Además el usar una función de cadena como strlen no veo como solucionaria el problema. Su problema es con longitud de vectores enteros, no con cadenas de caracteres.
 
Volver
Arriba