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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Porcentaje de numeros primos en un vector
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Porcentaje de numeros primos en un vector  (Leído 2,937 veces)
ulbdan

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Porcentaje de numeros primos en un vector
« en: 22 Enero 2017, 07:09 am »

Hola a todos, resulta que soy principiante en esto de la programación y tengo que hacer un programa en que me genere de forma aleatoria una cantidad n (ingresada por el usuario) de números y que de todos esos números generados me salga el porcentaje de cuantos son números primos. Tengo ya generados los números lo que me falta es el porcentaje pero no me sale porfa ayudenme.
Esto es lo que he hecho hasta ahora:

Código
  1. #include<stdio.h>
  2. #define LONG_VECTOR 20
  3.  
  4. char validar(int n);
  5. void generarValores(int a[],int n);
  6. void imprimirValores(int a[],int n);
  7. float porcentajePrimos(int a[],int n);
  8. int main(){
  9.    int valores[LONG_VECTOR], n;
  10.    printf("Ingrese la dimension: ");
  11.    scanf("%d", &n);
  12.    if(validar(n)=='n'){
  13.        printf("Error: Numero no valido!");
  14.        return -1;
  15.    }
  16.    generarValores(valores, n);
  17.    printf("Valores generados: \n");
  18.    imprimirValores(valores, n);
  19.    printf("\nPorcentaje de numeros primos: %.1f", porcentajePrimos(valores, n));
  20.    return 0;
  21. }
  22. char validar(int n){
  23.    if(n>20){
  24.        return 'n';
  25.    }else{
  26.        return 0;
  27.  
  28.    }
  29. }
  30.  
  31. void generarValores(int a[],int n){
  32.    int i;
  33.    for(i=0;i<n;i++){
  34.        a[i]=rand()%51;
  35.    }
  36. }
  37.  
  38. void imprimirValores(int a[],int n){
  39.    int i;
  40.    for(i=0;i<n;i++){
  41.        printf("%d\t",a[i]);
  42.    }
  43. }
  44.  
  45. float porcentajePrimos(int a[],int n){
  46.    int i,j,acu=0;
  47.    for(i=0;i<n;i++){
  48.            for(j=2;j<a[i];j++){
  49.                if(a[i]%j!=0){
  50.                    acu++;
  51.                }
  52.            }
  53.        return (acu/n)*100;
  54.    }
  55. }
  56.  
  57.  


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 22 Enero 2017, 07:11 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Porcentaje de numeros primos en un vector
« Respuesta #1 en: 22 Enero 2017, 07:20 am »

Código
  1. for(j=2;j<a[i];j++){
  2.    if(a[i]%j!=0){
  3.        acu++;
  4.    }
  5. }

cuando hagas cosas matemáticas recomiendo leer la teoría tras ello en wikipedia, normalmente ayuda a buscar maneras más eficientes... ese ciclo puede ser mucho más eficiente, pero ahorita no va al caso...

en ese código, cada vez que el numero no es multiplo suma, cosa que para este caso, bueno evita que logres tu objetivo...

lo que debes hacer es:

si el numero es multiplo, suma hace un break; para romper el ciclo y salir ahí tendrías la cantidad de no primos, ya ahí es cosa de restar y listo




« Última modificación: 22 Enero 2017, 07:22 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
ulbdan

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Porcentaje de numeros primos en un vector
« Respuesta #2 en: 22 Enero 2017, 08:01 am »

Código:
for(j=2;j<a[i];j++){
                if(a[i]%j==0){
                    acu++;
                    break;
                }

            }
                r=n-acu;


Si es que le entendi bien engel lex algo no me sale o le entendi mal no se pero el acumulador se me queda en 0.
« Última modificación: 22 Enero 2017, 08:04 am por ulbdan » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Porcentaje de numeros primos en un vector
« Respuesta #3 en: 22 Enero 2017, 16:45 pm »

cuidado con las llaves, mira bien donde tienes el return, en tu codigo original lo tienias dentro del for, así que se retorna en la primera vuelta
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
ulbdan

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Porcentaje de numeros primos en un vector
« Respuesta #4 en: 22 Enero 2017, 21:58 pm »

No se que estare haciendo mal pero no me sale :(
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Porcentaje de numeros primos en un vector
« Respuesta #5 en: 22 Enero 2017, 22:34 pm »

muestra el código que tienes
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
ulbdan

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Porcentaje de numeros primos en un vector
« Respuesta #6 en: 23 Enero 2017, 00:03 am »

Código
  1. #include<stdio.h>
  2. #define LONG_VECTOR 20
  3.  
  4. char validar(int n);
  5. void generarValores(int a[],int n);
  6. void imprimirValores(int a[],int n);
  7. float porcentajePrimos(int a[],int n);
  8. int main(){
  9.    int valores[LONG_VECTOR], n;
  10.    printf("Ingrese la dimension: ");
  11.    scanf("%d", &n);
  12.    if(validar(n)=='n'){
  13.        printf("Error: Numero no valido!");
  14.        return -1;
  15.    }
  16.    generarValores(valores, n);
  17.    printf("Valores generados: \n");
  18.    imprimirValores(valores, n);
  19.    printf("\nPorcentaje de numeros primos: %.1f", porcentajePrimos(valores, n));
  20.    return 0;
  21. }
  22. char validar(int n){
  23.    if(n>20){
  24.        return 'n';
  25.    }else{
  26.        return 0;
  27.  
  28.    }
  29. }
  30.  
  31. void generarValores(int a[],int n){
  32.    int i;
  33.    for(i=0;i<n;i++){
  34.        a[i]=rand()%51;
  35.    }
  36. }
  37.  
  38. void imprimirValores(int a[],int n){
  39.    int i;
  40.    for(i=0;i<n;i++){
  41.        printf("%d\t",a[i]);
  42.    }
  43. }
  44.  
  45. float porcentajePrimos(int a[],int n){
  46.    int i,j,acu=0,r;
  47.    for(i=0;i<n;i++){
  48.            for(j=2;j<a[i];j++){
  49.                if(a[i]%j==0){
  50.                    acu++;
  51.                    break;
  52.                }
  53.                r=n-acu;
  54.                return (r/n)*100;
  55.            }
  56.    }
  57. }
  58.  

No se que es lo que estará mal...le intenté hacer tambien con una función aparte que me de los primos y los no primos pero tampoco me salio!!
« Última modificación: 23 Enero 2017, 00:25 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Porcentaje de numeros primos en un vector
« Respuesta #7 en: 23 Enero 2017, 00:34 am »

cuidado con las llaves, mira bien donde tienes el return, en tu codigo original lo tienias dentro del for, así que se retorna en la primera vuelta

es todo lo que te dije

las lineas indican los scope (donde abre y cierra cada llave) mira donde está el return... piensa: ¿en que momento se ejecutará?

En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python 2.6] Funcion generadora de Numeros primos (5.761.455 primos en 19 seg)
Python
katas 2 9,901 Último mensaje 10 Marzo 2010, 01:50 am
por Novlucker
NUMEROS PRIMOS
Programación C/C++
alviera 4 6,082 Último mensaje 7 Diciembre 2010, 06:39 am
por N0body
NUMEROS PRIMOS
Programación C/C++
ALONSOQ 5 3,631 Último mensaje 16 Junio 2012, 18:13 pm
por ALONSOQ
Copiar numeros de un vector a otro (iniciando con C++)
Programación C/C++
rafaelfinacut10 2 4,385 Último mensaje 7 Febrero 2018, 15:19 pm
por dijsktra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines