Hola, gracias por contestar! Mirá, si pongo OR || en el if no me sale del ciclo do while, porque es esto? Que tiene de malo la funcion de los primos? Arregle lo de promimp igual me sigue dando los mismo errores, una mano mas es mucho pedir?
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú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.
#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;}