tu codigo tiene muchos errores :s como compila?
Directamente no compila. No se ha molestado ni tan siquiera en corregir los errores de compilación:
int e=100;
double v[e];
double u[e];
Para que esto compile, "e" debe ser constante... y no lo es... o pones "e" como constante o usas new y delete para crear y destruir los vectores.
if (u==2){
u es un arreglo... no se puede comparar con un entero así por las buenas... no tiene sentido... ¿Qué intentas comprobar aquí? ¿La posición de memoria? ¿El valor del primer elemento de "u"?
u=0;}
Lo mismo que en el apartado anterior. "u" es un arreglo o vector... ¿Pretendes cambiar el valor de algún elemento concreto? ¿La dirección apuntada por el arreglo? ¿?
v = rand () % (N-M+1) + M;
u = rand () % (T-Y+1) + Y;
No puedes convertir así a bote pronto un entero en un arreglo... estamos ante el mismo problema que en los dos casos anteriores... para acceder a una posición concreta de un arreglo, en tu caso "u" y "v", tienes que usar un índice ( u[0]=3, almacenamos un 3 en la primera posición del vector "u" )... obviamente ese índice puede venir dado por una variable:
for ( int i=0; i < 4; i++ )
u[ i ] = i * 2;
Además de todo esto, no queda claro si los valores de 1 y -1 vienen determinados por alguna expresión matemática o, como se puede intentar adivinar, simple azar.Para sacar únicamente valores 1 y -1 hay varias opciones:
// una opcion
v[ i ] = ( rand( ) % 2 ) ? 1 : -1;
// otra
int valores[] = { 1, -1 };
v[ i ] = valores[ rand( ) % 2 ];
// otra
v[ i ] = -1 + 2 * ( rand( ) % 2 );
// esta suponiendo que v es un vector de tipo int, no float
v[ i ] = 1 ^ ( 0xFFFFFFFE * ( rand( ) % 2 ) );
No hay límites a la imaginación.