Ir para conteúdo
Fórum Script Brasil
  • 0

PROGRAMA NUMEROS PRIMOS II


roccoC/C++

Pergunta

Bem mais simples que o outro programa postado abaixo:

"NÚMEROS PRIMOS EM MATRIZ DINÂMICA"


Este programa não usa vetores e nem muito menos matriz, más o funcionamento é excelente
e não deixa nada a desejar, muito bem organizado apesar da simplicidade.
Editei a biblioteca conio.h original do MinGW, e acrescentei algumas funções,
entre elas estão as funções textcolor e gotoxy, originalmente estas funções
são da biblioteca conio.h da borland, más criaram uma biblioteca chamada conio2.h, com algumas
destas funções da conio.h da borland, e foi daí que tive
esta idéia de imprementar as mesmas funções na conio.h original no MinGW.
o Programa não traz nenhuma novidade, e está rodando sem nenhum warning
aqui no eclipse.

Eis as saídas deste programa no cmd do windows:

http://2.bp.blogspot.com/-Q0nkkl6DiFY/UnOkY7vugFI/AAAAAAAAAZA/Dj9oWa3iJBc/s1600/CapaProgrNumPrim.nPrim.PNG

http://1.bp.blogspot.com/-ObKI9atsxCQ/UnOgnIMvu-I/AAAAAAAAAYs/PifHfUV5Zv4/s1600/ExibNum.nPrim.PNG

http://2.bp.blogspot.com/-Ih-couoYlyg/UnOgrPVB6ZI/AAAAAAAAAY0/AjTaok4AEis/s1600/ExibNumPrim.PNG

Eis o link deste código abaixo:

http://codigosfontes-ccplus-plus.blogspot.com.br/2013/03/programa-numeros-primos-ii.html

Editado por roccoC/C++
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Segue o código.

#include <stdio.h>
#include <stdlib.h>

#define OP_PRIMO 1
#define OP_NAO_PRIMO 2

int primo(int);
void imprime(int, int, int);

int main(void){
    int ini, fim, op;

    printf("\nIMPRIME\n\n1)Primo\n2)não Primo\n\n : ");
    scanf("%d", &op);

    if(op != OP_PRIMO &&  op != OP_NAO_PRIMO){
        printf("Programa encerrado\n");
        exit(0);
    }
    
    printf("Valor inicial: ");
    scanf("%d", &ini);
    printf("Valor final: ");
    scanf("%d", &fim);
    printf("\n");

    imprime(ini, fim, op);
    
    return 0;
}

void imprime(int ini, int fim, int op){
    register int i, qtd = 0;

    for(i = !ini ? 1 : ini; i <= fim; ++i)      
        if(op == OP_PRIMO){
            if(primo(i)){
                printf("%d ", i);
                ++qtd;
            }
        }else{
            if(!primo(i)){
                printf("%d ", i);
                ++qtd;
            }
        }
              
    printf("\n\nOcorrencias: %d\n\n", qtd);
}

int primo(int num){
    register int i;
    
    if (num < 2)
        return 0;

    for(i = 2; i <= num; ++i)    
        if(!(num % i) && i != num)
           return 0;

    return 1;
}

Editado por vega
Link para o comentário
Compartilhar em outros sites

  • 0

Colega vega, os códigos postados pelo colega roccoC/C++ são códigos funcionais, prontos.

Pelo que entendi, ele posta como exemplo. Provavelmente para pesquisas futuras de outros usuários, ou até mesmo pra ele.

O título é sempre em caixa alta, pra diferenciar.

Colega roccoC/C++, parabéns pelo trabalho.

Gostaria de ressaltar algumas considerações referente ao seu código.

Não é aconselhado usar a função "fflush(stdin)". Ela pode ter comportamento inesperado (e realmente já tive), conforme diz a própria documentação padrão. Foi criada pra limpar o buffer de saída de vídeo e de arquivos.

Para fazer uma leitura do teclado sem ter problemas com o buffer, use um espaço dentro do formato a ser recebido.

Além disso, o mais adequado seria usar o "fscanf()" para leitura.

Exemplo para leitura de inteiros:

fscanf(stdin, " %d", &variavel);
Para leitura de string, aconselha limitar o tamanho máximo a ser lido, pra não estourar o tamanho do vetor:
fscanf(stdin, " %50[a-zA-Z0-9 ]s, variavel); // Permite até 50 caracteres, além disso, só aceitará caracteres do alfabeto (maiúsculo e minúsculo), números e espaços.

E vamos, que vamos! :)

Abraço a todos.

Link para o comentário
Compartilhar em outros sites

  • 0
Colega vega, os códigos postados pelo colega roccoC/C++ são códigos funcionais, prontos.

Pelo que entendi, ele posta como exemplo. Provavelmente para pesquisas futuras de outros usuários, ou até mesmo pra ele.

O título é sempre em caixa alta, pra diferenciar.

Exatamente.

Como acho esses tópicos interessantes, costumo participar também. Postando outra solução como alternativa.

Editado por vega
Link para o comentário
Compartilhar em outros sites

  • 0

Tah certo!

Primeiro quero agradecer as orientações que o ScreenBlack me passou, por enquanto ainda não tive problemas com a função fflush (stdin);

Más quando eu tiver pode ter certeza que o primeiro passo é seguir o que você passou.

Quanto ao post, é bom ver outras versões de um mesmo programa, são maneiras diferente de programar,

E se quizer, tem os outros post de programas que postei, a maioria eu não publico o código, só estão disponível no meu blog,

apesar de que meu interesse é ajudar, não posto, porque gosto de pessoas interessadas e esforçadas, que corre atrás de seus objetivos,

más se alguém quizer o código estou sempre a disposição de fornecer com o maior prazer, é só me enviar uma mensagem ou e-mail.

O código funcionou bem vega, valeu!

Editado por roccoC/C++
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...