Jump to content
Sign in to follow this  
dcgc

[Dúvida] Solução de problema incorrecta?

Recommended Posts

dcgc

Boa tarde,

Comecei este ano a frequentar o curso de Engenharia de Informática. Como tal, tenho uma unidade curricular que é muito importante para a minha formação como Engenheiro Informático que é a "Algoritmia e Programação". Ora a minha dúvida é colocada neste sub-fórum pois trata-se de um problema elaborado na linguagem universal conhecida como o pseudocódigo (ou portugol/nhol). Este exercício deverá ser bastante elementar para quem me possa ajudar, já que estamos no início do ano lectivo.

O problema é o seguinte: Fiz um exercício, penso que esteja bem mas o meu professor disse que não fazia sentido. Contudo, fiz vários testes e parece-me estar a funcionar. Será que haverá maneira mais eficiente de resolver o problema? Eu sinceramente não entendi outra maneira de o resolver. Deixo aqui o enunciado e a minha solução. Se alguém me poder explicar o que fiz de mal, agradecia.

Elabore um algoritmo que determine e visualize os N primeiros números primos. Um número é primo se for inteiro e se só for divisível por ele próprio e por 1.

ED:
num, cont_primo, cont_div,    INT
var_bool BOOLEAN
Inicio
Escrever (“Insira um número inteiro”)
Ler (n)
cont_primo <-2
var_bool <- FALSO
Para (cont_primo ATE n PASSO 1)
cont_div <- cont_primo
Para (cont_div ATE 1 PASSO -1)
Se (var_bool=FALSO)
Então     Se (cont_div <> cont_primo)
	Então    Se cont_primo MOD cont_div = 0
		Então Escrever (“Número “, cont_primo, “ não é primo pois “, cont_primo, “ é divisível por “, cont_div)
		var_bool<-VERDADEIRO
		FimSe
	FimSe
Senão Escrever (“Número”, cont_primo, “ é divisível por si próprio e por 1”)
FimSe
Se (cont_div = 1 E var_bool = FALSO)
Então Escrever (“O número “, i, “ é primo.”)
FimSe
FimPara
FimPara
Fim

Share this post


Link to post
Share on other sites
pmg

Quantas vezes é que o processo passa por esta linha (para o número 12, por exemplo)?

Senão Escrever (“Número”, cont_primo, “ é divisível por si próprio e por 1”)

Mete as tags [ code] e [ /code] (sem os espacos) para delimitar o teu código.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
dcgc

Quantas vezes é que o processo passa por esta linha (para o número 12, por exemplo)?

Senão Escrever (“Número”, cont_primo, “ é divisível por si próprio e por 1”)

Mete as tags [ code] e [ /code] (sem os espacos) para delimitar o teu código.

As tags BB não funcionam (não percebo). Relativamente à tua questão, passa 11 vezes, para cada número (de 2 a 12).

Share this post


Link to post
Share on other sites
pmg

Fiz o download do portugol a partir do site http://www.dei.estt.ipt.pt/portugol/ e andei a mexer no teu código até o F2 (Verificar algoritmo) dizer "Algoritmo OK".

inicio
    inteiro n , cont_primo , cont_div
    logico var_bool
    
    escrever "Insira um número inteiro"
    ler n
    var_bool <- falso
    
    para cont_primo de 2 ate n passo 1
        para cont_div de cont_primo ate 1 passo - 1
            se var_bool = falso entao
                se cont_div =/= cont_primo entao
                    se cont_primo % cont_div = 0 entao
                        escrever "Número " , cont_primo , " não é primo pois " , cont_primo , " é divisível por " , cont_div
                        var_bool <- verdadeiro
                    fimse
                fimse
            senao
                escrever "Número" , cont_primo , " é divisível por si próprio e por 1"
            fimse
            
            se ( cont_div = 1 ) e ( var_bool = falso ) entao
                escrever "O número " , n , " é primo."
            fimse
        proximo
    proximo
fim

Atenção que, embora ele diga "OK" o algoritmo não faz o pretendido ... mas não me apetece estar a chafurdar mais nesta linguagem.

Mais atenção às aspas!!!! Nada de coisas esquisitas: as aspas são assim: "" (iguais a abrir e fechar); não são como tens no teu código (e que eu nem consigo fazer com o meu teclado!)

Atenção aos parentesis: alguns dos parentesis que colocaste davam erro

Atenção à forma da linguagem. Por exemplo, onde tinhas "cont_div <> cont_primo" eu alterei para "cont_div =/= cont_primo" de acordo com o que descobri no HELP Integrado no programa que fiz download.

Boa sorte.

Acabou aqui a minha incursão em portugol.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
dcgc

As aspas devem ter sido do copy-paste do código (de .doc para a caixa de texto do fórum). De resto, acho que escrevi de forma correcta, no entanto está de acordo com a escrita de pseudocódigo que aprendi na minha disciplina  (há várias formas de escrever em pseudocódigo sim). Em suma, o que escrevi não está em portugol (daí não estar na sintaxe devida como tu disseste). Mas mesmo assim, se o meu algoritmo não faz o pretendido, o que é realmente pretendido?... Eu percebi que o exercicio quer que o algoritmo me diga se um número é primo ou não e eu acho que o meu algoritmo faz isso mesmo. No entanto, o meu professor diz que não faz sentido. Agora pergunto, olhando para o meu algoritmo, quererá isso dizer que haverá outra forma de resolver o exercício e de forma mais eficiente? É essa a minha dúvida.

Agradeço desde já a tua ajuda e não conhecia esse IDE de portugol (obrigado por referires o link).

Cumprimentos.

Share this post


Link to post
Share on other sites
pmg

De acordo com a minha interpretacao do enunciado, quando o pedido e "8" o resultado devia ser

2
3
5
7
11
13
17
19

Obviamente que se pode dar um desconto se o algoritmo escrever coisas a mais ... agora escrever a menos e que nao! :cheesygrin:


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.