Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Gagy en 3 Diciembre 2012, 22:51 pm



Título: Ayuda con un programa en C++
Publicado por: Gagy en 3 Diciembre 2012, 22:51 pm
Hola de nuevo a todos. Antes os había preguntado por un programa en C++, ahora os pido que me ayudeis con este. Dice así:

"Leemos un número entero por teclado. Calcular la media de los números primos introducidos y decir cuál es el más grande y el más pequeño"

Necesito hacerlo con el código más simple posible, con
#include<iostream>   y  #include<cmath>

¡¡Gracias!!


Título: Re: Ayuda con un programa en C++
Publicado por: durasno en 3 Diciembre 2012, 23:26 pm
Si te resuelven todo, entonces como vas a aprender???



Saludos


Título: Re: Ayuda con un programa en C++
Publicado por: Xenomorfo77 en 3 Diciembre 2012, 23:54 pm
Hola de nuevo a todos. Antes os había preguntado por un programa en C++, ahora os pido que me ayudeis con este. Dice así:

"Leemos un número entero por teclado. Calcular la media de los números primos introducidos y decir cuál es el más grande y el más pequeño"

Necesito hacerlo con el código más simple posible, con
#include<iostream>   y  #include<cmath>

¡¡Gracias!!

Repite el enunciado de nuevo, si leemos un numero no podemos hacer medias. Luego dices calcular la media de los numeros PRIMOS introducidos ???


Título: Re: Ayuda con un programa en C++
Publicado por: leosansan en 4 Diciembre 2012, 11:14 am
Citar
Tienes que aportar lo que llevas desarrollado de tu código, si no la respuesta es: no se hacen tareas.
Pero por si te has quedado en blanco, una pequeña ayuda es el ejercicio resuelto .... en C y sin explicaciones. La próxima si aportas algo será en C++:
Código
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <limits.h>
  4. int main()
  5. {
  6.    long long int N,suma=0,mayor= LONG_LONG_MIN,menor= LONG_LONG_MAX;
  7.    int cont=0;
  8.    while(1){
  9.        printf ("Introduzca un numero:");
  10.        scanf ("%lld",&N);
  11.        if (N==0) break;
  12.        if (esPrimo(N)==0) printf ("%lld NO es primo \n",N);
  13.        else {
  14.            printf ("%lld es primo \n",N);
  15.            suma+=N;cont++;
  16.            if (N>mayor) mayor=N;
  17.            if (N<menor) menor=N;
  18.        }
  19.    }
  20.    if (cont>=1) printf("La media es %g , el mayor %lld y el menor %lld.\n",(float) suma/cont,mayor,menor);
  21.    else puts ("No hay primos");
  22.    return 0;
  23. }
  24. int esPrimo(long long int n)
  25. {
  26. int rq ,i;
  27. rq = (int) sqrt(n);
  28. for ( i = 2; i <= rq; i++)
  29. {
  30. if (n%i == 0)
  31. return 0;
  32. }
  33. return n;
  34. }
Saluditos!.


Título: Re: Ayuda con un programa en C++
Publicado por: Gagy en 4 Diciembre 2012, 11:27 am
Usuario durasno, me pasé toda una tarde a ver si podía resolverlo y nada.
Repito el enunciado, perdón si no ha sido entendible. Dice así:
"Leemos un número indefinido de números por teclado. El programa nos pregunta cuantos números queremos poner. Por ejemplo, si ponemos 7, el programa nos dice 7 veces: Introduce un número. Entonces, cuando ya hemos introducido los números, el programa averigua si hay algún número primo en alguno de los números introducidos. Por ejemplo, si hay 3 números primos, se calcula la media de esos tres números y además decir cual es el número primo más grande introducido y el más pequeño"
Tengo que hacerlo con el código más simple posible, con iostream y cmath, si es posible.
Por favor, preguntadme cualquier duda. A ver si podéis ayudarme porque me estoy volviendo loco.
Un saludo.


Título: Re: Ayuda con un programa en C++
Publicado por: leosansan en 4 Diciembre 2012, 11:53 am
Usuario durasno, me pasé toda una tarde a ver si podía resolverlo y nada.
Citar
Pero lo que no acabas de entender es que si te has pasado toda una tarde algo de código tendrás, aunque esté incompleto se pide que lo cuelgues.
Pero en fin, por esta vez "me lo creo" . A ver si te sirve esto:
Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <climits>
  4. using namespace std;
  5. main() {
  6.    int j,num,k,suma=0,mayor= INT_MIN,menor= INT_MAX;
  7.    int i,N,cont=0;
  8.    cout <<"Indica  el total de numeros: ";
  9.    cin >> N;
  10.    for (i=0;i<N;i++){
  11.        cout <<"Ingresa el numero "<<i+1<<": ";
  12.        cin >>num;
  13.        k=0;
  14.        for (j=1; j<=num; j++)
  15.            if (num%j == 0)
  16.                k++;
  17.        if (k == 2 || num == 1){
  18.            suma+=num;cont++;
  19.            if (num>mayor) mayor=num;
  20.            if (num<menor) menor=num;
  21.            cout <<"El numero "<<num<<" esprimo"<<endl;
  22.        }
  23.        else cout <<"El numero "<<num<<" NO esprimo"<<endl;
  24.       }
  25.    cout <<"El numero total de primos es :"<<cont<<endl;
  26.    if (cont>=1) cout <<"La media es "<< (float) suma/cont <<" , el mayor "<< mayor <<" y el menor "<< menor<<endl;
  27.    else puts ("No hay primos");
  28.    return 0;
  29. }
Saluditos!.


Título: Re: Ayuda con un programa en C++
Publicado por: Gagy en 4 Diciembre 2012, 13:25 pm
¡Muchas gracias leosansan! No sabes del lío que me has sacado.
Pero una pregunta, ¿el ejercicio se podría hacer solamente con las librerías de #include <iostream>       
y #include <cmath>, sin necesidad de utilizar stdio.h ni climits?


Título: Re: Ayuda con un programa en C++
Publicado por: Ferno en 4 Diciembre 2012, 13:47 pm
Si se puede, pedo debes hacer algunos cambios en el code.

Primero, para no depender de stdio.h, debes cambiar la función puts() por un cout.
Segundo, para no depender de climits, debes modificar la inicialización de las variables 'mayor' y 'menor' por otros números que cumplan con la misma función que las macros INT_MAX e INT_MIN (climits se usa para poder utilizar estas dos macros).
Por ejemplo, INT_MAX puedes modificarla por un valor muy alto, e INT_MIN por 0.


Título: Re: Ayuda con un programa en C++
Publicado por: leosansan en 4 Diciembre 2012, 14:24 pm
Pero una pregunta, ¿el ejercicio se podría hacer solamente con las librerías de #include <iostream>      
y #include <cmath>, sin necesidad de utilizar stdio.h ni climits?
Aunque ya Ferno te ha contestado a parte de la pregunta, podrías incluir la librería math y aprovechar que para que un número sea primo basta con que no sea divisible entre 2 y la raíz del número. Con todas las aportaciones te quedaría:
Código
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5. main() {
  6.    int j,num,k,suma=0,mayor= 0,menor= 1e12;
  7.    int i,N,cont=0;
  8.    cout <<"Indica  el total de numeros: ";
  9.    cin >> N;
  10.    for (i=0;i<N;i++){
  11.    /*while (1){*/
  12.        cout <<"Ingresa el numero "<<i+1<<": ";
  13.        cin >>num;
  14.        k=0;
  15.        for (j=2; j<=sqrt(num); j++)
  16.            if (num%j == 0)
  17.                k++;
  18.        if (k == 0 || num == 1){
  19.            suma+=num;cont++;
  20.            if (num>mayor) mayor=num;
  21.            if (num<menor) menor=num;
  22.            cout <<"El numero "<<num<<" esprimo"<<endl;
  23.        }
  24.        else cout <<"El numero "<<num<<" NO esprimo"<<endl;
  25.        }
  26.    cout <<"El numero total de primos es :"<<cont<<endl;
  27.    if (cont>=1) cout <<"La media es "<< (float) suma/cont <<" , el mayor "<< mayor <<" y el menor "<< menor<<endl;
  28.    else cout<<"No hay primos";
  29.    return 0;
  30. }


Título: Re: Ayuda con un programa en C++
Publicado por: Gagy en 4 Diciembre 2012, 16:16 pm
¡Muchas gracias leosansan!
Pero el programa se cierra inesperadamente al escribir todos los números y no da tiempo a leer el resultado.
¿Dónde podría estar el error?


Título: Re: Ayuda con un programa en C++
Publicado por: leosansan en 4 Diciembre 2012, 20:08 pm
..........................
Pero el programa se cierra inesperadamente al escribir todos los números y no da tiempo a leer el resultado.
¿Dónde podría estar el error?
Es el compilador, supongo que usas Dev-C++. Para evitar el cierre inmediato de la ventana añade dos getchar al final, antes del return y añade al principio la libreria  #include <cstdio> .
Saluditos!.
P.D:Pásate al Code:::Blocks.


Título: Re: Ayuda con un programa en C++
Publicado por: Ferno en 4 Diciembre 2012, 20:44 pm
En todo caso es el IDE. El compilador tanto de DevC++ como el de Code::Blocks es MinGW, que es una versión del GCC.
Saludos!


Título: Re: Ayuda con un programa en C++
Publicado por: Gagy en 4 Diciembre 2012, 21:41 pm
Gracias!


Título: Re: Ayuda con un programa en C++
Publicado por: cypascal en 4 Diciembre 2012, 22:01 pm
Hay que tener cuidado con el 2, que es primo


Título: Re: Ayuda con un programa en C++
Publicado por: leosansan en 4 Diciembre 2012, 22:59 pm
Hay que tener cuidado con el 2, que es primo
Citar
Y primo sale en el código posteado.
Saluditos!.


Título: Re: Ayuda con un programa en C++
Publicado por: cypascal en 5 Diciembre 2012, 00:28 am
Solo me remití a leer lo que ponía en tu mensaje, no compilé ni ejecuté el codigo, que suponía que estaba bien:

Aunque ya Ferno te ha contestado a parte de la pregunta, podrías incluir la librería math y aprovechar que para que un número sea primo basta con que no sea divisible entre 2 y la raíz del número. Con todas las aportaciones te quedaría:


No quise decir que estuviera mal, pero perdón de todas formas por el mal enentdido.

Salu10


Título: Re: Ayuda con un programa en C++
Publicado por: cypascal en 5 Diciembre 2012, 00:34 am
Estoy tonto y pensé que no lo habia enviado.

Salu10