Mostrar pares e impares en dos arreglos

Iniciado por gonezq, 27 Febrero 2021, 00:51 AM

0 Miembros y 1 Visitante están viendo este tema.

gonezq

Tengo un problema que no puedo resolver.

1- ingresar 16 numeros tipo entero por teclado.
2- separar pares e impares en dos vectores diferentes y mostrarlos en pantall. solo debera ajustarse a la cantidad de numeros pares o impares que hayan sido ingresados desde el vector general ( entre 0 y 16)
3- calcular promedio de los vectores "par, impar y general" y mostrarlos en pantalla.
4- determinar el valor mayor y el menor del vector general y mostrar en pantalla el numero y las posiciones en las que fueron ingresados.
5- ordenar el vector general de menor a mayor y mostrarlo en pantalla.
6- salir

lo que voy haciendo es lo siguiente:

int main(int argc, char *argv[]) {

int num[16], opc, par=0, impar=0, i=0, j=0;
int parv[par], imparv[impar];
int aux = 0, auxp=0, auxi=0;

do{
printf("\n\n1.Ingresar 16 numeros.\n");
printf("2.Mostrar pares e impares.\n");
printf("3.Promedio de pares impares y general.\n");
printf("4.Valores mayores y menores.\n");
printf("5.Numeros ordenados de menor a mayor\n");
printf("6.Salir\n\n");
scanf("%i", &opc);

switch(opc){

case 1:

for( i=0; i<16; i++){
printf("\nNro %i: ", i+1);
scanf("%i", &num[i]);

if(num[i]%2==0){
par++;

}else{
impar++;
}

}


for(i=0;i<16;i++){



if(num[i]%2!=0){
imparv[auxi]=num[i];
auxi++;
}


}



break;

case 2:


printf("Numeros pares: \n\n");




for(i=0;i<par;i++){
printf("%, ", parv[i]);
}




printf("\n\nNumeros impares: \n\n");





for(i=0;i<impar;i++){
printf("%, ", imparv[i]);
}



break;
case 3:
break;
case 4:
break;
case 5:
break;
}











}while(opc !=6);







return 0;
}





Utilizar etiquetas para el codigo

AlbertoBSD

Esta parte del codigo no es asi:

int num[16], opc, par=0, impar=0, i=0, j=0;
int parv[par], imparv[impar];


No puedes declarara un arreglo con longitud 0.

Tienes 2 opciones  puedes declarar parv y imparv como un apuntador y luego utilizar memoria dinamica para asignar la memoria quedaria mas o menos asi:

int *parv,*impar;
/*codigo aqui hasta saber la cantidad especifica de pares e impares*/
parv = calloc(par,sizeof(int));
imparv= calloc(impar,sizeof(int));

for(i=0;i<16;i++){
if(num[i]%2!=0){
imparv[auxi]=num[i];
auxi++;
}
else{
parv[aux_par]=num[i];
aux_par++;
}
}
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW