Ayuda errores en codigo en lenguaje c.

Iniciado por Roga, 28 Mayo 2017, 02:13 AM

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

Roga

#10
Gracias! Asi quedo el codigo final.
/*Cargar un vector de "n" posiciones con numero enteros, a partir de este crear 2 vectores; uno con los números pares y el otro con los numero impares,
además decir cuál de los vectores es más grande y el promedio de los elementos en cada vector.*/
#include <stdio.h>
#include <stdlib.h>
void crear(int numerosa[],int n);
int main(){
int vector,n;
printf("Cargue 1 lista para crear 2 nuevas con los numeros pares e impares y decir cual vector es mas grande y el promedio de ambos.");
printf("\nIngrese el numero de valores que desee cargar:");
scanf("%d",&n);
int *numerosa=malloc(sizeof(int)*n);
while(n<=0){
printf("\nValor invalido. Ingrese de nuevo.\nIngrese el numero de valores que desee cargar:");
scanf("%d",&n);
int *numerosa=malloc(sizeof(int)*n);
}
printf("\nLista 1.\n\n");
for(vector=0;vector<n;vector++){
printf("Ingrese el valor %d:",vector+1);
scanf("%d",&numerosa[vector]);
}
crear(numerosa,n);
printf("\n\n");
system("pause");
return 0;
}
void crear(int numerosa[],int n){
int vector,pares,impares,aux,y;
float promedioa,promediob,promedioc,suma;
char *mayor;
promedioa=0;
promediob=0;
promedioc=0;
aux=0;
pares=0;
impares=0;
//contabilizar pares e impares
for(vector=0;vector<n;vector++){
y=numerosa[vector]%2;
if(y==0){
pares++;
}
else{
impares++;
}
}
int *numerosb=malloc(sizeof(int)*pares);
int *numerosc=malloc(sizeof(int)*impares);
//crear 2 y 3
pares=0;
impares=0;
for(vector=0;vector<n;vector++){
y=numerosa[vector]%2;
if(y==0){
numerosb[pares]=*(numerosa+vector);
pares++;
}
else{
numerosc[impares]=*(numerosa+vector);
impares++;
}
}
// mayor
if(pares>impares){
char p[]={'p','a','r'};
mayor=p;
}
if(pares<impares){
char i[]={'i','m','p','a','r'};
mayor=i;
}
if(pares==impares){
char ni[]={'n','i','n','g','u','n','a'};
mayor=ni;
}
//el promedio vector a
suma=0;
for(vector=0;vector<n;vector++){
suma+=numerosa[vector];
}
promedioa=(suma/n);
//el promedio vector b
if(pares>0){
suma=0;
for(vector=0;vector<pares;vector++){
suma+=numerosb[vector];
}
promediob=(suma/pares);
}
//el promedio vector c
if(impares>0){
suma=0;
for(vector=0;vector<impares;vector++){
suma+=numerosc[vector];
}
promedioc=(suma/impares);
}
//imprimir
if(n>0){
printf("\n\nLista 1\t\tLista 2\t\tLista 3");
for(vector=1;vector<=n;vector++){
if(vector<=pares&&vector<=impares){
printf("\n%d\t\t%d\t\t%d",numerosa[vector-1],numerosb[vector-1],numerosc[vector-1]);
}
if(vector>pares&&vector<=impares){
printf("\n%d\t\t\t\t%d",numerosa[vector-1],numerosc[vector-1]);
}
if(vector<=pares&&vector>impares){
printf("\n%d\t\t%d\t\t\t",numerosa[vector-1],numerosb[vector-1
]);
}
if(vector>pares&&vector>impares){
printf("\n%d\t\t\t\t\t\t",numerosa[vector-1]);
}
}
printf("\nPromedio.\n%.1f\t\t%.1f\t\t%.1f",promedioa,promediob,promedioc);
if(*mayor=='p'||*mayor=='i'){
printf("\n\nLa lista mas larga creada es la %s.",mayor);
}
else{
printf("\n\nLa lista mas larga creada es %s.",mayor);
}
}
free(numerosa);
free(numerosb);
free(numerosc);
}


aprendi con este ejercicio malloc y free. Y calcular promedio de ese modo. muchas gracias a todos.