Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: suzy en 11 Febrero 2013, 17:09 pm



Título: Problema básico en C++
Publicado por: suzy en 11 Febrero 2013, 17:09 pm
Buenas a todos!
Resulta que estoy empezando a programar en C++ y ando un poco perdido.
Me han pedido que haga un problema tal que así:

Introduzco por teclado los números 2,8,4,3,1 y el programa tiene que decirme cuáles de ellos son primos. (De cabeza se sabe pero tengo que poner el código para que el programa me los diga)

Por último, necesito hacer el programa de la forma más simple posible,ya que me estoy iniciando, con las librerías #include <iostream> y #include <cmath>.

Gracias!


Título: Re: Problema básico en C++
Publicado por: amchacon en 11 Febrero 2013, 17:37 pm
Revisa este enlace:
http://www.forosdelweb.com/f96/problema-c-primos-1036459/


Título: Re: Problema básico en C++
Publicado por: suzy en 11 Febrero 2013, 18:01 pm
Muchas gracias amchacon!
Pero tengo una duda. Mi profesor no me ha explicado los comandos "bool Primo;" y
 " cin.get();", por lo tanto, ¿habría otra forma de poner estos comandos?


#include <iostream>
using namespace std;
int main()
{
    int matriz [] = {2,8,4,3,1},i,j;
    bool Primo;

    cout<<"Los numeros primos son: "<<endl;

    for (i=0; i<5; i++)
    {
        Primo = true;
        for(j=2; j<matriz; j++)
        {
            if(matriz%j==0)
            {
                Primo = false;
                j = matriz;
            }
        }
        if (Primo == true)
            cout<<matriz<<" ";
    }

    cin.get();
    return 0;
}


Título: Re: Problema básico en C++
Publicado por: amchacon en 11 Febrero 2013, 19:31 pm
Una variable bool es una variable que puede tener dos valores: 1 o 0 (que tambien puede expresarse como true o false).

Puedes cambiar el bool por un int y los true y false por 0 y 1 .

El cin.get es solo para pausar el programa, se puede eliminar.


Título: Re: Problema básico en C++
Publicado por: leosansan en 11 Febrero 2013, 19:47 pm
Mírate este otro enlace:

http://foro.elhacker.net/programacion_cc/ayuda_con_un_programa_en_c-t377604.0.html;msg1806477#msg1806477

O sea:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int main() {
  5.    int i,cont=0,j,num,k,total;
  6.    cout <<"Ingresa el total de numeros: ";
  7.    cin >>total;
  8.    for (i=0;i<total;i++){
  9.        cout <<"Ingresa el numero "<<i+1<<": ";
  10.        cin >>num;
  11.        k=0;
  12.        for (j=1; j<=num; j++)
  13.            if (num%j == 0)
  14.                k++;
  15.        if (k == 2 ){
  16.            cont++;
  17.            cout <<"El numero "<<num<<" ES primo"<<endl;
  18.        }
  19.        else cout <<"El numero "<<num<<" NO es primo"<<endl;
  20.    }
  21.    cout <<"El numero de primos es :"<<cont<<endl;
  22.    return 0;
  23. }
  24.  
Saluditos!.
P.D: Cuando tengas que poner un código usa las etiquetas GeSHi y eliges C++ y en medio de las dos etiquetas Code que te salen "pegas" el código.


Título: Re: Problema básico en C++
Publicado por: suzy en 11 Febrero 2013, 21:55 pm
Gracias a los dos!
Saludos!  :D


Título: Re: Problema básico en C++
Publicado por: BatchianoISpyxolo en 13 Febrero 2013, 23:20 pm
Si pensáis un poquitito el código es fácilmente optimizable utilizando un ciclo mientras que en vez de un para.

Imaginemos que queremos comprobar si 100000000000000000000000000000000000000000000000, es primo. No tiene sentido mirar todos los números naturales hasta ese y verificar si son divisores o no.


Código
  1. // N = número a comprobar si es primo o no
  2.    int k = 1;
  3.    while ((k<N) && (N%(++k) != 0));
  4.    puts(k < N ? "no primo" : "primo");


Que lo queréis aplicar a un array de números... pues añadir un for como ciclo externo para recorrer los elementos como ya habéis hecho. Qué tenéis una estructura árbol, pues recorréis la estructura recursivamente... etc etc xD