MO04A015 – Sortear sem repetir

Home Fóruns Programação Básica MO04A015 – Sortear sem repetir

Visualizando 2 respostas da discussão
  • Autor
    Posts
    • #75844

      Na aula, o professor prefere fazer com a estrutura enquanto() devido a peculiaridade da estrutura para(), mas antes de assistir a explicação dele, eu resolvi tentar fazer sozinho, e acabei fazendo com o para(). tem algum problema em fazer c–? pra mim parece mais simples.

      programa
      {
      	
      	inclua biblioteca Util --> ut
      	funcao inicio()
      	{
      		inteiro v[11], s=0
      		logico conf=falso
      
      		para (inteiro c=0;c<ut.numero_elementos(v);c++) {
      			se (c==0) {
      				v[c]=sorteia(1,11)
      			} senao {
      				s=sorteia(1,11)
      				para (inteiro c2=0;c2<ut.numero_elementos(v);c2++) {
      					se (s==v[c2]) {
      						conf=verdadeiro
      						pare
      					}
      				}
      				se (conf==verdadeiro) {
      					c--
      					conf=falso
      				} senao {
      					v[c]=s
      				}
      			}
      		}
      		
      		para (inteiro c=0;c<ut.numero_elementos(v);c++) {
      			escreva(v[c], " ")
      		}
      	}
      }
    • #76010
      Tutora Mayla
      Mestre

      Lucas, o seu código funciona, mas decrementar um laço com passo crescente não é uma boa prática de programação, pois torna o código confuso em algumas situações.
      Preste atenção também ao nomear suas variáveis, tente sempre nomear de forma mais clara possível e cuidado com abreviaturas.
      Espero ter ajudado, quaisquer dúvidas estamos a disposição.

    • #76033
      programa
      {
      	
      	inclua biblioteca Util --> ut
      	funcao inicio()
      	{
      		inteiro v[11], s=0, i=0
      		logico repet=falso
      
      		enquanto (i<ut.numero_elementos(v)) {
      			v[i]=sorteia(0,10)
      			para (inteiro i2=0;i2<ut.numero_elementos(v);i2++) {
      				se (v[i]==v[i2] e i!=i2) {
      					repet=verdadeiro
      					pare
      				}
      			}
      			se (repet==verdadeiro) {
      				repet=falso
      			} senao {
      				i++
      			}
      		}
      		
      		para (inteiro i1=0;i1<ut.numero_elementos(v);i1++) {
      			escreva(v[i1], " ")
      		}

      Obrigado pelas suas observações, reajustei com base nelas. Ainda acho a outra forma mais confortavel, mas fazer o que, tenho que se seguir as boas práticas, ja que programadores geralmente trabalham em equipe.

Visualizando 2 respostas da discussão
  • Você deve fazer login para responder a este tópico.