Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Errene20 en 11 Noviembre 2014, 00:53 am



Título: Necesito una ayuda en C++, muchas gracias de antemano.
Publicado por: Errene20 en 11 Noviembre 2014, 00:53 am
Necesito añadirle al programa que se pueda imprimir en pantalla o en un archivo indicando el número de columnas, esto es lo que tengo yo de momento, si me ayudara alguien se lo agradecería mucho. Este programa es de calcular los primeros N números primos.


#include <iostream>
#include <cstdlib>
#include <math.h>


int main(){
  
  int B=2, C=2, D=0, I=0, E;    
  printf("Hasta que numero quiere que calcule los numeros primos: "); scanf("%d",&E);
    for(B;B<=E;B++){                    
                  C=2;    
                  while((C<=B) && (B%C!=0)){
                               C++;}
                               if(B==C){printf("%6d",C); D++; I++; if(D==10){printf("n");D=0;}}              
  }
printf("Total de numeros primos es de: %d",I);


 system("PAUSE");
    return 0;
}


si tengo algunos fallos decírmelo también, gracias por las molestias.  ;)


Título: Re: Necesito una ayuda en C++, muchas gracias de antemano.
Publicado por: Blaster en 11 Noviembre 2014, 02:25 am
si tengo algunos fallos decírmelo también, gracias por las molestias.  ;)

Esto mas bien seria una pequeña modificación para obtener mayor eficiencia y rapidez :

Código
  1. for(B = 2; B <= E; B++)
  2. {
  3.    C = 2;
  4.    while (C * C <= B  && B % C != 0) C++;
  5.    if (C * C  > B)
  6.        printf("%6d\n", B);
  7. }

Y respecto a lo que intentas hacer podrías especificar exactamente como quieres imprimirlos

Saludos



Título: Re: Necesito una ayuda en C++, muchas gracias de antemano.
Publicado por: rir3760 en 11 Noviembre 2014, 02:41 am
Necesito añadirle al programa que se pueda imprimir en pantalla o en un archivo indicando el número de columnas
Lo primero: cuando publiques código fuente por favor utiliza las etiquetas de código. Estas se agregan mediante el cuadro desplegable con el texto "GeSHi" en la pagina de composición de mensajes, solo tienes que seleccionar ahí el lenguaje (C, C++, etc.).

----

Para imprimir un numero determinado de números por linea lo único que debes hacer es pedir este al usuario mediante scanf, de forma similar a como pides el limite superior a verificar. A continuación dentro del bucle verificas si la variable "D" (evita los nombres en mayúsculas) es igual a ese valor (en este momento comparas contra la literal 10 con lo cual imprimes 10 columnas por linea). Mas o menos así:
Código
  1. puts("Columnas por linea:");
  2. int num_cols;
  3. scanf("%d", &num_cols);
  4.  
  5. // ...
  6.  
  7. if (D == num_cols){
  8.   putchar('\n');
  9.   D = 0;
  10. }

Otros comentarios: el programa se supone que es C++ pero en realidad es C, en el caso de C++ falta incluir el encabezado <cstdio> y hay que cambiar <math.h> por <cmath> y la primera expresión en el bucle "for(B;B<=E;B++) ..." hay que eliminarla ya que no tiene efecto (el valor inicial de esa variable es dos y esta dado en su declaración).

Un saludo