Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, pessoal. 

 

Estou com um exercício da faculdade sobre visualg e não consigo resolver, por favor, não me julguem estou no primeiro semestre. Sem mais, vamos para a questão. 

 

"Criar um vetor de 8 posições, do tipo inteiro. Nas posições pares inserir somente números
impares e nas posições impares inserir somente números pares. Ao final os números inseridos
no vetor devem ser apresentados.
Dica: para esta questão vamos considerar excepcionalmente que a posição 0 é par."

 

Eu realizei toda a contagem dos vetores utilizando a função para e depois a estrutura SE para verificar os valores verdadeiros eram diferentes de 0. Só que sempre da erro e eu tento utilizar o MOD (%) para isso e mesmo assim não consigo fica aparecendo um erro na estrutura SE.  

 

Por gentileza, alguém poderia me ajudar ? 

 

Desde já agradeço. 

 

  

 

 

 

 

  • Curtir 1
  • Membro VIP
Postado

Caro usuário,

 

Seja bem-vindo ao Fórum do Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 1
Postado
agora, GR Carvalho disse:

Estou com um exercício da faculdade sobre visualg e não consigo resolver, por favor, não me julguem estou no primeiro semestre. Sem mais, vamos para a questão.

Ninguém aqui vai te julgar. Você tentou fazer, isso é o que importa. De onde devem vir os números inseridos nos índices do vetor? O usuário deve digitar?

  • Curtir 1
Postado

@GR Carvalho     para saber se o número é par ou ímpar você pode usar o comando mod mesmo , se o resultado da comparação for zero é porque é par senão é ímpar ,  em seguida coloca no vetor ,     poste seu código que você já fez , para  podermos ajudar .

Postado

Segue o código:

algoritmo "semnome"

//Criar um vetor de 8 posições, do tipo inteiro. Nas posições pares inserir somente números
//impares e nas posições impares inserir somente números pares. Ao final os números inseridos
//no vetor devem ser apresentados.
//Dica: para esta questão vamos considerar excepcionalmente que a posição 0 é par.

var

num: vetor [0..7] de inteiro
i: inteiro
aux: inteiro
num2: vetor [0..7] de inteiro

inicio

para i de 0 ate 7 faca

Escreva ("Informe um número:")
Leia (num )
fimpara

para i de 0 ate 7 passo 2 faca

se (num %2 ) <> 0 entao
num2 <- num

fimse
fimpara

para i de 0 ate 7 passo 2 faca

se (num %2 ) = 0 entao
num2 <- num

fimse
fimpara


para i de 0 ate 7 faca
Escreval (num2 )

fimpara

fimalgoritmo

 

Foi esse meu raciocínio, mas sempre quando eu rodo esses códigos alguns valores do meu índice sai com valor zerado. Eu não sei mais o que faço. 

  • Curtir 2
Postado

@GR Carvalho    para postar seu código é melhor usar o botão  <>   que está lá na barra de ferramentas da janela de postar pois senão seu código fica faltando alguns caracteres como os [ i ] que sumiram do seu código ,  e no enunciado diz que é para inserir a pena ímpares nas posições pares  e pares nas posições ímpares , então você não precisa preencher um vetor e depois colocar os números no outro vetor , você pode pegar o número e já incluir na posição certa do vetor , então seu código poderia ser assim  :

algoritmo "pares e impares"
//Criar um vetor de 8 posições, do tipo inteiro. Nas posições pares inserir somente números
//impares e nas posições impares inserir somente números pares. Ao final os números inseridos
//no vetor devem ser apresentados.
//Dica: para esta questão vamos considerar excepcionalmente que a posição 0 é par.
var
  num       : vetor [0..7] de inteiro
  aux,i,p,q : inteiro
inicio
  q:=1
  para i de 0 ate 7 faca
    escreva("Informe o",i+1,"º número : ")
    leia(aux)
    se aux % 2 <> 0 entao
      se p < 8 entao
        num[p]:=aux
        p:=p+2
      fimse
    senao
      se q < 8 entao
        num[q]:=aux
        q:=q+2
      senao
        escreval("Posição Fora De Faixa")
      fimse
    fimse
  fimpara
  escreval
  para i de 0 ate 7 faca
    escreva(i,"  Posição Do Vetor Tem O Número ",num[i])
    se num[i]%2=0 entao
      escreval(" <-- Par")
    senao
      escreval(" <-- í mpar")
    fimse
  fimpara
fimalgoritmo

 

  • Curtir 3
  • Membro VIP
Postado

Olá.

 

1#

@GR Carvalho, sobre:

18 horas atrás, GR Carvalho disse:

"Criar um vetor de 8 posições, do tipo inteiro. Nas posições pares inserir somente números impares e nas posições impares inserir somente números pares. Ao final os números inseridos no vetor devem ser apresentados.
Dica: para esta questão vamos considerar excepcionalmente que a posição 0 é par."

 

Eu realizei toda a contagem dos vetores utilizando a função para e depois a estrutura SE para verificar os valores verdadeiros eram diferentes de 0. Só que sempre da erro e eu tento utilizar o MOD (%) para isso e mesmo assim não consigo fica aparecendo um erro na estrutura SE.  

 

No seu código você optou em primeiro ler os números, para depois separar, correto?... Essa poderia ser uma forma de interpretar o problema. Particularmente eu não entendi assim, mas vamos supor que essa é uma forma válida.

 

Então, como sugerido por @devair1010, poderia ser feito com um vetor só.

11 horas atrás, devair1010 disse:

[...] então você não precisa preencher um vetor e depois colocar os números no outro vetor, você pode pegar o número e já incluir na posição certa do vetor [...]

 

De certo modo, talvez poderia ser feito com 2 vetores... apenas faltou se atentar que, como são 3 vetores distintos, precisará de 3 controladores. 

 

Para tentar ser mais objetivo, segue um exemplo base: (utilizei algumas "dicas" do código do @devair1010), vejam:

algoritmo "FCdH"
//Criar um vetor de 8 posições, do tipo inteiro. Nas posições pares inserir
//somente números impares e nas posições impares inserir somente números pares.
//Ao final os números inseridos no vetor devem ser apresentados.
//
//Dica: para esta questão vamos considerar excepcionalmente que a posição 0 é
//par
var
   num      :vetor [0..7] de inteiro //número lidos do usuário
   num2     :vetor [0..7] de inteiro //números separados de acordo com a regra
   i        :inteiro //auxiliar para percorrer os vetores
   posImpar :inteiro //auxiliar para posicionar os ímpares
   posPar   :inteiro //auxiliar para posicionar os pares
inicio
 //inicializa os "posicionadores"
posPar   <- 0
posImpar <- 1

//ler os 8 números do usuário
para i de 0 ate 7 faca
   escreva("Informe o",i+1,"º número : ")
   leia(num[i])
fimPara

//faz a verificação e copia os números para os vetore correspondentes (quando possível)
para i de 0 ate 7 faca //para cada uma das posições dos números lidos
   se num[i] % 2 = 0 entao //se o número é par (vai inserir numa posição ímpar)
      se posImpar < 8 entao //se ainda tem espaço nas posições ímpares
         num2[posImpar] <- num[i] //copia o número na posição adequada
         posImpar:=posImpar+2 //atualiza para possível próxima posição ímpar
      fimSe
   senao //caso contrário é ímpar
      se posPar < 8 entao //se o número é ímpar (vai inserir numa posição par)
         num2[posPar] <- num[i] //copia o número na posição adequada
         posPar:=posPar+2 //atualiza para possível próxima posição par
      fimSe
   fimSe
fimPara

para i de 0 ate 7 faca
   escreva(i,"ª posição do vetor tem o número",num2[i])
   se i%2 = 0 entao
      escreval(" <-- ímpar")
   senao
      escreval(" <-- par")
   fimSe
fimPara
fimAlgoritmo

 

Lembrando que seria apenas uma base... teria que revisar para ver ser precisa de ajustes e também verificar outros conceitos pertinentes...

 

 

 

2#

@devair1010, em relação ao seu código, achei a proposta muito boa... (tanto que "copiei" alguns conceitos, rs). Apenas acho que faltou inserir a "fora da faixa" para os pares. Sugeriria algo assim:

para i de 0 ate 7 faca
   escreva("Informe o",i+1,"º número : ")?
   leia(aux)
   se aux % 2 <> 0 entao
      se p < 8 entao
         num[p]:=aux
         p:=p+2
      senao
         escreval("Posição Fora De Faixa")
      fimse
   senao
      se q < 8 entao
         num[q]:=aux
         q:=q+2
      senao
         escreval("Posição Fora De Faixa")
      fimse
   fimse
fimpara

 

 

 

3#

Em relação ao enunciado em si, eu entendi de forma diferente. 

 

Vide:

18 horas atrás, GR Carvalho disse:

Nas posições pares inserir somente números impares e nas posições impares inserir somente números pares.

 

Ou seja, para mim, não é para ler números e ir inserindo nas posições correspondentes, mas sim "para cada posição, ler apenas a categoria correta". Entendem?

 

Se for posição 0, ficar lendo até que seja um número ímpar.

Se for posição 1, ficar lendo até que seja um número par.

Se for posição 2, ficar lendo até que seja um número ímpar.

Se for posição 3, ficar lendo até que seja um número par.

etc

 

 

 

***

 

 

O que acham em relação a cada item?

 

No aguardo.

  • Curtir 2
Postado
10 horas atrás, Simon Viegas disse:

Ou seja, para mim, não é para ler números e ir inserindo nas posições correspondentes, mas sim "para cada posição, ler apenas a categoria correta". Entendem?

@Simon Viegas   agora que você disse  ,  pude perceber que assim seria mais certo mesmo , obrigado , vou estudar melhor sobre esse código .

  • Curtir 1
Postado

@devair1010, valeu cara ! 

 

Seu código deu super certo com a proposta. Eu não estava iniciando as variável de números pares e impares dificultando o meu raciocínio.  Mas me ajudou muito e agora me fez entender onde eu estava errando. 

 

Obrigado ! 

 

 

  • Curtir 1
  • Membro VIP
Postado

Olá.

 

1#

@GR Carvalho, acho que seria interessante verificar qual a real proposta do enunciado. Pois você pode está implementando um bom código, mas para uma solução de um problema diferente. Eu costumo dizer que seria algo como "pedir uma lasanha de frango no restaurante, mas garçom entregar uma deliciosa feijoada". Ok! pode está apetitosa, mas eu quero a droga de uma lasanha de frango! ué!?

 

Entende?

 

Vide:

22 horas atrás, Simon Viegas disse:

3#

Em relação ao enunciado em si, eu entendi de forma diferente. 

 

Vide:

Em 28/10/2018 às 14:32, GR Carvalho disse:

Nas posições pares inserir somente números impares e nas posições impares inserir somente números pares.

 

Ou seja, para mim, não é para ler números e ir inserindo nas posições correspondentes, mas sim "para cada posição, ler apenas a categoria correta". Entendem?

 

Se for posição 0, ficar lendo até que seja um número ímpar.

Se for posição 1, ficar lendo até que seja um número par.

Se for posição 2, ficar lendo até que seja um número ímpar.

Se for posição 3, ficar lendo até que seja um número par.

etc

 

Se a posição for par, ler um número ímpar. Se for uma posição ímpar, ler um número par.

 

O enunciado pede: «Nas posições pares inserir somente números impares»

Mas você implementou: "Para os números ímpares, inserir nas posições pares".

 

Pode ser algor próximo!, mas não é mesmo coisa. Pelo menos para mim! (apenas levanto a possibilidade)

 

A depender poderia fazer das duas formas! Mas vai de você!

 

 

 

2#

Sobre:

Em 28/10/2018 às 14:32, GR Carvalho disse:

Dica: para esta questão vamos considerar excepcionalmente que a posição 0 é par."

 

Na verdade considerar o zero como par não é uma excepcionalidade, ou seja, de fato o 0 é par!


Exemplo:

Citação

Paridade do número zero[editar | editar código-fonte]

Zero objetos divididos em dois grupos iguais

O zero é um número par.[1] Esta afirmação é feita devido às seguintes razões:

ele é um número inteiro múltiplo de dois, isto é, ele pode ser escrito na forma 2n, sendo n inteiro;

o zero é divisível por 2;

o zero é cercado por número ímpares;

o zero é o resultado da soma de algum número inteiro com o seu simétrico;

zero elementos podem ser divididos em dois grupos com um número igual de elementos;

o zero, interpretado como número par, é compatível com todas as regras das somas/subtrações e produtos de números pares e ímpares.

Ou seja, o zero compartilha todas as propriedades comuns a todos os números pares, portanto, conclui-se que ele é par. Popularmente, existe uma definição que determina o zero como sendo um número "nem par nem ímpar". Esta afirmação geralmente vem acompanhada pela justificativa que o zero seria um "número neutro" e que a propriedade não se aplicaria ao mesmo. Esta afirmação é falsa devido ao fato do conceito de elemento neutro estar associada a uma operação e não a um conjunto numérico. De fato, o zero é o elemento neutro das operações de adição e subtração, mas não é, por exemplo, das operações de multiplicação e divisão.


Fonte: https://pt.wikipedia.org/wiki/Números_pares_e_ímpares#Paridade_do_número_zero

 

 

Nesse sentido, uma melhor frase seria:

Citação

Dica: para esta questão vamos considerar que a posição 0 é par.

 

:)

 

 

 

**

 

No aguardo.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...