Recomendaciones antes de darte la solucion.
Si es muy comun vengan aqui preguntan por su tarea, y no hay problema cuando se tiene tiempo se les ayuda, sin embargo lo que no acepto es que vengan con un código copiado/pegado de quien sabe cuantas fuentes distintas. (Si se va a copiar un codigo es por que lo entiendes y no tienes dudas de que hacada una de sus instrucciones)
Tienes tanto "printf" como "cout", esto denota que has copiado y pegado el codigo de distintas fuentes de programacion, ademas se notan estilos de programacion diferente. Ademas las funciones de adorno como SetConsoleTextAttribute entre otras son incesarias, te estan enseñando a programar no a diseñar, asi que podrias presindir de ellas para hacer la tarea un poco mas sencilla.
El problema de tu codigo radica en que copiaste o tu mismo hiciste un codigo que esta mal, no considera los arreglos de forma correcta, esto es no empiezas desde la poscion 0.
En programacion empezamos a contar desde 0 como el primer elemento. Con exepcion de Visual Mi3rd4 que si lo hace apartir de la posicion 1 para el primer element
Si tienes un arreglo de 4 elementos ej.
int Arreglo[4];
Lo ideal hacer un FOR o While para Rellenarlo empezando desde la posicion 0 hasta la poscion 3.
Cuenta conmigo:
arreglo[0] = 1; //La posicion 0 del arreglo es el primer elemento del mismo
arreglo[1] = 2; //La posicion 1 del arreglo es el segundo elemento del mismo
arreglo[2] = 3; //La posicion 2 del arreglo es el tercer elemento del mismo
arreglo[3] = 4; //La posicion 3 del arreglo es el cuarto elemento del mismo.
En tu codigo tienes un FOR donde inicias a la variable 'i' desde 1 hasta menor o igual a 4.
Cuando realmente deberia de inicialzarse en 0 hasta menor que 4
Tu codigo:
Cuando deberia de ser lo siguiente para todos los FOR desde donde los capturas hasta donde los imprimes
La razon por la cual salen valores no validos es por que estas leyendo en posiciones de memoria que estan siendo utilizadas por otras variables.
Saludos!