Bueno, a ver...
La verdad es que el lenguaje C no es lo mío, lo conozco muy por encima...
Aquí he escrito un código que, usando dos funciones para generar distintos tipos de aleatorios, se crean, rellenan y muestran ambos vectores.
No se si es el código más adecuado, ya digo que estoy poco familiarizado con C, pero parece funcionar.
Sería maravilloso que alguien con mejores capacidades nos diera su opinión.
Faltarían los puntos 4) y 5). Inténtalos, a ver hasta donde puedes llegar.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int generaImpar5_15(); //Función que genera un impar entre 5 y 15
int generaImpar20_40(); //Función que genera un impar entre 20 y 40, y que no acaba en 5
int main()
{
srand(time(NULL));
//Creamos vectores
int longitud = generaImpar5_15();
int vector1[longitud], vector2[longitud];
//Rellenamos
for (int i = 0; i < longitud; i++) {
vector1[i] = generaImpar20_40();
vector2[i] = generaImpar20_40();
}
//Los mostramos
printf("Vector 1:\n");
for (int i = 0; i < longitud; i++) {
printf("%d ", vector1[i]);
}
printf("\nVector 2:\n");
for (int i = 0; i < longitud; i++) {
printf("%d ", vector2[i]);
}
return 0;
}
int generaImpar5_15() {
int impar;
do {
impar = 5 + (rand() % 11);
} while (impar % 2 == 0); //Si es par, se repite el bucle
return impar;
}
int generaImpar20_40() {
int imparNo5;
do {
imparNo5 = 20 + (rand() % 21);
} while(imparNo5 % 2 == 0 || imparNo5 % 5 == 0);//Si es par, o impar múltiplo de 5, se repite el bucle
return imparNo5;
}