1. Realice un programa en C que cree un array de N elementos de forma dinámica (utilizando la función calloc) e imprima: Suma de los elementos que se encuentran en posiciones pares del array. Producto de los elementos que se encuentran en posiciones impares. Recuerde liberar memoria. SOLUCIÓN: //pos_pares.c #include<stdio.h> #include<stdlib.h> void main() { int *num,ndatos,par=0,impar=0,i, suma=0,producto=1; printf("Introduzca el numero de elementos del array: "); scanf("%d",&ndatos); //Asignación de Memoria para el array de ndatos de tipo int num = (int *) calloc(ndatos,sizeof(int)); if(num==NULL) { puts("Insuficiente Espacio de Memoria"); exit(-1); } for(i=0;i<ndatos;i++) { printf("Introduzca el numero[%d]: ",i); scanf("%d",(num+i)); if(i%2 == 0) { par++; suma += *(num+i); } if(i%2 != 0) { impar++; producto *= *(num+i); } } printf("\n\nLISTA DE NUMEROS LEIDOS: "); for(i=0;i<ndatos;i++) { printf("%d ",*(num+i)); } printf("\n\nEL PRODUCTO DE LOS %d NUMEROS QUE SE ENCUENTRAN EN POSICIONES IMPARES ES: %d\n",impar,producto); printf("\nLA SUMA DE LOS %d NUMEROS QUE SE ENCUENTRAN EN POSICIONES PARES ES: %d\n",par,suma); //Liberación de Memoria free(num); 1 printf("\nMemoria Liberada\n"); } 2. Realice un programa en C que cree un array de N elementos de forma dinámica (utilizando la función malloc) e imprima: El producto de los elementos pares del array. La suma de los elementos impares del array. Recuerde liberar memoria. SOLUCIÓN: //elementos_par_impar.c #include<stdio.h> #include<stdlib.h> void main() { int *num,ndatos,par=0,impar=0,i, suma=0,producto=1; printf("Introduzca el numero de elementos del array: "); scanf("%d",&ndatos); //Asignación de Memoria para el array de ndatos de tipo int num = (int *) malloc(ndatos * sizeof(int)); if(num==NULL) { puts("Insuficiente Espacio de Memoria"); exit(-1); } for(i=0;i<ndatos;i++) { printf("Introduzca el numero[%d]: ",i); scanf("%d",(num+i)); if(*(num+i) %2 == 0) { par++; producto *= *(num+i); } if(*(num+i) %2 != 0) { impar++; suma += *(num+i); } } printf("\n\nLISTA DE NUMEROS LEIDOS: "); for(i=0;i<ndatos;i++) { printf("%d ",*(num+i)); } printf("\n\nEL PRODUCTO DE LOS %d NUMEROS PARES ES: %d\n",impar,producto); printf("\nLA SUMA DE LOS %d NUMEROS IMPARES ES: %d\n",par,suma); 2 //Liberación de Memoria free(num); printf("\nMemoria Liberada\n"); } 3. Realizar un programa que en C que cree un array de N elementos de forma dinámica (utilizando la función malloc), imprimir: Cuántos son ceros, cuántos son negativos, cuántos positivos. Suma de los números negativos y positivos del array. Recuerde liberar memoria. SOLUCIÓN: //pos_neg_neu.c #include<stdio.h> #include<stdlib.h> void main() { int *num,ndatos,i, pos=0,neg=0,neutro=0; printf("Introduzca el numero de elementos del array: "); scanf("%d",&ndatos); //Asignación de Memoria para el array de ndatos de tipo int num = (int *) malloc(ndatos * sizeof(int)); if(num==NULL) { puts("Insuficiente Espacio de Memoria"); exit(-1); } for(i=0;i<ndatos;i++) { printf("Introduzca el numero[%d]: ",i); scanf("%d",(num+i)); } printf("\n\nLISTA DE NUMEROS LEIDOS:"); for(i=0;i<ndatos;i++) { printf("%d ",*(num+i)); if(*(num+i) >0) pos++; else if(*(num+i) <0) neg++; else neutro++; } printf("\n\nHay %d numeros POSITIVOS\n",pos); printf("\nHay %d numeros NEGATIVOS\n",neg); printf("\nHay %d numeros NEUTROS\n",neutro); 3 //Liberación de Memoria free(num); printf("\nMemoria Liberada\n"); } 4. Realizar un programa en C que cree un array de N elementos de forma dinámica (utilizando la función malloc), para leer las calificaciones de los N estudiantes. Calcule e imprima el porcentaje de aprobados y reprobados tomando en cuenta que la calificación mínima para aprobar es 60 pts. Recuerde liberar memoria. SOLUCIÓN: //aprob_rep.c #include<stdio.h> #include<stdlib.h> void main() { int *num,nest,i,ap=0,rep=0; float pap,prep; printf("Introduzca el numero de estudiantes: "); scanf("%d",&nest); //Asignación de Memoria para el array de ndatos de tipo int num = (int *) malloc(nest * sizeof(int)); if(num==NULL) { puts("Insuficiente Espacio de Memoria"); exit(-1); } for(i=0;i<nest;i++) { printf("Calificacion[%d]: ",i); scanf("%d",(num+i)); if(*(num+i) >=60) ap++; else rep++; } printf("\n\nCALIFICACIONES LEIDAS:"); for(i=0;i<nest;i++) { printf("%d ",*(num+i)); } pap= (ap*100)/nest; prep=(rep*100)/nest; printf("\n\nHAY %d ESTUDIANTES APROBADOS Y REPRESENTAN:%.f%%\n",ap,pap); printf("\nHAY %d ESTUDIANTES REPROBADOS Y REPRESENTAN:%.f%%\n",rep,prep); //Liberación de Memoria free(num); 4 printf("\nMemoria Liberada\n"); } 5. Realice un programa en C que cree un array de N elementos de forma dinámica (utilizando la función malloc) e imprima: El promedio de los elementos leídos en el array. Lista con los elementos del array cuyo valor sea mayor o igual que el promedio. Recuerde liberar memoria. SOLUCIÓN: //promedio.c #include<stdio.h> #include<stdlib.h> void main() { int *num,ndatos,i, promedio,suma=0,may=0; printf("Introduzca el numero de elementos del array: "); scanf("%d",&ndatos); //Asignación de Memoria para el array de ndatos de tipo int num = (int *) malloc(ndatos * sizeof(int)); if(num==NULL) { puts("Insuficiente Espacio de Memoria"); exit(-1); } for(i=0;i<ndatos;i++) { printf("Introduzca el numero[%d]: ",i+1); scanf("%d",(num+i)); suma += *(num+i); } promedio = suma / ndatos; printf("\n\nLISTA DE NUMEROS LEIDOS:"); for(i=0;i<ndatos;i++) { printf("%d ",*(num+i)); if(*(num+i) >= promedio) may++; } printf("\nHay %d numeros >= que %d (Promedio)\n\n",may,promedio); //Liberación de Memoria free(num); printf("Memoria Liberada\n"); } 5