-
Posts
3.940 -
Cadastrado em
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Simon Viegas postou
-
VisualG calcule e exiba o valor do desconto e o valor a ser pago
Simon Viegas respondeu ao tópico de leandromichetti em Programação - iniciantes
Olá @leandromichetti. Abaixo algumas críticas/sugestões. 1) INDENTAÇÃO DE CÓDIGO É extremamente importante que o código esteja sempre indentado. Veja por exemplo seu código acima reindentado: algoritmo "Exercicio20" var valor,descont, valorfinal: real ano, cont, total: inteiro resp: caracter inicio Escreval("<><><><><><><><><><> CONCESSIONARIA DE VEÍCULOS CARANGO VELHO <><><><><><><><><><>") Escreval("") Repita descont <- 0 Escreva("Qual o valor do veiculo? R$:") Leia(Valor) Escreva("Qual o ano do veicúlo desejado?:") Leia(ano) Se ano <= 2000 então descont <- valor*0.12 valorfinal <- valor - descont cont <- cont+1 total <- total+1 senao Se ano > 2000 então descont <- valor*0.07 valorfinal <- valor - descont total <- total+1 Fimse Fimse Escreval("") Escreval(" O valor de desconto é: R$", descont) Escreval(" O valor a ser pago pelo cliente é: R$", valorfinal) Escreval("") Escreval("") Escreval(" Total de carros até ano 2000:", cont) Escreval(" Total de carros:", total) Escreva("Deseja continuar calculando o desconto? S/N") Leia(resp) Escreval("") Escreval("") Ate (resp = "n") fimalgoritmo Percebe a diferença? ADENDO: não existe um padrão único ou correto de indentação, mas a base é sempre a mesma, algo como: "um dente pra frente naquilo que está dentro de outra estrutura". O resto é adaptação, mas que precisa ter "coerência, ou seja, todo código teve ter a mesma base. Veja por exemplo no "meu padrão"... nele tem algumas características especiais, no exemplo acima perceba que deixo o código entre INICIO e FIMALGORITMO na mesma coluna (não dou um "dente"), pois assim economiza mais espaço. 2) "CONDIÇÕES MUTUAMENTE EXCLUDENTES Se observamos, as condições que verificam os anos são excludentes entre si, e ao mesmo tempo complementares, ou seja, se não for um, necessariamente será o outro. Logo, não precisa do segundo se. Basta o senão. (todo ano que não é menor ou igual a 2000, é necessariamente maior que 2000. Seria um erro de lógica deixa esse segundo se) 2) REPETIÇÃO DE INSTRUÇÃO Se ano <= 2000 ENTÃO descont <- valor*0.12 valorfinal <- valor - descont cont <- cont+1 total <- total+1 senao Se ano > 2000 ENTÃO descont <- valor*0.07 valorfinal <- valor - descont total <- total+1 Fimse Fimse obs.: para efeito demonstrativo, acima outro exemplo de indentação/alinhamento que acho bacana. Dá um visual mais limpo. Perceba que deixei as atribuições alinhadas. Os cálculos do valorfinal e total estão se repetindo, ou seja, é a mesma instrução para a mesma finalidade em partes diferentes. Eles podem ficar apenas após o se/senão. O cálculo do desconto também pode ficar fora do se/senão. Perceba que também é o mesmo cálculo, só mudando o valor da taxa, ou seja, dentro do se poderia por exemplo só "descobrir" taxa e atualiza o cont. Após calcularia o desconto utilizando a taxa. Por que isso é interessante? se por exemplo você precisar alterar a forma de como calcular o desconto... você teria que fazer as alterações em cada parte do código onde ela é feita. A ideia é que os se meio que sirvam apenas para as partes que são individuais. O que é "genérico" fica centralizado . Resumindo: - descont, valorfinal e total ficariam após o se/senão. Dentro do se e senão ficariam só a atualização do valor da taxa e a atualização de cont no se. *** No aguardo. -
VisualG Algoritmo URI online 1968, Terra Desconhecida
Simon Viegas respondeu ao tópico de Samuel Barbosa Ramos em Programação - iniciantes
Olá @Samuel Barbosa Ramos. Eu estava respondendo a postagem anterior agora... rs. Vou reanalisar a sua nova resposta e jajá atualizo.. adicionado 7 minutos depois Então, vamos lá: Você está tentando resolver qual "problema"? Pelo que eu entendo, a postagem anterior tentou fazer este: Daí, a próxima etapa seria fazer este... Vá com calma... Deixa esse seu código guardado e tente fazer esse etapa que falta, posta aqui o código para analisarmos ou onde está com dúvidas. Obs.: Qual a versão do Visualg que está utilizando? sugiro que baixe a versão mais recente (3.6.0.5) e tente fazer o código nele. No aguardo. -
VisualG Construção algoritmo de numeração
Simon Viegas respondeu ao tópico de Vengefull em Programação - iniciantes
@Helen Fernanda de Souza, nesse ponto não é uma questão de ir mais afundo... só parar para entender a diferença entre um número E a posição desse número no vetor. No seu código você acha que está tentando excluir baseado no valor dos números, mas deve excluir baseado na posição desse número no vetor. Exemplo: Supondo que tenho um vetor de 5 posições. [1][2][3][4][5] A posição 1 tem o número 1. A posição 2 tem o número 2. A posição 3 tem o número 3. etc Se eu quero apagar o número 4 desse vetor, eu vou acessar a posição 4? correto?. Pois o número 4, está na posição 4. Algo como: vetor[4]:=0 Perceba que ter o número 1 na posição 1, o 2 na posição 2 etc... é só uma coincidência! A posição é uma coisa, o número contido na posição é outra. Apenas temos um número na posição que é igual a posição... Veja outro exemplo abaixo... Agora suponha esse mesmo vetor com outros números: [5][8][2][1][9] A posição 1 tem o número 5. A posição 2 tem o número 8. A posição 3 tem o número 2. etc Se eu quero apagar o número 8 desse vetor, eu vou acessar a posição 8?. Não! Pois o número 8 está na posição 2. Logo eu preciso acessar a posição 2. Algo como: vetor[2]:=0 Perceba que para excluir um número, o que está importando é a posição onde o número está. No seu problema, você tem um vetor de 90 posições, ou seja, indo da posição 1 a posição 90. Logo, você só pode excluir números que estão nessas posições! Ao fazer um: p:=randi(200)+1 // gera um número aleatorio Você está dizendo para o computador sortear uma posição que vai de 1 a 200!!!! Mas SEU VETOR SÓ TEM 90 POSIÇÕES!!!! Se o computador sortear qualquer número maior que 90, ao tentar acessar: se vetor_90_1[p]=0 ENTÃO//numero foi deletado Vai dar erro !!! Por exemplo, se sortear um valor 121 para p, esse trecho acima seria equivalente a: se vetor_90_1[121]=0 ENTÃO//numero foi deletado Ou seja, sorteie números de 1 a 90! Simples* assim É só isso: - posições de vetores x números contidos na posição. No aguardo. -
VisualG Construção algoritmo de numeração
Simon Viegas respondeu ao tópico de Vengefull em Programação - iniciantes
Olá @Helen Fernanda de Souza. É normal ter um pouco de dificuldades... um dos objetivos do estudo da programação é aprender a identificar os problemas... desenvolver um algoritmo é secundário! O foco é O PROBLEMA, daí vem o desenvolvimento de UMA SOLUÇÃO. Vamos zerar tudo e começar do zero... Se atente a esses pontos abaixo: 1 - Quando vai excluir um número dos vetores, seja ele o de 200 ou de 90, o que se escolhe é a POSIÇÃO do número no vetor, e não o número em si. Entenda que ao escolher um número para excluir, você não está informando o número que vai excluir, mas sim a posição que esse número está no vetor. Apenas acontece que no vetor de 200, a posição do número é igual ao número em si. <--- você precisa absorver isso! Qual a parte não está entendendo? inicialmente foque no entendimento do funcionamento, não na implementação do código! Se tiver duvidas sobre esse ponto, posta aqui o que não entendeu ou o que pode está confundindo! 2 - Abaixo está o trecho com erro: p:=randi(200)+1 // gera um número aleatorio se vetor_90_1[p]=0 ENTÃO//numero foi deletado Veja que o p representa a POSIÇÃO do número no vetor. Tem alguma dúvida em relação a isso? Se p é posição, e vetor_90_1 só tem 90 posições, como você vai sortear uma posição que vai de 1 a 200? No aguardo. No aguardo. -
VisualG calcule e exiba o valor do desconto e o valor a ser pago
Simon Viegas respondeu ao tópico de leandromichetti em Programação - iniciantes
Olá @leandromichetti. Por favor, poste o código aqui para analisarmos e também poder servi de base para outros usuários. Lembrando que existem outros pontos que não foram abordados ainda. No aguardo. -
VisualG Construção algoritmo de numeração
Simon Viegas respondeu ao tópico de Vengefull em Programação - iniciantes
Olá @Helen Fernanda de Souza, estamos entrando num ciclo vicioso.. rs Qual erro está dando? (respondo abaixo) Ao executar, está dando erro na linha 136, essa linha: Como já expliquei: Veja que nesse se acima você está usando p para posicionar o vetor, mas antes está sorteando um número de 1 a 200 para p: p:=randi(200)+1 // gera um número aleatorio Se o vetor vetor_90_1 só tem 90 posições, como você vai acessar as posições de 91 a 200? por exemplo, a posição 110 existe num vetor que vai de 1 a 90? Repito: Se não entendeu essa, ou outra parte, só dizer o que não entendeu ainda... Só ter um pouco mais de atenção! obs.: para fazer testes, deixe o computador gerar números. Ative os "ALEATORIO". //"Remove" 10 números do vetor inicial escreval() escreval("REMOVENDO 10 NÚMEROS DO VETOR INICIAL...") para i de 1 ate 10 faca repita OK:=verdadeiro //inicializa a flag como OK escreva("Digite o ",i:2," número de 1 a 200 para deletar: ") ALEATORIO ON //HABILITA O RECURSO DE GERAR VALORES ALEATÓRIOS aleatorio -20,210 //DEFINIE A FAIXA DE NÚMERO QUE PODEM SER GERADOS leia(excluir) ALEATORIO OFF //DESABILITA O RECURSO //OBS.: para faltar a ler pelo teclado, basta remover essas linhas se (excluir<1) ou (excluir>200) ENTÃO //se o número está fora da faixa válida escreval("Só pode ser número de 1 a 200") No aguardo. -
VisualG Algoritmo URI online 1968, Terra Desconhecida
Simon Viegas respondeu ao tópico de Samuel Barbosa Ramos em Programação - iniciantes
Olá @Samuel Barbosa Ramos. Tente focar na base dos problemas... ir do mais simples para o mais complexo. O segredo é fazer abstrações... Qual o objetivo maior do problema? Resp: A identificação de líderes. Ok, mas como identifico os líderes? Resp: Os líderes são aqueles que possuem um número com exatamente N divisores. Certo, então como identifico a quantidade de divisores de um número? Resp.: Aqui está o foco! Você precisa saber com faz isso. Perceba que a necessidade básicas vem do mais simples... saímos do mais complexo em caminho de algo mais básico... Então... seria mais ou menos o que você sugeriu: Para calcular os múltiplos de "N" números, é necessário saber calcular de 1 antes, correto?... Traduzindo, Você focar em fazer inicialmente algo assim: "Faça um programa que recebe um número X, e retorne o número de divisores que X possui". A base de conhecimento estaria encaminhada.. Depois, evolua o código para algo como: "Faça um programa retorne o número de divisores de 10 números". Perceba que executar para "10 números" também é uma base, se já fez isso para outra lógica qualquer, conseguirá adaptar para seu problema... Depois, algo como: "Faça um programa retorne o número de divisores de uma faixa de números, ex.: 5 a 20". Idem ao anterior, pereba que a "dificuldade maior" seria "achar a quantidade de divisores"... ir de "5 a 20" seria uma pequena diferença de 1 a 10... Por ai vai... a depender da experiência, já daria para ir direto ao objetivo... mas sempre ter em mente que a base é tudo. Não tem como tentar aprender a correr antes de saber andar. Veja que já sabendo calcular a quantidade de divisores, bastará verificar se essa quantidade é igual o valor desejado. RESUMINDO Sugiro que faça esse programa, para criar experiência: "Faça um programa que recebe um número X, e retorne o número de divisores que X possui". Percebe que o problema proposto é isso acima, só que com mais firulas... Posta o código aqui, e onde está com dúvidas. No aguardo. -
Portugol Empréstimo Bancário (Onde está o erro?)
Simon Viegas respondeu ao tópico de Túlio Estrela Marques em Programação - iniciantes
Olá @Túlio Estrela Marques. Qual programa usa para compilar o código? -
algoritmo de vendas com comissão
Simon Viegas respondeu ao tópico de lucaxxxxx em Programação - iniciantes
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 -
VisualG Exercício CPF valido ou não. Sem caracpenum()
Simon Viegas respondeu ao tópico de Nonu em Programação - iniciantes
@EduardoS Use HTML mesmo.. Para separar os dígitos, você pode usar a seguinte base lógica: Ou seja, com esse exemplo do @EduardoS, dá para ir "pegando" os números da direita para esquerda. No aguardo. -
VisualG Exercício CPF valido ou não. Sem caracpenum()
Simon Viegas respondeu ao tópico de Nonu em Programação - iniciantes
Olá @Nonu. Por favor, edite sua postagem seguindo a orientação: No aguardo. -
Pascal Programa para mostrar ordem crescente e decrescente Pascalzim
Simon Viegas respondeu ao tópico de iGodD em Programação - outros
Você quer usar o for para fazer o que? Veja, o for é só um tipo de laço de repetição, ou seja, você precisa de alguma lógica para ordenar... daí, talvez, essa lógica precise de um laço de repetição... entende? Possivelmente você esteja se referindo ao uso de vetores e ordenação destes... pois é comum usar o for para implementar uma estrutura de ordenação de vetor. Funciona assim: você armazena os quatros números num vetor, após, utiliza um método de ordenação já existente (você não precisa, nem deve, se preocupar em desenvolver uma lógica para ordenar... elas estão prontas! Basta estudar sobre o assunto) nele. Daí, ao exibir os números contidos no vetor, eles vão ser apresentados em ordem. Se quer em ordem crescente, ordene-a desta forma... se quer decrescente, idem. Pesquise sobre: - uso de vetores no Pascal; - algoritmos de ordenação (ou métodos de ordenação) Tente implementar algo, caso vá surgindo dúvidas que não consiga resolver, é só postar o código e em qual parte precisa de ajuda. No aguardo. -
VisualG Construção algoritmo de numeração
Simon Viegas respondeu ao tópico de Vengefull em Programação - iniciantes
Olá @Helen Fernanda de Souza. Por quanto deixe isso pra lá.. use do jeito que está, ou seja, remova informando a posição no vetor... Entenda que OS VALORES são de 1 a 200, mas só existem 90 POSIÇÕES. Quando se escolhe um número para excluir, na verdade você está escolhendo a POSIÇÃO do número, não o valor do número! Leia minha postagem anterior. Desculpe, mas como já citado, os seus textos estão um pouco confusos para mim, e fica um pouco complicado para entender... tente escrever de uma forma mais formal, especialmente em relação ao uso de pontuação. Então, não faz diferença a origem dos números, ou seja, se os 90 foram digitados pelo usuário, se já estava preenchido, se foram gerado automaticamente... etc. Apenas sorteie os números e pronto. Veja, eu tenho um vetor com 90 posições, daí sorteio 20 POSIÇÕES desse vetor. Da mesma forma que podemos sortear sortear 10 do vetor de 200.. podemos sortear 20 do vetor de 90... o computador não sabe se foi sorteado ou não, e também não faz diferença... O seu código já está assim, ou seja, apenas se atente que o número que recebe é o da posição, e que não importa o número que está nela! Tente reanalisar o código e fazer testes, por exemplo, na parte de "fixar" os 25, insira os números de 1 a 25 e veja o que acontece. Faça outros testes... tente entender a estrutura do código. No aguardo. -
VisualG Exercício CPF valido ou não. Sem caracpenum()
Simon Viegas respondeu ao tópico de Nonu em Programação - iniciantes
Olá @Nonu. Faça o seguinte: crie um algoritmo que faz essa verificação de CPF usando o Caracpnum(). Poste seu código aqui, depois damos um jeito. obs.: antes de postar um código no fórum, favor verificar postagem: No aguardo. -
Pascal Programa para mostrar ordem crescente e decrescente Pascalzim
Simon Viegas respondeu ao tópico de iGodD em Programação - outros
Olá @iGodD. Para facilitar, por enquanto esqueça a questão dos grupos. Apenas pegue os quatro valores (A, B, C, D) e mostre-os na ordem lida. Em seguida, organize-os em ordem crescente e decrescente. Uma coisa de cada vez... No aguardo. -
VisualG VisualG Finalizando o Código
Simon Viegas respondeu ao tópico de Adriano Mendonça em Programação - iniciantes
Qualquer modifica e entrega depois... -
VisualG Algoritmo no Visualg, não consigo resolver esses exercícios
Simon Viegas respondeu ao tópico de Samuel Barbosa Ramos em Programação - iniciantes
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 adicionado 3 minutos depois Olá @Samuel Barbosa Ramos. Comece fazendo a primeira parte. Poste o que já conseguiu fazer e onde está com dúvidas. No aguardo. -
VisualG faça um programa que leia três números, mostre-os em ordem decrescente
Simon Viegas respondeu ao tópico de Marcosxd20 em Programação - iniciantes
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 adicionado 0 minutos depois Olá @Theking01. Por favor, tente fazer algo... Poste aqui o que conseguiu fazer e onde está com dúvidas. No aguardo. adicionado 2 minutos depois ADENDO: sugiro faz uma coisa de cada vez. Primeiro coloca em ordem, depois faz outro código que só verificar se é par ou ímpar. Após, junta as duas coisas... não tente fazer ao mesmo tempo! -
VisualG calcule e exiba o valor do desconto e o valor a ser pago
Simon Viegas respondeu ao tópico de leandromichetti em Programação - iniciantes
Olá a todos. 1) INDENTAÇÃO DE CÓDIGO Dica fundamental: sempre deixe seu código bem indentado. Abaixo apenas indentei o código da primeira postagem de @leandromichetti: algoritmo "FCdH" var valor, descont, valorfinal :real ano :inteiro resp :caracter inicio Escreval("<><><><><><><><><><> CONCESSIONARIA DE VEÍCULOS CARANGO VELHO <><><><><><><><><><>") Escreval("") Repita Escreva("Qual o valor do veiculo? R$:") Leia(valor) Escreva("Qual o ano do veicúlo desejado?:") Leia(ano) Se ano <= 2000 ENTÃO valorfinal <- valor-(valor*(12/100)) senao //senao deve ficar numa linha separada [Simon.Viegas] Se ano > 2000 ENTÃO valorfinal <- valor - (valor*(7/100)) descont <- valorfinal - descont //essa linha está somente para maior que 2000 Fimse Fimse Escreval(" O valor de desconto é:", descont) Escreval(" O valor a ser pago pelo cliente é:", valorfinal) Escreval("") Escreval("") Escreva("Deseja continuar calculando o desconto? S/N") Leia(resp) Ate (resp = "n") fimalgoritmo Veja que só ao indentar, já fica visível duas possíveis falhas: o senao estava na mesma linha da instrução anterior; e o cálculo do desconto está apenas para uma das condições. 2) CÁLCULO DE DESCONTO No algoritmo tem o seguinte trecho: descont <- valorfinal - descont Mas no momento que esta linha é executada, qual o valor de descont? Como em nenhum momento ela foi atualizada, possivelmente vai está com o valor "0" (zero! pois o Visualg zera todas ao variáveis ao iniciar o programa), essa conta não está servindo, pois "x - 0" sempre será igual a "x" (elemento neutro da adição/subtração). Logo, usaria logo: descont <- valorfinal Ao analisar, é observável que você precisar "reformular a fórmula para calcular o desconto"; Resumidamente seria algo assim: valorfinal <- valor - desconto Ou seja, primeiro calcula o desconto, após, calcula o valor final (usando o desconto). Por enquanto é isso, mas lembrando que o enunciado tem outras exigências... Tente entender o problema e reformular o código. 3) SOBRE OS COMENTÁRIOS @VictorFreitasKing, Perfeito. Quando puder, pode deixar com parênteses... A dica é válida! Mas quando tem apenas uma expressão simples, não obrigatório. Já se tiver uma condição composta, o uso de parênteses se faz necessário. Ex.: se (ano > 2000) E (ano < 2017) ENTÃO Nesse caso, se não usar parênteses, vai dar erro! O uso do "senão" se faz necessário... justamente por ser condições mutuamente excludentes, ou seja, "se for uma, não poderá ser outra" (o senão vai servi para "amarrar uma condição na outra"). O que poderia está dando problema no Visualg é que esse senão deve ficar na linha de baixo (como citei mais acima)... o Visualg tem certas limitações e pequenos bugs. @gabriel sabadini, Justamente, mas o Visualg também aceita em alguns casos... por exemplo, não aceita "então", mas aceita ENTÃO. Vá entender!? Fica dica: quando o código não está na tag CODE, as vezes o "corretor ortográfico" do fórum insere o "~" no então. Por isso é importe usá-la. Basta clicar no botão <> e colar o código. Caso encontre um código com "então", use o "CTRL+U" no Visualg para substituir "então" por "ENTÃO". *** No aguardo. -
VisualG VisualG Finalizando o Código
Simon Viegas respondeu ao tópico de Adriano Mendonça em Programação - iniciantes
Olá @Adriano Mendonça. 1) VERSÃO DO VISUAL Pelo que observei, você está utilizando a verão 2.0 do Visualg (ou anterior). Sugiro que atualize para versão mais recente (3.0.6.5)., pois possui algumas atualizações e correções. A não ser que seja uma exigência do curso que esteja fazendo. Link para download:http://www.apoioinformatica.inf.br/produtos/visualg 2) INDENTAÇÃO DE CÓDIGO É recomendado que o código sempre esteja indentado. Além de poder ser critério de avaliação, ajuda na análise do código. Tomando como base o código anterior: var l,c,somalinha, total : inteiro numeros : vetor [1..4,1..5] de inteiro inicio para l de 1 ate 4 faca para c de 1 ate 5 faca numeros[l,c] <- RANDI(100) // NUMEROS ALEATORIOS DE 1 A 99 fimpara fimpara limpatela para l de 1 ate 4 faca somalinha <-0; para c de 1 ate 5 faca somalinha <- somalinha+numeros[l,c] fimpara total <- total+somalinha // TOTAL DA SOMA DAS LINHAS escreval ("A soma da linha : ",l, "-", somalinha) fimpara escreval ("A soma de todas as linhas : ", total) fimalgoritmo Desta forma, a estrutura do código fica visualmente explícita. Aproveitando, segue o código pequenas correções/sugestões: algoritmo "semnome" var l,c,somalinha, total : inteiro numeros : vetor [1..4,1..5] de inteiro inicio para l de 1 ate 4 faca para c de 1 ate 5 faca {numeros[l,c] <- RANDI(100)} // NUMEROS ALEATORIOS DE 1 A 99 numeros[l,c] <- RANDI(100)} //NÚMEROS ALEATORIOS DE 0 A 99 fimpara fimpara limpatela para l de 1 ate 4 faca somalinha <- 0; para c de 1 ate 5 faca somalinha <- somalinha+numeros[l,c] fimpara total <- total+somalinha // TOTAL DA SOMA DAS LINHAS {escreval ("A soma da linha : ",l, "-", somalinha)} escreval ("Soma da linha",l,":",somalinha) fimpara escreval ("Soma de todas as linhas :",total) fimalgoritmo 3) REQUISITOS DE SISTEMA Veja o que pede o enunciado: Ou seja, está sendo solicitado que seja gerado um vetor.... mas no seu código não está sendo seguido. Vou tentar explicar...: vejam, todos os "requisitos de sistema" que o seu "patrão" pediu devem ser seguidos... ele não pode pedir uma vitamina de abacate e ser entregue um suco de laranja, mesmo que o suco de esteja muito bem feito, ou que é mais gostoso, ou mais barato, ou mais prático... etc... entende? Ou faz o que ele pede, ou "faz uma negociação para mudar". Só para deixar claro, também não deve funcionar assim: "ah! se ele pediu sal na vitamina, vou botar sal, mesmo você achando que pode estragar"... tudo é uma uma questão de bom senso... será que ele quer sal mesmo? basta entrar em acordo, ou mesmo "descobrir" que ele gosta de sal na vitamina... O principal ponto ao tentar fazer um algoritmo é entender o que está sendo pedido. Parece óbvio, mas muita vezes deixamos isso passar.. é comum confundirmos "algo bem feito" com "algo certo" (vide a questão da "vitamina x suco"). Nesse sentido também entra a questão do "certo, do modo certo". Não é só o resultado que importa, mas também o método... tipo "eu quero vitamina de abacate batido a mão", daí não adianta me entregarem uma vitamina feita no liquidificador... mesmo que em ambos métodos sejam entregues "uma vitamina". Em fim... você precisa de outro vetor... algo como: SOMALINHA :vetor [1..4] de inteiro obs.: eu particularmente sugiro a nomenclatura de vetores no plural, pois o plural meio que já sugere que é um vetor... (no singular fica parecendo que é uma variável simples), ex.: somaLinhas :vetor [1..4] de inteiro Ai entre a questão do "requisito". Será que necessariamente tem que ser SOMALINHA ou é apenas uma sugestão? Sugiro que use como no enunciando, rs. 4) E A MATRIZ? O enunciado não diz como a matriz deve gerada... nesse sentido creio que ficou legal o uso da "geração automática"... facilita muitos nos testes... Mas além disso, acho que seria interessante também exibir os dados da matriz na tela. Algo como após gerar a matriz, desenhar ela a partir vetor... Por sinal, entendo que a matriz seja, inclusive, mais importante que a soma das linhas, ou seja, os pontos principais são "A matriz" e a "Soma das somas das linhas". A "soma de cada linha" seria mais secundária. Entende esse ponto de vista? Logo, deixe a soma das linhas, mas também exiba a matriz na tela.... até mesmo para ter referência. Como saber se a soma de cada linha está correta? quem garante que foi feito uma soma mesmo ou que você gerou a soma em si? Ex.: somalinha<-RANDI(150)+200 *** No aguardo. -
VisualG Construção algoritmo de numeração
Simon Viegas respondeu ao tópico de Vengefull em Programação - iniciantes
Olá @Helen Fernanda de Souza. Veja esse trecho: O código está lendo um valor que será usado para excluir do vetor.. E usa esse valor (em excluir) como parâmetro de posição do vetor... que só tem 90 posições. se vetor_90_1[excluir]=0 ENTÃO //se posição já está removida Esse "[ ]" serve para acessar determinada posição do vetor... Ou seja: Entenda que o código está excluindo tomando como base a POSIÇÃO no vetor, e não o valor do número que contém nas posições!!! Acontece que "coincidentemente", no vetor inicial, o número contido na posição é igual ao número da posição em si.. Mas no vetor_90_1, os números estão seguem essa mesma lógica, como visto no trecho abaixo: Ou seja, o vetor_90_1 vai sendo preenchido com os valores sorteados... RESUMIDAMENTE: Para excluir determinado número específico, você precisa ver em que posição ele está e informar essa posição para excluir. OU Reformular o código para que aceite que informe o número, daí localiza o número e apaga... OU Reformular de outra forma... Qualquer dúvida é só postar. No aguardo. -
VisualG VisualG não consigo resolver o exercício
Simon Viegas respondeu ao tópico de leandromichetti em Programação - iniciantes
Se for outro código, melhor criar um novo tópico... No aguardo. -
VisualG Construção algoritmo de numeração
Simon Viegas respondeu ao tópico de Vengefull em Programação - iniciantes
Olá @Helen Fernanda de Souza. Eu não entendi muito bem o que quis dizer... mas resumidamente: o vetor_90_1 só tem 90 posições, logo você só poderá remover as posições de 1 a 90 (inclusos). Ao inserir um valor maior que 90, o programa não vai aceitar, pois essa posição não existe. Perceba que estrutura do programa está voltada a posição, não ao valor do número... -
Outro Inserir ','(Virgula) em colunas no txt
Simon Viegas respondeu ao tópico de Gaspert3 em Microsoft Office e similares
Serviu? -
Outro Inserir ','(Virgula) em colunas no txt
Simon Viegas respondeu ao tópico de Gaspert3 em Microsoft Office e similares
Vou tentar fazer em Pascal/Delphi, serve? adicionado 28 minutos depois Aqui um esboço: Program Insere_Virgula; uses CRT; var linha :string; caminho :string; arqEntrada, arqSaida :text; BEGIN if Paramcount()=0 then writeln('Arraste o arquivo txt para cima deste programa') else begin caminho:=ParamSTR(1); writeln('Caminho do arquivo: ',caminho); writeln; writeln('Arquivo de saida : ','_TEMP.txt'); writeln; Assign(arqEntrada,caminho); //associna o arquivo ou caminho recebido por parâmetro Reset(arqEntrada); //tenta abrir o arquivo Assign(arqSaida,'_TEMP.txt'); Rewrite(arqSaida); //cria ou recria o arquivo while (not EOF(arqEntrada)) do begin readln(arqEntrada,linha); Insert(',',linha,Length(linha)-1); writeln(arqSaida,linha); writeln(linha); end; end; Close(arqEntrada); Close(arqSaida); write ('Pressione qualquer tecla para finalizar'); ReadKey; END. Ai você precisa de um compilador Pascal para gerar o executável. obs.: como o arquivo é .exe, não é recomendado eu compartilhar o arquivo, pois apesar das boas intenções, o arquivo poderia conter vírus... Abaixo um teste: No aguardo.
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