elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Ayuda con ejercicio! POR FAVOR! en: 8 Mayo 2016, 21:28 pm
Hola gente como estan? Espero que bien, veran yo estoy cursando Elementos de Programacion en la UNLAM, la cuestion es que me tope con este ejercicio que no puedo resolver
Citar
Se ingresar valores positivos entre 1 y 50, finalizando el ingreso con el valor -10, para ello generar una función que valide dicho ingreso.
Calcular:

Cuantos números son primos.
Cantidad de números pares.
Promedio de los números impares.
Utilizar las siguientes funciones:

Resto: recibe por parámetro el Dividendo y el Divisor ; Retorna el resto
EsPar: recibe por parámetro un número; Retorna 1 si es Par, 0 si es Impar ; Invoca a la función Resto
EsPrimo: recibe por parámetro un número; Retorna 1 si es primo, 0 si no es primo ; Invoca a la función Resto. (un número es primero si solo es divisible por 1 y por sí mismo)
Promedio: recibe por parámetro la suma y el contador; Retorna el promedio si contador > 0 sino Retorna 0.

y yo llegue a esto

Código:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{int num,numv,cont_primos=0,cont_pares=0,cont_impares=0,acumimp=0,promimp;

    printf("Ingrese numeros entre 1 y 50, -10 para terminar  ");
    scanf("%d", &num);
numv=validar(num,1,50,-10);
while(numv!=-10)
{
    if(ESPRIMO(numv)==1)
        {cont_primos++;}
    if(ESPAR(numv)==1)
        {cont_pares++;}
        else
        {acumimp=acumimp+numv;
        cont_impares++;
        promimp=acumimp/cont_impares;}

printf("Ingrese numeros entre 1 y 50, -10 para terminar  ");
scanf("%d", &num);
numv=validar(num,1,50,-10);
}
printf("Numeros primos:%d\nNumeros pares:%d\nPromedio impares:%d\n", cont_primos, cont_pares, promimp);
getch();
}

int validar(int NRO, int minimo,int maximo,int cierre)
{if(NRO<minimo&&NRO>maximo||NRO!=cierre)
    {do
    {printf("Ingrese numeros entre 1 y 50, -10 para terminar  ");
    scanf("%d",&NRO);
    }while (NRO<minimo&&NRO>maximo||NRO!=cierre);
    return NRO;}
    else {return NRO;}
}

int RESTO(int a, int b)
{int resto;
    resto=a%b;
return resto;
}

int ESPRIMO(int NRO)
{int contdiv=0,i,valor;
     for(i=2;i<NRO;i+=1)
        if(RESTO(NRO,i)==0)
        {contdiv++;
            }
    if(contdiv==0)
        valor=1;
    else
        valor=0;
return valor;
}

int ESPAR(int NRO)
{int res,valor;
    res=RESTO(NRO,2);
    if(res=0)
    {
        valor=1;
    }
    else {valor=0;}
return valor;}

Estamos viendo funciones como veran, la cuestion es que no me cuenta ni los nros pares ni los primos, ademas de que siempre sin importar que numero ponga el promedio de impares es 2293652, no encuentro el error si serian tan amables de darme una mano!

Gracias!

Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines