-
Posts
3.940 -
Cadastrado em
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Simon Viegas postou
-
Olá. Resumidamente: você precisa revisar os se. Tem "comandos escritos errados" e faltando "(" ou ")". Não vou dar simplesmente a correção pronta :), mas para facilitar: 1) dê uma olhada nos Operadores Relacionais; (tem alguns escritos errados) 2) as "operações relacionais" (cálculos que usam operadores relacionais) são individuais, cada operação tem que ficar entre parênteses isoladamente, ou seja, na prática, os Operadores Lógicos atuarão com o resultado dessas operações, ex.: se (<operação-relacional>) <Operador Lógico> (<operação-relacional>) <Operador Lógico> (<operação-relacional>) então Sempre um "e" ou "ou" devem ficar entre dois parênteses! (Não deve ficar logo ao lado do conteúdo da operação relacional) *** No aguardo
-
Olá. Então, você já conseguiu resolver o problema num contexto do "mundo real"? Como seria? Pelo que eu entendi, você faz logo todas as perguntas e armazena as respectivas respostas, OK. Mas como você trataria essas respostas? Sei que foi um esboço, mas vamos tentar analisar o seu código: se ((rres<-24) e (rres<-17)) então escreval("xxx") senao escreval("xxx") fimse Vamos supor que o cliente (ou a informação que você coletou) diz que a recepção funciona apenas 12 horas. No seu se, você verifica se "quantidade de horas que a recepção funciona é menor que 24" E "quantidade de horas que a recepção funciona é menor que 17" então escreva algo //que seria equivalente a "diga algo ao cliente? senão escreve algo //que também seria equivalente a "dizer (outro) algo ao cliente? Entende? Primeiro você precisa entender o problema (acho que já entendeu), depois desenvolver uma solução, ou seja, um fluxo de passos para resolvê-lo e só após traduzir para uma linguagem... *** Para servi como base, deixei seu código "compilável". Obs.: nos testes, você não precisa perguntar tudo de uma vez. Aos poucos vai inserindo as perguntas e testando. Algoritmo "Hotel" // Disciplina : Desenvolvimento de Games. // Professor : Basílio. // Descrição : Verificação da classificação do Hotel. // Autor(a) : Carlos Augusto R. de Oliveira. // Data atual : 25/12/2016 Var rrep, rroupas, rroupas2, rporc, rporc2, rqtr, rban, restrela:real lcafe, ltv, lrefr, lnet, lhidro, lar, lest, lmano, lcol, lban2, lres, lserv, lserv2, ldiet, lbar:logico cestrela :caractere Inicio Escreval("Quantas horas a sua recepção funciona por dia ?") leia(rrep) escreval("Qual o tamanho de quarto mais comum (m²) ?") leia(rqtr) escreval("Qual a porcentagem dele em relação a todos os quartos (%) ?") leia(rporc) se (rrep<24) e (rrep<17) então escreval("ESSE TEXTO SAIU DO então") senao escreval("Esse texto saiu do SENAO") fimSe fimAlgoritmo No aguardo. adicionado 3 minutos depois Obs.: o "então" não tem "~". Se quiser incluir o 24 ou 17 na verificação, usam-se "<="... o símbolo "<-" serve para "atribuição", ou seja, jogar o valor da direita na variável que está na esquerda... e no VisuAlg não funciona dentro do se!
-
leitura de arquivos txt em pascal
Simon Viegas respondeu ao tópico de carlosmixz em Programação - outros
Olá @carlosmixz. 1) ASSINALANDO O ARQUIVO Se você criou uma constante, por quê inseriu o texto manualmente? Acho que seria algo como: assign(arq_posmau,caminho); 2) ESTRUTURA DO PASCAL O Pascal executa os comando "esquerda para direita, de cima para baixo", da mesma forma que efetuamos leituras de texto. Então, ao começar rodar o begin principal executará primeiro o assign(), depois o rewrite(), e "entrará" no for... dentro do for, irá ir executando o writeln, certo? lá tem: writeln(arq_posmau,posmau[i]); No primeiro loop, o i vale 1. O posmau[] é uma array, logo ao usar posmau[i ], você estará acessando a posição 1 desse array, mas qual valor está nessa posição se o programa acabou de começar? ou seja, você estará escrevendo '' (um texto com nenhum caractere*. *obs.: ao executar um programa, o Pascal automaticamente "zera" as variáveis, logo, todas as posições do array vão conter esse texto vazio Ou seja, é um processo mecânico... para escrever, você posiciona e escreve. Para ler, você posiciona e ler... antes de escrever, você já precisa ter o que quer escrever, entende? Em relação a leitura, você precisa reposicionar, com um reset(), e usar o read() para fazer o caminho inverso, ou seja, o writeln() joga da variável para o arquivo, e o read() jogo do arquivo para variável... *** Obs.: o rewrite() serve para reescrever o arquivo, logo, se o arquivo já existir, ele vai ser apagado! E após deixa o arquivo aberto para escrita. Para abrir sem apagar ou configurar para leitura, pode usar o reset(), e caso queira posicionar, tanto para escrita ou leitura, pode usar o seek(). Mas no seu caso não precisa posicionar, já que fará uma leitura sequencial. No aguardo. -
@Augusto Ruviaro, como "moderador", agradeço pelos ajustes... Como "colaborador", sugiro o seguinte: Em relação ao problema do algoritmo em si, tente imaginar como você faria para processar manualmente essa tarefa, ou seja, como se fosse um problema que está enfrentando no "mundo real"... imagine você como um atendente e seu chefe "largou nos seus peitos" a responsabilidade de resolver isso!!! Como você faria? A questão de como utilizar os "SE" no VisuAlg seria uma etapa posterior, ou seja, "de como traduzir" o seu algoritmo para uma linguagem de programação específica. Tente primeiramente tentar resolver sem se preocupar na tradução... como se não fosse necessário traduzir depois... seria como uma tarefa real e pronto... esqueça o VisuAlg, tente simplesmente "resolver esse problema". No aguardo.
-
.bat não executa no Windows 10
Simon Viegas respondeu ao tópico de Eletronortico em Programação - iniciantes
@Eletronortico, obrigado pelo FeedBack. A sua solução pode ser muito útil para outros usuários com a mesma dificuldade. -
TurboPascal error 85 ";"
Simon Viegas respondeu ao tópico de Thiago de Jesus em Programação - outros
Olá @Thiago de Jesus, Seja Bem Vindo ao Fórum do Clube do Hardware :). 1) COMO POSTAR UM CÓDIGO NO FÓRUM Ao postar um código, é necessário utilizar a tag CODE... Por favor, dê uma olhada nesse tópico. Obs.: Já editei a sua postagem anterior e já inseri a tag. 2) SINTAXE PASCAL No momento não sei explicar exatamente a qual erro o Turbo Pascal está se referindo..., mas em relação a sintaxe do Pascal, você deveria usar "()" no lugar do "<>". Ex.: Mas o correto seria: write('Digite o primeiro valor: '); O mesmo vale para os read... use "()" em vez de "<>" 3) READ X READLN Veja, esse "ln" do readln não é igual a "ln" do writeln. Resumidamente: Não use read, use apenas readln. Simples assim!!! Por enquanto, esqueça que existe o read (sem o ln)... sempre use readln!. Se quiser saber um pouco mais sobre, dê uma olhada nesse tópico: *** No aguardo. -
Como tirar média na estrutura de Vetores?
Simon Viegas respondeu ao tópico de Thetheu Diias em Programação - outros
Olá @Thetheu Diias. 1) Não use read, use somente readln Resumidamente é isso: troque os read por readln. Um pouco sobre aqui: 2) Cálculo de média Para calcular algo, é recomendado primeiro entender como funciona esse algo... Um pouco sobre aqui: https://pt.wikipedia.org/wiki/Média_aritmética Então, veja o que você precisa para calcular uma média, "encontre" esses valores e calcule. *** No aguardo. -
Mostra uma linha ou uma coluna de uma matriz
Simon Viegas respondeu ao tópico de pinheiro18 em Programação - outros
Olá @pinheiro18. Seja bem vindo ao Fórum do Clube do Hardware. Será análogo a imprimir um array, basta deixar uma das coordenadas fixas. Ex.: Se você que imprimir a linha 2... você deixa a coordenada da linha fixa na posição 2 e faz a variação da coluna (geralmente de "1 até o tamanho das colunas". No aguardo. -
Matrizes - notas de 5 alunos diferentes
Simon Viegas respondeu ao tópico de ET Bilu em Programação - iniciantes
Olá. Um adendo: Em relação a média, recomendaria duas opções: - Ou a média seria uma variável simples (sem ser vetor). - Ou a média seria um vetor simples (de uma coordenada) Recomendo a primeira opção, pois a média é basicamente um cálculo. Calcula ela e exibe. Não precisa armazenar essa informação. Em relação ao somatório, se estiverem se referindo a "soma das notas do aluno", idem a médias: não precisa armazenar. Seria uma variável simples. Exemplo de como poderia ficar as variáveis: var nomes :vetor[1..15] de caractere notas :vetor[1..15,1..5] de real somatorio, media :real c,l,i :inteiro No aguardo. -
calcular aumento de salário salario pascal
Simon Viegas respondeu ao tópico de FAWAUGHAN em Programação - outros
Olá a todos; Um adendo: Essa conta do aumento tem um errinho. Pois o "aumento" é o que "vai ser aumentado". Mas esse cálculo, como @willink0 mesmo sugere, é do novo salário em si. (são coisas próximas, mas distintas) Aumento: aumento:= sal * 25/100; Novo salário: novo_sal:=sal + aumento; ou como sugerido por @willink0: novo_sal:=sal + (sal*25/100); //valor atual + 25% do valor atual *** No aguardo -
Programação pascal calculo de desconto bancário com erros
Simon Viegas respondeu ao tópico de kakajr10 em Programação - outros
Olá @kakajr10. Basicamente você apenas precisa tentar compilar e analisar o erro reportados... Resumidamente seria: 1) COMPARAÇÃO DE CARACTERES Para comparar textos, utilizam-se aspas simples. Ex.: No trecho abaixo você utiliza F. Daí o compilador acha que F é uma variável. Mas na verdade você quer comparar com o caractere, logo ficaria 'F', IF (CLIENTECR='F')AND(VALORCR<100) THEN BEGIN TAXACR:=VALORCR*0.07; END; 2) AINDA EM COMPARAÇÃO DE CARACTERES Usa está usando: A comparação está com 3 caracteres "espaço+'n'+espaço"... Mas o tipo utilizado em respcr é char, ou seja, só aceita um caractere. RESUMIDAMENTE: tire os espaços... ficando: until (respcr='n'); 3) ATRIBUIÇÃO DE VALORES Para atribuir um valor, usam-se ":=", em vez de "=". DESCONTADOCR:=VALORCR*(1+TAXACR*DIASCR/3000); *** Por ai vai... Vá compilando e testando.. No aguardo. -
Visualg como calcular imc?
Simon Viegas respondeu ao tópico de RafaelLittleo em Programação - iniciantes
Olá. @RafaelLittleo, a primeira coisa que precisa ser analisado é "o que você precisa"... como deveria funcionar o "Monitoramento do Paciente"? Seriam várias IMCs para um mesmo paciente? Então, outro ponto a ser analisado é se você precisa armazenar o IMC ou o Peso. Pelo que eu entendi, o correto seria armazenar a ALTURA e o PESO, pois o IMC é um "cálculo", que pode ser obtido através desses dois dados. Seguindo esse princípio, as variáveis poderiam ficar mais ou menos assim: Var nomes : vetor [1..100] de caractere alturas : vetor [1..100] de real rel_pesos : vetor [1..100,1..5] de real //"Relação de Pesos". 5 pesos para cada paciente total : inteiro //total de pacientes i,j : inteiro //auxliares para percorrer os vetores Obs.: veja que sugiro usar as nomenclaturas dos vetores no plural, pois são mais de um dado! (ex.: nome = uma variável, que armazena um nome. nomes = vetor que armazenas nomes) Daí, o cadastro dos pesos é feito da mesma forma que do nome e altura, a diferença é que tem um "parâmetro a mais", que no caso se refere a "relação de pesos", ou seja, cada paciente pode cadastrar até 5 pesos. Na hora do cadastro inicial (fora do relatório) você pode cadastrar apenas um peso, no caso, ficando na posição 1. Ex.: escreval ("digite o peso do paciente: ") leia (rel_pesos[total,1]) //cadastra o primeiro peso do paciente Para ter acesso a um determinado peso, a mesma coisa: basta especificar "qual peso quer". Se for o primeiro peso: IMC <- rel_pesos[i,1]/(alturas[i]*alturas[i]) Sendo que i variaria de 1 até o total de cadastros. Se forem todos os pesos IMC <- rel_pesos[i,j]/(alturas[i]*alturas[i]) Sendo que i variaria de 1 até o total de cadastros e o j variaria de 1 até o total de pesos. Ou seja, na hora de cadastrar lá no monitoramento, o j iniciaria de 2 e iria até 5, pois o primeiro peso já foi cadastrado lá no "Cadastro". OBSERVAÇÃO: Veja, essa sugestão se baseia que você irá cadastrar todos os pesos de uma vez só lá no monitoramento. Caso contrário, teria que imaginar alguma forma para controlar quantos pesos cada um dos pacientes já cadastram. (dá para fazer também, mas teria que ser projetado com mais calma) *** Qualquer dúvida é só postar. No aguardo. -
No Pascal temos o tipo word. obs.: Não sei se funciona em qualquer compilador (usei muito no TurboPascal... <-- muito bom por sinal!).. Vide exemplo de tabela para FreePascal: Fonte: http://freepascal.org/docs-html/ref/refsu5.html
-
Problema com estrutura de repetição - algoritmo de banco
Simon Viegas respondeu ao tópico de ET Bilu em Programação - iniciantes
Olá @ET Bilu. Se possível, poste o seu código completo para analisarmos. Pode ser que em coisas para corrigir/melhor, ex.: Nesse trecho, você "atribui" o valor depositado na conta, em vez de "acrescentar", ou seja, se o cara tiver 1000 e depositar 40, ele fica só com 40 (em vez de 1040). O vetor cliente é onde está armazenando o saldo? Nesse caso, seria recomendado utilizar outra nomenclatura, como por exemplo saldo. No aguardo. -
Olá @Medivh e @Alex Temnyk. Vou tentar não aprofundar, e falar o que acho que sei/lembro de cabeça... Então, creio que a definição de inteiro dependa da linguagem de programação, e até mesmo do compilador (ou "biblioteca de tipos"). É algo "definido/criado" por alguém/organização... Nesse contexto, 2 bytes seriam iguais a 16 bits, pois 1 byte = 8 bits. (obs.: acho que @Alex Temnyk confundiu "byte" com "kilo" :)). 2^16 = 65536. Veja: o texto fala de números, não de caracteres! De qualquer forma, quantos possibilidades tem em um caractere? entende? Como você mesmo sugere, um caractere ocupa (acho) um byte, ou seja, 8 bits. 2^8 = 256. Logo, 256 possibilidades. (a..z + A..Z + caracteres com acentos + caracteres especiais + "comandos" (ex.: ENTER, ESC, TAB) etc)... Dentro dessas possibilidades o "alguém/organização" define o que cada uma dessas possibilidades significa... Como "inteiros" usam positivos e negativos, metade* foi prum lado, a outra por outro, ou seja, de "-32767 a 32768" (lembrem-se tem o 0). Um exemplo hipotético: 0.000.000.000.000.000 = 0 0.000.000.000.000.001 = 1 0.000.000.000.000.010 = 2 ... 0.000.000.000.000.100 = 8 ... 1.111.111.111.111.101 = -32765 1.111.111.111.111.110 = -32766 1.111.111.111.111.111 = -32767 O 32768, nesse exemplo, ficaria no meio* (preguiça de calcular). O mesmo ocorre com os caracteres, que para "traduzir", utilizam de uma tabela. Cada possibilidade seria uma coisa... para facilitar a comunicação podem tentar criar/utilizar padrões, como da Unicode (vide codificação de texto... tem um monte de "padrões").
-
Olá @Diogo Dark. Para sabermos o que está errado, precisamos saber o que você quer fazer... . Pelas linhas no final, creio que você queria algo como "a soma das idades informadas pelo usuário", correto? Mas vamos lá, abaixo seu código com alguns comentários; uses SysUtils; Var Idade:Array[1..10] of integer; //[1] ID :Real; //[2] Soma2:integer; I :Integer; begin For Soma2:=1 To 10 Do //[3] Begin Writeln('Digite a idade ',I); readln(Idade[I]); //[4] writeln(idade[i]); ID:=Idade[I]+Idade[I]; //[5] end; Writeln('A soma das idades e: ',ID :2:2); readln; end. {[1] Está utilizando um array para armazenar as idades. Mas veja que essas idades não são utilizadas depois, logo quebrando o "conceito de armazenamento". (se não vai usar, não faz sentido armazenar). Pode deixar com array por enquanto! Depois analisa com mais calma!!! [2] Pela últimas linhas, a variável ID é a que vai ficar com o resultado da soma da idades, correto? De um modo geral, é aconselhável que as variáveis tenham uma nomenclatura que sugere a sua finalidade, ou seja, se ID vai armazenar a soma, por quê não usar "Soma" ou "Total" ou "SomaDasIdades" etc? [3] No "for", você está utilizando uma variável de nomenclatura Soma2. Até ai ok. Analisando o conteúdo do "for", verifica que você não está utilizando a variável, logo, o Soma2 está servindo apenas para controlar o "for". No item [4] explico melhor. [4] Nessa linha, você está utilizando a variável I, mas qual o valor dessa variável? As variáveis precisam ser "inicializadas" (ter um valor inicial). Então, por padrão, o Pascal já faz isso (mas é um papel do programador), ou seja, as variáveis numérias começam com "0". Logo, deve está com o valor "0" naquela momento, que por sua vez o array Idade não possui essa posição (pois vai de 1 a 10). Resumidamente: No lugar de "Soma2", deveria ficar o I. Daí o I iria variar de 1 a 10, o que poderá utilizar para "percorrer" o array como desejado. [5] Ai surge o ID (que sugiro que mude essa nomenclatura, como dito em [2]). Vamos analisá-lo: ID=Idade[I]+Idade[I]. Como "I" sempre está valendo "0", ID=Idade[0]+Idade[0]. Como dito em [4], essa posição não existe! Daí, vai dar problema (ou deveria dar!). Ainda em relação a essa soma. Vamos supor que já corrigiu o controle do array (item [4]), de qualquer forma a soma ficaria errada, veja: Tendo ID=Idade[I]+Idade[I]. Supondo que no I=1 você digitou 18. Logo, ID=18+18 -> ID=36. No I=2, você digitou 20 como idade. Logo, ID=20+20 -> ID=40, ou seja, ID vai ter sempre o dobro da última idade (em vez da soma de todas). } *** Minha sugestão: Pegue o seu código atual, e faça uma espécie de teste de mesa para entender mais ou menos como está a situação atual. Anote as variáveis num papel ou no Bloco de Notas do Windows, ex.: As variáveis começam com esse valor (pelo menos seria o padrão) IDADE: [1] [2] [3] [4] [5] [6] [7] [8 [10] //posição 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 //valor na posição ID = 0 Soma2= 0 I = 0 Daí, a cada linha que você for executando mentalmente, vai atualizando elas. Ex.: Após iniciar o FOR, a variável que está como controle (Soma2) ficará com o valor que atribuiu lá, ou seja, 1. IDADE: [1] [2] [3] [4] [5] [6] [7] [8 [10] //posição 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 //valor na posição ID = 0 Soma2= 1 I = 0 Na segunda linha dentro do for, temos um "readln(Idade[i ]);", quanto vale "I" nesse momento? "0", daí, na posição "0" de idade, terá o valor que você quiser atribuir, ex.: 30. Ao ir para tabela de variáveis, verás que não existe a posição "0". Entendeu? Após, tente corrigir o código e faça esse mesmo teste de mesa (se mudar as variáveis no programa, precisa atualizar na tabela) e veja como o programa se comporta. Vai testando, e entendendo o fluxo... com a prática, dá pra ir meio que fazendo de cabeça... No aguardo.
-
Pesquisar e excluir dados num arquivo txt
Simon Viegas respondeu ao tópico de Arthur Xavier em Programação - outros
Olá @Arthur Xavier. Seja bem vindo ao Fórum do Clube do Hardware. 1) COMO POSTAR UM CÓDIGO Ao postar um código, favor utilizar a tag CODE. Abaixo o link fala sobre como usar! Por favor, edite sua postagem, apague (ou recorte) o código, e insira novamente utilizando a tag. 2) ARQUIVOS DE TEXTO Abaixo tem um link de uma postagem semelhante a sua dúvida. Por favor, verifique se é útil para você. Caso tenha dúvidas, sobre algo, é só postar também. *** No aguardo. adicionado 4 minutos depois Obs.: por sinal, os códigos são um pouco parecidos. Como sugestão, recomendo que se aprofunde um pouco sobre essa parte de manipulação de arquivos, que de certo modo não tem nada de muito complicado, e refaça o código. Até mesmo com recursos mais simples por enquanto... Qualquer dúvida estamos a disposição para tentar ajudar. Abraços -
Olá @Diogo Dark. Seja bem vindo ao Fórum do Clube do Hardware. Primeiramente, peço que edite sua postagem, e poste novamente o seu código, mas lembrando de utilizar a tag CODE (botão <>). Mas sobre aqui: http://forum.clubedohardware.com.br/forums/topic/1136705-tag-code-como-e-para-que-usar/ Feito isso, crie uma nova resposta explicando melhor o que você precisa (enunciado) e o que está dando erro no seu código. No aguardo.
-
Matrizes - produtos de uma loja
Simon Viegas respondeu ao tópico de ET Bilu em Programação - iniciantes
Olá. Sobre: Estou me referindo a esse trecho. Você está lendo o preço, logo exibindo os dados... Eu não estou dizendo que necessariamente tem que ser separado, mas o seu código acima está junto. Se for como estou sugerindo, primeiro você ler todos os preços... após exibe os dados como foi pedido. -
Matrizes - produtos de uma loja
Simon Viegas respondeu ao tópico de ET Bilu em Programação - iniciantes
Olá. Pelo que eu entendi, você está exibindo os dados da matriz junto com a leitura deles... acho que deveria separar: primeiro ler, depois exibe. PS: por que está utilizando "c" e "l" para matriz? é inicial de algo? -
VisualG Programa para armazenar o RG de 100 pessoas
Simon Viegas respondeu ao tópico de anonymouatour em Programação - iniciantes
Olá. Legal! Em relação ao excluir, perceba que você apenas "zerou" o RG. Daí, nas outras partes do código, precisaria verificar se os cadastros estão apagados ou não, ou seja, algo como "se func[i ] é diferente de '0'". Caso deseje, poste seu código completo que poderíamos dar uma revisada e até passar outras sugestões para melhorias e/ou correções. No aguardo. -
Questão: algoritmo eleição
Simon Viegas respondeu ao tópico de Kaio Gomes em Programação - iniciantes
Olá @Kaio Gomes. Percebi que você está tirando a dúvida de outros algoritmos... sugiro que tente focar em um. De preferência o mais fácil. Vá postando, no tópico correspondente, até resolver. Depois parte para o próximo. -
Verificar se o numero do documento existe no conjunto de Vetores
Simon Viegas respondeu ao tópico de Kaio Gomes em Programação - iniciantes
Olá. Só um adendo: 1) COMO POSTAR UM CÓDIGO @Kaio Gomes, por favor, ao postar um código utilize a tag CODE (botão <>). Um pouco soube aqui: Dessa forma, o seu código manterá melhor a estrutura de identação e evitará que "suma" as coordenadas "[i ]", como lá no v1. *** Em relação ao código em si não tenho muito a acrescentar no momento. Sugiro que analise as sugestões de @devair1010 e corrija o seu código. 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