Ir ao conteúdo

Simon Viegas

Membro VIP
  • Posts

    3.940
  • Cadastrado em

Tudo que Simon Viegas postou

  1. Olá @joao emilio borges garcia. O código já está funcionando? faça uns testes de mesa, ou seja, utilize valores que você já sabe quais seriam os resultados e compara utilizando o programa... Mas tem um "errinho" no código... Veja, abaixo apenas peguei o seu código e reidentei: Algoritmo "futebol" // Função : Criar Algoritmo para Futebol // Autor : João Emilio // Data : 18/04/2017 // Seção de Declarações Var // Seção de Declarações das variáveis jogadores :vetor[1..20,1..8] de caractere continuar :caractere //flag para verificar se deseja continuar cadastrando MAXIMO :inteiro //maximo de jogadores possíveis i :inteiro //utilizado para controlar os for quant :inteiro //quantidade de pessoas cont :inteiro //quantidade de impressões na tela (não imprimir tudo de vez) Maisgoleador :caractere //Exibe o Mais Goleador Maior :real somaAltura :real mediaAltura :real somaPeso :real mediaPeso :real somaIdade :real mediaIdade :real somaGols :real somaJogos :real mediaGols :real somaPassesCorretos :real somaPassesErrados :real mediaPassesCorretos :real mediaPassesErrados :real mediaJogos :real Inicio // Seção de Comandos, procedimento, funções, operadores, etc... MAXIMO<-3 //CADASTRO DE Jogadores continuar:="s" enquanto (continuar = "S") ou (continuar = "s") faca //APRESENTAÇÃO DO PROGRAMA escreval() escreval("================================") escreval("ETEC Prof.Alcídio de Souza Prado") escreval(" FUTEBOL ") escreval("================================") escreval() quant:=quant+1 escreva("Nome do Jogador................: ") leia(jogadores[quant,1]) escreva("Altura do Jogador..............: ") leia(jogadores[quant,2]) escreva("Peso do Jogador................: ") leia(jogadores[quant,3]) escreva("Idade do Jogador...............: ") leia(jogadores[quant,4]) escreva("Número de Jogos................: ") leia(jogadores[quant,5]) escreva("Número de Gols.................: ") leia(jogadores[quant,6]) escreva("Número de Passes Corretos......: ") leia(jogadores[quant,7]) escreva("Número de Passes Errados.......: ") leia(jogadores[quant,8]) escreval() escreval() se quant < MAXIMO então escreva("Quer Cadastrar Mais Um Jogador ? < S/N > ") leia(continuar) senao escreva("Só Pode Cadastrar Até",MAXIMO," Jogadores... Tecle Enter") leia(continuar) continuar:="n" fimse limpatela fimenquanto //Cálculo de Resultados Maior <- 0 para i de 1 ate quant faca somaAltura <-(caracpnum(jogadores[i,2])+ somaAltura) somaPeso <- (caracpnum(jogadores[i,3]) + somaPeso) somaIdade <- (caracpnum(jogadores[i,4]) + somaIdade) somaGols <- (caracpnum(jogadores[i,6]) + somaGols) somaJogos <- (caracpnum(jogadores[i,5]) + somaJogos) somaPassesCorretos <- (caracpnum(jogadores[i,7]) + somaPassesCorretos) somaPassesErrados <- (caracpnum(jogadores[i,8]) + somaPassesErrados) mediaAltura <- somaAltura/quant //Média de Altura mediaPeso <- somaPeso/quant //Média de Peso mediaIdade <- somaIdade/quant //Média de Idade mediaGols <- somaGols/somaJogos //Média de Gols Por jogo mediaJogos<- somaJogos/quant //Média de Jogos mediaPassesCorretos <- somaPassesCorretos/quant //Média de Passes Corretos mediaPassesErrados <- somaPassesErrados/quant //Média de Passes Errados se (caracpnum(jogadores[i,6]) > Maior ) então //Mais Goleador Maisgoleador <-(jogadores[i,1]) Maior <- (caracpnum(jogadores[i,6])) fimse //Exibição dos resultados cont<-0 escreval() cont:=cont+1 escreval("Nome do Jogador ---> ",jogadores[i,1]) escreval("Altura ------------> ",jogadores[i,2], " Metros") escreval("Peso --------------> ",jogadores[i,3], " KG") escreval("Idade -------------> ",jogadores[i,4], " Anos") escreval("Número de Jogos ---> ",jogadores[i,5], " Jogos") escreval("Número de Gols ----> ",jogadores[i,6], " Gols") escreval("Número de Passes Corretos ---> ",jogadores[i,7], " Passes") escreval("Número de Passes Errados ---> ",jogadores[i,8], " Passes") se cont=3 então cont:=0 escreval() escreval("Tecle Enter Para Continuar") leia(continuar) fimse fimpara //TOTAL escreval() escreval() escreval() escreval() escreval("===================================") escreval("Total DE Jogadores Digitados ------> ",quant) escreval("Média de Altura dos Jogadores -----> ",mediaAltura:1:2, " Metros") escreval("Média de Peso dos Jogadores -------> ",mediaPeso:2, " KG") escreval("Média de Idade dos Jogadores ------> ",mediaIdade:2, " Anos") escreval() escreval("Média de Gols por Jogo ------------> ",mediaGols:2:2, " Gols Por Jogo") escreval("Média de Jogos por Jogador --------> ",mediaJogos:2," Jogos Por Jogador") escreval("Média de Passes Corretos por Jogo -> ",mediaPassesCorretos:2, " Passes Por Jogo") escreval("Média de Passes Errados por Jogo --> ",mediaPassesErrados:2, " Passes Por Jogo") escreval() escreval() escreval("Nome DO JOGADOR MAIS GOLEADOR -----> ",Maisgoleador) escreval("===================================") fimalgoritmo Observe que você colocou novamente o cálculo das médias está dentro do para. Esse trecho: Então, esse cálculo acima só precisa ser feito uma vez... se colocar dentro do para, a cada volta (loop) o programa irá calcular novamente... (desperdício de recurso - "calculará a média com um jogador, depois calculará a média com 2, com 3... etc, mas o que interessa é somente a média final). Ou seja, o cálculo da média vem depois... Tente entender o processo...., como se calcula uma média? ou seja, "é a soma dos valores (somaXXX) dividido pelo número total de valores (quant)". O para estará servindo para "somar" os valores, daí você não pode (não deve) ao mesmo "ir calculando a média"... faz uma coisa, depois a outra... são etapas diferentes! RESUMINDO Coloque esse trecho de código acima depois do fimPara. Após faz os testes e vê se os resultados estão corretos. Obs.: perceba que essa alteração que estou sugerindo não alterará o resultado dos cálculos, ou seja, será "apenas" uma correção na lógica ("primeiro somo os valores, depois calculo as médias"). No aguardo.
  2. Olá @joao emilio borges garcia. 1) AJUSTE DE COMENTÁRIO Acho que tá mais para 2) SUGESTÃO DE ORGANIZAÇÃO Para enxugar um pouco o código, veja exemplo abaixo: mediaAltura <- somaAltura/quant //Média de Altura mediaPeso <- somaPeso/quant //Média de Peso mediaIdade <- somaIdade/quant //Média de Idade mediaGols <- somaGols/somaJogos//Média de Gols Por jogo mediaJogos <- somaJogos/quant //Média de Jogos mediaPassesCorretos <- somaPassesCorretos/quant //Média de Passes Corretos mediaPassesErrados <- somaPassesErrados/quant //Média de Passes Errados se (caracpnum(jogadores[i,6]) > Maior ) então //Mais Goleador Maisgoleador <-(jogadores[i,1]) Maior <- (caracpnum(jogadores[i,6])) fimse Obs.: Tem um erro de lógica ai, pois "Mais Goleado" necessita do para. (vide item 4) 3) REAPROVEITAMENTO DE ESTRUTURA Observe que lá em Nessa parte que "exibição" tem um para que exibe os dados dos jogadores... e ele tem o mesmo tamanho que o para que o para lá em "calcula". Daí, seria até possível juntar uma coisa na outra... (se fosse o caso, a parte que calcula a média teria que também ficar abaixo do para). Mas acho que do jeito que está tá bom!!! (quis comentar sobre isso, mas não ligue por enquanto) 4) MAIS GOLEADOR.. Veja que nessa cálculo é necessário verificar a cada loop, logo deverá ficar dentro do para. Qual erro está dando? (de qualquer forma, uma coisa é certa: não é para ficar fora... ou seja, a tática de retirar teoricamente só serviria para a evitar o erro de sintaxe (bug ou erro na sua programação ), mas por si só já trouxe um erro de lógica) *** No aguardo.
  3. Olá @Milton Augusto. Inicialmente, por favor, transcreva o seu algoritmo para texto... daí, edite a postagem e use a tag code (botão <> na barra de ferramentas) para colar... Então, em relação a "faixa de números", você pode usar um laço de repetição que controlará um "contador" que irá variar do número inicial e finalizar no número final. Existem 3 tipos básicos de laços: "para", "enquanto" e "repita", certo? nesse caso, o mais simples seria usar para, pois na própria estruturação ele já usa um contatador, e define um valor inicial e final para ele.. Em relação a base do problema, temos o cálculo de número primos, que por si não é tão trivial (mas também não é nenhum bicho de 7 cabeças), ou seja, tente enxergar que são duas etapas: 1) calcular número primos; 2) calcular algo em uma faixa de números. SUGESTÃO Inicialmente faça um algoritmo que calcule se um número é primo ou não; (aqui é a chave); Depois, faça um programa que exibe na tela os números contidos entre uma faixa de inteiros; Pronto... juntar os dois recursos... sendo que irá verificar se um número é primo, e contar a quantidade destes. No aguardo.
  4. Olá. Complementando: 1) NOMENCLATURA DE VARIÁVEL Você está usando uma matriz chamada "nome", mas nela está cadastrando "Nome", "Altura", "Peso" etc. Sugiro alterar para "Jogadores". Para simplificar o processo, pressione CTRL+U, e "Procurar por: nome" e "Substituir por: jogadores". Ai vai pressionado "S" ou "N". Bem fácil. Obs.: é recomendado nomenclaturar vetores ou matrizes no plural. O mesmo vale para as variáveis que vai calculando a soma de cada atributo... ex.: - somaAltura, em vez de altura; - somaPeso, em vez de peso; etc 2) CÁLCULO DAS MÉDIAS Você está fazendo o cálculo das médias dentro do para, ou seja, para cada volta (loop) está sendo calculado novamente, mas na verdade deveria calcular uma vez só. Dentro do para deveria apenas ir somando... Algo como: para i de 1 ate quant faca somaAltura <-(caracpnum(jogadores[i,2])+somaAltura) somaPeso <-(caracpnum(jogadores[i,3])+somaPeso) somaIdade <-(caracpnum(jogadores[i,4])+somaIdade) somaGols <-(caracpnum(jogadores[i,6])+somaGols) somaJogos <-(caracpnum(jogadores[i,5])+somaJogos) somaPassesCorretos<-(caracpnum(jogadores[i,7])+somaPassesCorretos) somaPassesErrados <-(caracpnum(jogadores[i,8])+somaPassesErrados) ... Após ter esses dados, ai sim faz as contas, algo como: fimPara mediaaltura<-somaAltura/quant mediapeso <-somaPeso/quant ... *** No aguardo.
  5. Olá a todos... Me parece que a postagem é antiga, então tá valendo entregar "respostas prontas"... Então, apesar de funcional, acho que esse código de @devair1010 tá um pouco avançado para o contexto, pois já entrou em "matrizes" (vetores de duas coordenadas) e métodos de ordenação (acho que Bubble Sort). Dá para fazer apenas usando variáveis para armazenar o menor e maior valores, ex.: Program imc_doProf; uses CRT; //Biblioteca necessário para alguns compiladores para recenhecer alguns comandos (ex.: TextColor, ClrScr, UpCase, Yellow, White etc) var peso, alt, IMC, maiorIMC, menorIMC :real; cont :string; BEGIN TextColor(White); writeln; writeln('======================================='); writeln(' CALCULO DE IMC '); writeln('======================================='); writeln; repeat {peso:=0;} //não necessário {alt :=0;} //não necessário {cont:='Y'}; //não necessário writeln; write ('INFORME SUA ALTURA: '); readln(alt); write ('INFORME SEU PESO: '); readln(peso); IMC:=peso/Sqr(alt); writeln('SEU IMC E: ', IMC:0:2); if ((IMC<menorIMC) or (menorIMC=0)) then //se menor que o menor ou se é o primeiro menorIMC:=IMC; if (IMC>maiorIMC) then //se maior que o maior maiorIMC:=IMC; writeln; write ('DESEJA CALCULAR NOVAMENTE? (S/N): '); //use "sim", vem vez de "yes" {read(cont);} //não usem read, use somente readln readln(cont); until (UpCase(cont)='N'); writeln; writeln('Menor IMC: ',menorIMC:0:2); writeln('Maior IMC: ',maiorIMC:0:2); readln; END. Abaixo uma versão com alguns "enfeites". Program imc_doProf; uses CRT; //Biblioteca necessário para alguns compiladores para recenhecer alguns comandos (ex.: TextColor, ClrScr, UpCase, Yellow, White etc) var peso, alt, IMC, maiorIMC, menorIMC :real; cont :string; BEGIN TextColor(White+blink); //blink = fazer piscar. obs.: em alguns compiladores não funciona (No meu, Free Pascal Compiler, fica apenas com um fundo cinza, rs) writeln; writeln('======================================='); writeln(' CALCULO DE IMC '); writeln('======================================='); writeln; TextColor(Green); writeln(' TABELA IMC '); writeln('Abaixo de 17 Muito abaixo do peso '); writeln('Entre 17 e 18,49 Abaixo do peso '); writeln('Entre 18,5 e 24,99 Peso normal '); writeln('Entre 25 e 29,99 Acima do peso '); writeln('Entre 30 e 34,99 Obesidade I '); writeln('Entre 35 e 39,99 Obesidade II (severa) '); writeln('Acima de 40 Obesidade III (mórbida)'); TextColor(White); repeat writeln; write ('INFORME SUA ALTURA: '); readln(alt); write ('INFORME SEU PESO: '); readln(peso); IMC:=peso/Sqr(alt); writeln('SEU IMC E: ', IMC:0:2); if ((IMC<menorIMC) or (menorIMC=0)) then //se menor que o menor ou o primeiro menorIMC:=IMC; if (IMC>maiorIMC) then //se maior que o maior maiorIMC:=IMC; writeln; TextColor(Yellow); write ('DESEJA CALCULAR NOVAMENTE? (S/N): '); //use "sim", vem vez de "yes" TextColor(White); {read(cont);} //não use read, use somente readln readln(cont); until (UpCase(cont)='N'); writeln; writeln('Menor IMC: ',menorIMC:0:2); writeln('Maior IMC: ',maiorIMC:0:2); readln; END. Abraços
  6. Olá a todos @rugier732, algumas sugestões: 1) IDENTAÇÃO DO CÓDIGO Evite o uso do "tabulação" (tecla tab), prefira usar espaços. Veja como o código fica todo "bagunçado". Obs.: a depender do editor, é possível configurar para que o tab insira espaço, em vez de tabulação . Obs.2: pode até usar tabulação, mas todo o código tem que está tabulado... e mesmo assim dá mais trabalho... sugiro usar espaço mesmo (2 ou 3 espaços para cada dente da identação). 2) REORGANIZAÇÃO DO CÓDIGO Apenas peguei o seu código e dei uma reorganizada, veja: PROGRAM Alfabeto; var texto :string; alf :array[1..52] of string; tamanho, k, i, cont :integer; BEGIN //inicia o vetor alfabético alf[01]:='a'; alf[27]:='A'; alf[02]:='b'; alf[28]:='B'; alf[03]:='c'; alf[29]:='C'; alf[04]:='d'; alf[30]:='D'; alf[05]:='e'; alf[31]:='E'; alf[06]:='f'; alf[32]:='F'; alf[07]:='g'; alf[33]:='G'; alf[08]:='h'; alf[34]:='H'; alf[09]:='i'; alf[35]:='I'; alf[10]:='j'; alf[36]:='J'; alf[11]:='k'; alf[37]:='K'; alf[12]:='l'; alf[38]:='L'; alf[13]:='m'; alf[39]:='M'; alf[14]:='n'; alf[40]:='N'; alf[15]:='o'; alf[41]:='O'; alf[16]:='p'; alf[42]:='P'; alf[17]:='q'; alf[43]:='Q'; alf[18]:='r'; alf[44]:='R'; alf[19]:='s'; alf[45]:='S'; alf[20]:='t'; alf[46]:='T'; alf[21]:='u'; alf[47]:='U'; alf[22]:='v'; alf[48]:='V'; alf[23]:='x'; alf[49]:='X'; alf[24]:='w'; alf[50]:='W'; alf[25]:='y'; alf[51]:='Y'; alf[26]:='z'; alf[52]:='Z'; //leitura do texto a ser analisado write('Digite um texto '); readln(texto); //calcular quantas vezes cada letra foi digitada tamanho:=Length(texto); for k:=1 to 52 do cont:=0; for i:=1 to tamanho do if texto[i]=alf[k] then begin cont:=cont +1; if i= tamanho+1 then writeln(alf[k],' tem ',cont,' vezes no texto.'); end; writeln(tamanho); END. Obs.: identei apenas de acordo com a SINTAXE DO PASCAL... abaixo comentado algo relacionado ao que quero dizer... 3) SINTAXE DO PASCAL E REDEFINIÇÃO DO ALGORITMO Veja o trecho abaixo: //calcular quantas vezes cada letra foi digitada tamanho:=Length(texto); for k:=1 to 52 do cont:=0; for i:=1 to tamanho do if texto[i]=alf[k] then begin cont:=cont +1; if i= tamanho+1 then writeln(alf[k],' tem ',cont,' vezes no texto.'); end; writeln(tamanho); END. Creio eu que no primeiro for seria necessário inserir um begin/end dele... pois do jeito que está, ele está apenas "zerando o cont 52 vezes!!!! (não faz sentido). Perceba que ao deixar o código identando, fica exporto visualmente que algo está errado. A identação tem que ser de acordo com a sintaxe, e não com o que "você deseja", ou seja, apesar de você ter inserido o segundo for mais para dentro, ele não está dentro do primeiro, entende? Como não sei onde seria o end; desse primeiro for, da forma que você imaginou o seu algoritmo, peço que corrija e tente dar continuidade ao código... faça testes e poste onde está com dúvidas. 4) APRIMORAMENTOS Sugiro que tente inicialmente fazer o código do seu jeito... veja até onde vai... ao mesmo tempo ir analisando as novas perspectivas, como as ditas na postagem, assim como também nas sugestões de @devair1010. Mas o importante que sempre use algo que você está entendendo... Vá analisando, codificando e testando... analisando, codificando e testando...... *** No aguardo. ***
  7. Olá @leojkt. Por favor, crie seu próprio tópico novo e onde você está com dúvidas.
  8. Olá... @devair1010. Realmente, nos testes aqui deu certo.. Obs.: @roogeraraujo e @devair1010, favor analisarem os itens 1, 3 e 4.. Obs2: editei o código do item 1... (tirar o tal "var") Abraços
  9. Olá. Complementando: 1) PASSAGEM DE PARÂMETRO Para imprimir não é necessário passar o vetor vet como "referência" (usando o var), pois não haverá alterações no vetor, nem que elas precisam ser salvas. Trocar para: Procedure imprimirVetor(vet: vetor; cont: integer); obs.: já no leVetor() precisa, pois o vetor é alterado, e os dados precisão persistir... 2) REQUISITOS Lembrar que não pode repetir.. Testei aqui e não funcionou essa parte... 3) PADRÕES DE NOMENCLATUA (sugestão) Não vejo motivo para utilizar "português" e "inglês"... ou padroniza só em português, ou padroniza só em inglês. Ex.: repeated por repetido. 4) PADRÃO DE IDENTAÇÃO O espaçamento em parte do programa principal está diferente do resto... Begin ... cont:=0; for k:=1 to ORDEM do begin repeated:=false; for j:=1 to ORDEM do begin if vet1[k]=vet2[j] then begin repeated:=true; end; end; if repeated=false then begin cont:= cont+1; vet3[cont]:=vet1[k]; end; end; clrscr(); textcolor(3); writeln('O vetor resultante é: '); ... End. ** No aguardo.
  10. Oi... Não sei explicar uma regra de uso específica... é apenas um conceito. Imagine uma flag como um bandeira em si... Por exemplo, numa "guerra", ao "inimigo" balançar uma bandeira branca, poderiam-se supor que ela (a flag) está informando que eles estão se rendendo. Ou seja, a flag servirá para indicar algo... (e por lógica, que esse algo será usando para alguma coisa). Pensando como um programa seria algo assim: var bandeira_branca_oponente: inteiro //0=não levantada 1=levantada INICIO .... .... se (bandeira_branca_oponente = 1) então escrevel("Inimigo se rendeu!!! Saimos vencedor") senao escreval("Continua atacando") ... ... fimAlgoritmo A bandeira branca é uma flag que indica o fim da guerra. Peguei um vídeo aleatório que fala do tema também, veja o exemplo nele: Nesse exemplo, a flag (bandeira) está servindo para "saber se quer continuar repetindo ou não", ou seja, a flag foi previamente inicializada com um valor "S", e ao chegar no enquanto, verificará que está flamulando para continuar (ou no caso iniciar o laço de repetição). Daí durando o fluxo do laço de repetição, será feito algo para verificar se a flag deverá continuar com "S" ou não... Caso mude para "N" (especificamente qualquer valor diferente de "S"), ao voltar para o enquanto, verificará que ela não é mais igual a "S", logo não irá repetir novamente... e fluxo passará a executar a próxima linha após o fimEnquanto. Já no seu contexto... o objetivo é: Logo, o @devair1010 pode ter imaginado algo assim: "oras! eu pego cada posição do primeiro vetor e compara com cada posição do segundo vetor. Se a posição atual (que estou verificando) for diferente de todas posições do segundo vetor, eu imprimo ele na tela. Após faço o mesmo com o segundo vetor, ou seja, comparo todas as suas posições com os valores do primeiro vetor". Veja, aqui já sabemos "o problema", e @devair1010 tentou implementar o que achou que seria válido para "uma solução desse problema". Até aqui, beleza? Daí, entra: "como posso fazer essa comparação?". A forma encontrada foi criar um laço de repetição que compara justamente posição por posição... mas como o que interessa é não achar algum igual no outro vetor, a flag servirá para "marcar", caso encontre, que já encontrou. Após é só verifica o estado dessa flag. Abaixo fiz um código que "ao encontrar um valor no outro vetor, para de procurar e passa para o próximo" (economizar passos). Para testar, por exemplo use: 1,2,3,4,5,6,7,8,9,10 e 1,2,0,3,4 Deverá exibir: 5,6,7,8,9,10 e 0 Algoritmo "num diferente" var con1 : Vetor[1..10] de Inteiro con2 : Vetor[1..5] de Inteiro i,j : Inteiro IGUAL: logico //FLAG - se encontrou algum igual (verdadeiro ou falso) inicio Escreval("PRIMEIRO CONJUNTO") Para i de 1 ate 10 faca Escreva("Digite o ",i,"º valor: ") Leia(con1[i]) FimPara LimpaTela EscrevaL("SEGUNDO CONJUNTO") Para i de 1 ate 5 faca Escreva("Digite o ",i,"º valor: ") Leia(con2[i]) FimPara LimpaTela //verifica todos os numeros de con1 com cada um de con2 para i de 1 ate 10 faca //para todos os números de con1 IGUAL <- falso //inicializa a flag como "não encontrado igual" j<-1 //inicializa o "controlador de posição do vetor" enquanto ((j<=5) E (NÃO IGUAL)) faca //enquanto não chegar ao fim E nenhum for igual se con1[i]=con2[j] ENTÃO IGUAL <- verdadeiro //marca a flag como "encontrou um igual" fimse j<-j+1 //atualiza o "controlador de posição do vetor" fimEnquanto se NÃO IGUAL ENTÃO //se número atual em con1 não é igual aos de con2 escreva(con1[i]) //escreve ele fimse fimPara //verifica todos os numeros de con2 com cada um de con1 para j de 1 ate 5 faca //para todos os números de con2 IGUAL <- falso //inicializa a flag como "não encontrado igual" i<-1 //inicializa o "controlador de posição do vetor" enquanto ((i<=10) E (NÃO IGUAL)) faca //enquanto não chegar ao fim E nenhum for igual se con2[j]=con1[i] ENTÃO IGUAL <- verdadeiro //marca a flag como "encontrou um igual" fimse i<-i+1 //atualiza o "controlador de posição do vetor" fimEnquanto se NÃO IGUAL ENTÃO //se número atual em con1 não é igual aos de con2 escreva(con2[j]) //escreve ele fimse fimPara fimalgoritmo Aqui o mesmo código, mas exibindo na telas algumas informações, para demonstrar como funciona... Para testar, por exemplo use: 1,2,3,4,5,6,7,8,9,10 e 1,2,0,3,4 Deverá exibir: 5,6,7,8,9,10,0 Algoritmo "num diferente" var con1 : Vetor[1..10] de Inteiro con2 : Vetor[1..5] de Inteiro i,j : Inteiro IGUAL: logico //FLAG - se encontrou algum igual (verdadeiro ou falso) diferentes: caractere inicio Escreval("PRIMEIRO CONJUNTO") Para i de 1 ate 10 faca Escreva("Digite o ",i,"º valor: ") Leia(con1[i]) FimPara LimpaTela EscrevaL("SEGUNDO CONJUNTO") Para i de 1 ate 5 faca Escreva("Digite o ",i,"º valor: ") Leia(con2[i]) FimPara LimpaTela //verifica todos os numeros de con1 com cada um de con2 para i de 1 ate 10 faca //para todos os números de con1 IGUAL <- falso //inicializa a flag como "não encontrado igual" j<-0 //inicializa o "controlador de posição do vetor" enquanto ((j<5) E (NÃO IGUAL)) faca //enquanto não chegar ao fim E nenhum for igual j<-j+1 //atualiza o "controlador de posição do vetor" escreval("Posição que tô olhando",i," ",j) //PARA TESTES - exibe na tela as cordenadas de cada vetor se con1[i]=con2[j] ENTÃO IGUAL <- verdadeiro //marca a flag como "encontrou um igual" escreval("O",con1[i]," TEM TAMBÉM NO VETOR2, NÃO SERVE!... VOU PRO PRÓXIMO") //PARA TESTES - exibe que encontrou fimse fimEnquanto se NÃO IGUAL ENTÃO //se número atual em con1 não é igual aos de con2 //escreva(con1[i]) escreval("OPA!!! NÚMERO DIFERENTE:",con1[i]) escreval() diferentes<-diferentes+" "+numpcarac(con1[i]) fimse fimPara //verifica todos os numeros de con2 com cada um de con1 para j de 1 ate 5 faca //para todos os números de con2 IGUAL <- falso //inicializa a flag como "não encontrado igual" i<-0 //inicializa o "controlador de posição do vetor" enquanto ((i<10) E (NÃO IGUAL)) faca //enquanto não chegar ao fim E nenhum for igual i<-i+1 //atualiza o "controlador de posição do vetor" escreval("Posição que tô olhando",i," ",j) //PARA TESTES - exibe na tela as cordenadas de cada vetor se con2[j]=con1[i] ENTÃO IGUAL <- verdadeiro //marca a flag como "encontrou um igual" escreval("O",con2[j]," TEM TAMBÉM NO VETOR1, NÃO SERVE!... VOU PRO PRÓXIMO") //PARA TESTES - exibe que encontrou fimse fimEnquanto se NÃO IGUAL ENTÃO //se número atual em con1 não é igual aos de con2 //escreva(con2[j]) escreval("OPA!!!NÚMERO DIFERENTE:",con2[j]) escreval() diferentes<-diferentes+" "+numpcarac(con2[j]) fimse fimPara escreval escreval("DIFERENTES: ",diferentes) fimalgoritmo No aguardo.
  11. Olá @Theusminha. 1) IDENTAÇÃO DE CÓDIGO Como sugestão, um dos pontos que considero mais importante é sempre manter o código identado. Exemplo: Var inferior,superior,i,soma :inteiro escreva ("Digite um limite inferior e um superior para um intervalo: ") leia (inferior,superior) para i de inferior ate superior faca s <- i + i se (i%2=0) então escreva (i) fimse fimpara Se tiver alguma dúvidas sobre essa parte, é só comentar... 2) SINTAXE DO VISUALG Supondo que você está utilizando o VisuAlg, seria necessário completar a sintaxe base, como o cabeçalho, início e fim do algoritmo, ex.: Algoritmo "Somatorio de numeros pares" //define o tipo de código e o seu "título" Var //definie o início da declaração das variáveis inferior,superior,i,soma :inteiro INICIO //marca o início da executação do algoritmo escreva ("Digite um limite inferior e um superior para um intervalo: ") leia (inferior,superior) para i de inferior ate superior faca s <- i + i se (i%2=0) então escreva (i) fimse fimpara fimAlgoritmo //marca o fim do algoritmo Obs.: inseri comentários para tentar explicar algumas partes. 3) CRIAÇÃO ALGORITMO Em relação ao seu algoritmo em si, perceba que o s não foi declarado, imagino que no lugar dele deveria ser soma.. mas em fim... Minha sugestão é primeiramente tentar entender o o que está sendo pedido... e dividir o algoritmo em etapas. São basicamente duas: 1-Achar e exibir os pares em ordem decrescente; 2-Somar esses pares e exibir o resultado. Uma primeira etapa seria exibir os números pares como solicitado: Ou seja, ao inserir "1" e "10" exibir na tela 8 6 4 2. Se atente que até esse momento não está preocupado em somar nada... o foco aqui é "achar e exibir os números pares em ordem decrescente no intervalo aberto. (<-- intervalo aberto = não incluir os números em si... ou seja, 1 e 10 não fazem parte da conta). Após fazer isso... implemente a soma dos valores. *** Obs.: primeiro apenas tente fazer imprimir os pares como citado no item 3. Depois, posta aqui o código. Após isso pronto, tenta fazer a parte do somatório e posta aqui. No aguardo.
  12. Olá @Cafeeiro. 1) IDENTAÇÃO DE CÓDIGO Como sugestão, um dos pontos que considero mais importante é sempre manter o código identado. Exemplos: programa { funcao inicio() { inteiro l_inferior, l_superior , contador, soma escreva("Digite o ponto de partida do seu intervalo: ") leia(l_inferior) escreva("Digite o ponto maximo do seu intervalo: ") leia(l_superior) para(contador=l_inferior; contador<l_superior; contador++) { inteiro divisao = contador % 2 se(divisao==0) escreva("\n", contador) /* Números pares entre l_inferior e l_superior */ } } } ou assim: programa { funcao inicio() { inteiro l_inferior, l_superior , contador, soma escreva("Digite o ponto de partida do seu intervalo: ") leia(l_inferior) escreva("Digite o ponto maximo do seu intervalo: ") leia(l_superior) para(contador=l_inferior; contador<l_superior; contador++) { inteiro divisao = contador % 2 se(divisao==0) escreva("\n", contador) /* Números pares entre l_inferior e l_superior */ } } } Perceba como visualmente faz uma grande diferença... 2) CALCULANDO SOMATÓRIO Para somar os pares e ímpares, você precisa primeiro encontrá-los... uma parte disso já está sendo feita (teoricamente, pois não testei o código), daí é só somar esse valor encontrado a uma outra variável, algo como: se(divisao==0) } escreva("\n", contador) somaPares=somaPares+contador { obs.: não sei como é a sintaxe dessa linguagem, mas a ideia seria mais ou menos essa; obs.2: o mesmo princípio vale para os ímpares (que na prática seria "o que não são pares"). 3) NOMENCLATURA DE VARIÁVEIS Esse cálculo feito com o "%" não é propriamente uma "divisão", mas sim "resto da divisão", ou seja, creio que ficaria conceitualmente equivocado usar esse termo... sugeriria algo como resto ou restoDivisao. *** No aguardo.
  13. Olá a todos... Só tentando refinar o código: 1) DECLARAÇÃO DE VARIÁVEIS A variável aux não está sendo utilizada, precisa apagar ela. 2) CONCEITO DE FLAG Essa variável g utilizada no código de @devair1010 está funcionando como uma flag, ou seja, uma "bandeira" que servirá para indicar algo, nesse contexto seria algo como "se o número atual de um vetor é igual algum número que está em um segundo vetor". A vantagem ou o objetivo de utilizar uma flag, é que mesmo que se encontrar um mesmo valor em outra posição, não vai fazer diferença, pois a flag continuará com o mesmo valor (de "encontrado igual"). Um comentário extra: perceba que analisando o objetivo desse passo de "verificar números iguais", ao encontrar um numero igual, nem era mais necessário continuar analisando, entende? pois sendo igual a qualquer um, esse número já pode ser descartado (pois só interessa o que é diferente). Logo, poderia-se então parar o laço de repetição para esse número e ir para o próximo! Entretanto, como são pouco passos, esse "desperdício de esforço" pode ser ignorado. Obs.: caso deseje, posteriormente essa questão pode ser analisada com mais calma. (eu acho que vale a pena) 3) REORGANIZAÇÃO DAS ETAPAS Peguei esse código de @devair1010 e tentei reorganizar o fluxo... tentando identificar cada passo do processo... vejam se ficou bom: obs.: como exemplificação, alterei o g por igual:, e mudei o tipo de inteiro para logico, pois como só existem duas possibilidades (antes 0 e 1), esse tipo (logico) se encaixa melhor (só tem duas possibilidades). Veja, poderia ser qualquer tipo, como inteiro, real, caractere etc... o que importa é o conceito, ou seja, que a variável funcione como uma flag... Nesse código abaixo, mudei a ordem de algumas coisas... o ideal seria tentar comparar ele com o anterior e analisar o que foi alterado... Algoritmo "num diferente" var con1 : Vetor[1..10] de Inteiro con2 : Vetor[1..5] de Inteiro i,j : Inteiro IGUAL: logico //FLAG - se encontrou algum igual (verdadeiro ou falso) inicio Escreval("PRIMEIRO CONJUNTO") Para i de 1 ate 10 faca Escreva("Digite o ",i,"º valor: ") Leia(con1[i]) FimPara LimpaTela EscrevaL("SEGUNDO CONJUNTO") Para i de 1 ate 5 faca Escreva("Digite o ",i,"º valor: ") Leia(con2[i]) FimPara LimpaTela //verifica todos os numeros de con1 com cada um de con2 Para i de 1 ate 10 faca //para todos os números de con1 IGUAL <- falso //inicializa a flag como "não encontrado igual" Para j de 1 ate 5 faca //para todos os números de con2 se con1[i]=con2[j] então IGUAL <- verdadeiro //marca a flag como "encontrou um igual" fimse FimPara se NÃO IGUAL então //se número atual em con1 não é igual aos de con2 escreva(con1[i]) //escreve ele fimse FimPara //verifica todos os numeros de con2 com cada um de con1 Para j de 1 ate 5 faca //para todos os números de con2 IGUAL <- falso //inicializa a flag como "não encontrado igual" Para i de 1 ate 10 faca //para todos os números de con1 se con2[j]=con1[i] então IGUAL <- verdadeiro //marca a flag como "encontrou um igual" fimse FimPara se NÃO IGUAL então //se número atual em con2 não é igual aos de con1 escreva(con2[i])//escreve ele fimse FimPara fimalgoritmo Obs.:perceba que, por exemplo, eu inverti a ordem dos vetores no último se (de con1[i ]=con2[2], para con2[j]=con1[i ]). Na prática não tem diferença nenhuma, só que fica mais didático, pois o foco do laço está ma verificação do con2... Obs2.: outro ponto interessante: não faz diferença em usar i ou i para um vetor ou outro... tanto que na parte da leitura, utilizamos o i para os dois... (talvez seria mais coerente mudar mudar para j para ler o con2.. fiquei na dúvida, rs) *** No aguardo.
  14. Olá @Ariel Oliveiraa. Qual as suas dúvidas? Sugiro que tente separar uma coisa da outra... uma coisa é programar em Phyton, uma outra é mexer com filas e pilhas. Primeiramente tente se habituar com o linguagem de programação em si (eu particularmente nem sei por onde vai)... mas Filhas e Pilhas são apenas conceitos e que independem da linguagem. ...Um fila ou pilha nada mais será que uma forma que você gerenciará a "entrada e saída" de elementos num vetor (ou outra estrutura oportuna). Por exemplo, numa fila, "necessariamente" os objetos entrarão por um lado, e sairão pelo outro. (imagine uma filha para sacar o FGTS, quem vai chegando entra no final e que vai saindo pela frente vai sendo atendido). Já as pilhas, pelo mesmo lado que entra, também sairá... (imagine uma pilha de livros... é empilhada ou desempilhado sempre de cima pra baixo). "Não dá para um cara do meio ser atendido antes" ou "tirar um livro do meio".... é um conceito... entende? Dê uma olhada: https://pt.wikipedia.org/wiki/FIFO e https://pt.wikipedia.org/wiki/LIFO Sobre o Phyton, o Fórum pode tentar ajudar... Sugiro que tente primeiramente fazer um programa, por exemplo, que leia 5 números, armazene num vetor e depois exibe esses números na tela. Depois a fila ou pilha entrará como "gerenciador do vetor (ou outra estrutura)", ou seja, você simplesmente irá mandar "inserir" ou "remover", mas internamente irá se comportar como o tal FIFO ou LIFO. No aguardo.
  15. Olá @joao emilio borges garcia, Já testou a parte lá do item 2? Nos testes que eu fiz, nenhuma das duas opções estavam funcionando bem... um dos "erros" está no texto, veja: escreva("Só Pode Cadastrar Até",MAXIMO,"100 Clientes... Tecle Enter") Tem que apagar esse "100" ali... e por ai vai... Qualquer coisa, posta seu código atual que analisamos. No aguardo.
  16. Olá @joao emilio borges garcia. Abaixo seu código reindentado, por favor, use ele como base: 1) VERSÃO DO VISUALG Qual a versão do seu VisuAlg? aqui estou com 3.0.6.5 (mais recente). Recomendo usar a mesma versão que "todo mundo usa" (como no "curso"), pois pode acontecer de versões diferentes terem comportamentos diferentes... ai tento achar a sua versão e testar com ela! 2) EFETUAR TESTES COM UM VALOR MÁXIMO MENOR Então, creio que você não vai ficar cadastrando 100 alugueis a cada teste, mude o máximo para 4, assim como sugerido no item 1. 2.1) verifique se está tratando corretamente do máximo de alugueis possíveis; 2.2) o que seria esse "TOTAL DE FILMES LOCADOS"? está funcionando? 3) ATENÇÃO AOS COMENTÁRIOS No seu código, tem comentários que não correspondem a realidade do seu código... como "//CALCULO DE QUANTIDADES DE CARROS POR MARCAS". Revise todo o seu código e arrume... obs.: É notável que você reaproveitou de um código já feito (por sinal que eu ajudei a fazer)... não tem problema, se o código foi seu ou não, não importa... essas são umas das propostas do Fórum ("aprender" e "compartilhar"), apenas que entenda o que está sendo feito (reaproveitando) e ajuste adequadamente ao seu contexto. Lembre-se de citar, especialmente ao professor/facilitador que se baseou em outro código (se não foi seu mesmo)... a dica é ser honesto, especialmente consigo mesmo. O importante é assimilar o conteúdo... *** No aguardo.
  17. Olá @joao emilio borges garcia. Por favor, poste o seu código atual para darmos uma analisada. ADENDO: 1) sugerido efetuar testes mudando o valor máximo de clientes para poder testar se o recurso de "proteção de quantidade máxima" e o recurso de "pause a cada 3 clientes na hora de exibir" estão funcionando, por exemplo usando apenas 4; 2) Uma forma prática para efetuar testes rápidos é inserir números, ex.: 1,1,1,1; 2,2,2,2; 3,3,3,3.... Após analisar e arrumar, fazer testes utilizando dados verossímeis. 3) Na hora de perguntar o gênero, acho que seria interessante exibir a relação disponível, por exemplo: escreval("(AVENTURA),(ROMANCE),(FICCAO),(TERROR)") escreva("Gênero do Filme....: ") Vai da criatividade... obs.: se não achar necessário, não precisa inserir essa "legenda"; 4) Aproveitando a sugestão de @devair1010, poderia criar outras variáveis para melhor organizar os cálculos, ex.: //Cálculo de desconto desconto <-(caracpnum(filmes[i,4])*taxaDESCONTO) valorAPagar<-(caracpnum(filmes[i,4])-desconto) receber <-receber+valorAPagar) //atualiza o valor total a receber pela locadora escreval("O Desconto É ------------> R$ ",desconto) escreval("O Valor A Pagar É -------> R$ ",valorAPagar) 5) Para exibir apenas duas casas decimais, tente utilizar uma formatação, ex.: escreval("O Valor Total recebido pela Locadora É -------> R$ ",receber:1:2) Onde esses :X:Y seria X=número de casas decimais reservadas a esquerda antes da vírgula, e Y=número de casas decimais. Dica: experimente colocar valores altos para efetuar testes e entender o funcionamento desta formatação. (lembro que para testar, use valores simples, como 1,1,1,345.3435... não precisa colocar dados reais para efetuar testes rápidos) *** Por ai vai... No aguardo.
  18. Olá @Ana Leticia Montelo. Inicialmente, para facilitar a visualização do código, segue o seu código reidentado (usei espaçamento 3, sem tabulação inteligente): algoritmo "Questão 5" //Escrever um algoritmo que leia um vetor com 10 elementos inteiros e //determine o maior e o menor elementos deste vetor, bem como suas //posições. Estes valores devem ser escritos no algoritmo principal e //devem ser passados/recebidos pela função var vet: vetor [1..10] de inteiro contador,a,ma,me,posma,posme:inteiro procedimento lerNumero():inteiro inicio para a de 1 ate 10 faca escreva("Escreva o ",a,"º número: ") leia(vet[a]) fimPara fimProcedimento Procedimento comparar() inicio me<-vet[1] ma<-vet[1] posma<-1 posme<-1 para a de 2 ate 10 faca se me > vet[a] então me<-vet[a] posme<-a fimSe fimPara para a de 2 ate 10 faca se ma < vet[a] então ma<-vet[a] posma<-a fimse fimPara escreval("O menor elemento do vetor é" , me, " e está na posição ",posme) escreval("O maior elemento do vetor é" , ma, " e está na posição ",posma) fimProcedimento INICIO lernumero() comparar() fimAlgoritmo Vamos lá: 1) VERIFICAÇÃO DO MENOR E MAIOR Você está utilizando 2 for idênticos para fazer a mesma coisa, no entanto, poderia (diria que deve) fazer com o for só. 2) USO "MELHOR" DAS VARIÁVEIS Que tal em vez de usar uma variável para armazenar o menor e maior, apenas utilizar a posição??? ou seja, se você já tem a posição, basta usar a posição no vetor!!!!! (apague ma e me e ajuste o código) 2) CONDIÇÕES MUTUAMENTE EXCLUDENTES (deixe esse para depois do código pronto) Para essa parte, necessariamente tem que verificar o item 1... Resumidamente falando é que você deve usar SE/SENAO/SE, em vez de 2 SE isolados para verificar o menor e maior números. Se você ainda não estudou SE/SENÃO, pode deixar seu código sem ele, mas recomendo se adiantar, e se for o caso, ter 2 códigos... Explicadamente falando seria: Sempre que observo tento levantar essa questão... então, quando um ou mais eventos não podem ocorrer ao mesmo tempo, não faz sentido (lógico) continuar verificando o restante dos eventos quando um deles já ocorreu antes... Como assim? você pode perguntar... No caso, se um número for "maior que o maior", ele jamais será ao mesmo tempo "menor que o menor" (mesmo inicialmente, pois eles começam iguais), logo, se ele já é "maior...." não se faz necessário depois verificar se ele é "menor..." também... É uma incoerência lógica, entende? Do jeito que está, ele verificará se é maior, e mesmo atualizando, continua e verifica se é menor... mas não deveria ("perda de tempo"). Vide por exemplo essa fonte (e se deseja, dá um Google): https://pt.wikipedia.org/wiki/Eventos_mutuamente_exclusivos Obs.: como disse, se não entender muito bem, não precisa ver isso agora... se quiser depois explico com mais calma. *** No aguardo.
  19. Olá @Ana Leticia Montelo. Perceba, qual variável está apresentando o valor errado? então, faltou inicializá-las (posma e posme), assim como foi feito com MA e ME. PS: abaixo seu código identado (apenas alterei de "então" para "ENTÃO", para o VisuAlg não dar erro). algoritmo "maior e menor" var vet: vetor [1..10] de inteiro N,MA,ME,contador,posma,posme,a:inteiro procedimento lernumero() inicio para a de 1 ate 10 faca escreva("Escreva o ",a,"º número: ") leia(vet[a]) fimpara fimprocedimento procedimento comparar() inicio para a de 1 ate 10 faca se (contador=0) ENTÃO ME <- vet[a] MA <- vet[a] fimse se vet[a] > MA ENTÃO MA <- vet[a] posma<-a fimse se vet[a] < ME ENTÃO ME <- vet[a] posme<-a fimse contador<-contador+1 fimpara fimprocedimento inicio contador<-0 lernumero() comparar() escreval ("MAIOR:",MA," posição",posma) escreval ("MENOR:",ME," posição",posme) fimalgoritmo No aguardo.
  20. Olá @vini1192. Não encontrei... o máximo que consegui foi editar algumas coisas. Tem duas formas: 1) Pelo próprio VisuAlg Acessa o menu "Manutenção", aba "Personalizar", como visto em anexo: 2) Pelo arquivo de configuração Abrindo e editando o arquivo "visualg30.ini". *** Se descobrir como fazer, por favor avise! No aguardo. adicionado 13 minutos depois ADENDO: Encontrei uma apostila interessante (recomendo a leitura). Nela também fala sobre "Auto-digitação". Destaco os comandos "ctrl+espaço" e "ctrl+j".... muito bacana! Outra boa fonte de informações é ir no menu "Help (Ajuda)/Referências da Linguagem de Programação do VisuAlg" Fonte: http://docente.ifrn.edu.br/cleonelima/disciplinas/fundamentos-de-programacao-2.8401.1m/fundamentos-de-programacao-2.8401.1m/apostila-visualg APOSTILA_VISUALG.pdf
  21. Olá @Joao Victor05, por favor, edite sua postagem anterior e insira seu código dentro da tag CODE (botão <>). Por favor, leia esse tópico que fala sobre o tema: No aguardo. adicionado 2 minutos depois Adendo: percebi que você utilizou um "<" e ">" :). Mas o @devair1010 estava se referindo ao "botão <>"... que fica na barra de ferramentas acima.... adicionado 22 minutos depois Para tentar adiantar... em relação ao seu código, você está utilizando a seguinte linha: Veja que no final tem um "v[i ]" (uma variável do programa).... esse v é do vetor de valores (preços), correto? daí, no primeiro loop do repita o "v" ainda não foi preenchido, logo vai exibir "0"... exibindo algo assim: digite o preço da gasolina do posto: 0 Ao repetir, vai exibir o valor que você já cadastrou no loop anterior... (é a mesma analogia acima) Resumindo: a- ou você tira esse variável do escreva; b- ou ajusta para "n", algo como: escreva ("digite o preço da gasolina do posto ",n[i]," :") obs.: o preço da gasolina geralmente é fracionada, ou seja, seria melhor utilizar "real", em vez de "inteiro". No aguardo.
  22. Olá a todos... Alguns pontos que queria levantar: 1) Algumas variáveis foram declaradas, mas não estão sendo utilizadas, ex.: nome, marca, VW, GM, FIAT e acm; 2) Quando temos condições (SE) que são mutuamente excludentes, devem-se utilizar o SENAO (SE/SENAO)... por exemplo, se um carro é da marca FIAT, ele não pode ser GM, nem pode ser VW!!!! Logo, não faz sentido continuar perguntando..; 3) Acho que seria recomendado utilizar nomenclaturas de variáveis mais sugestivas, ou seja, que remetem a sua funcionalidade; 4) Por padrão (mas não é uma regra), geralmente é utilizado o "i" como variável de controle (como usado nos For). Percebam que na maioria dos contextos, o valor do "i" após o for não é importante, ou seja, ele pode ser utilizado em outras partes do programa... quando se usam um for dentro do outro, utilizam-se i e j.. etc 5) Para facilitar os testes, poderia diminuir o tamanho máximo de cadastro... pois é inviável cadastrar 100 sem vendas toda vez que precisar testar algo... Uma técnica interessante seria utilizar uma "constante" (ou "variável", para ficar mais simples) que limite o total, daí, quando quiser mudar o total, bastaria mudar o valor dessa variável... 6) Ainda sobre facilitar os texto, é possível cadastrar dados simples, ex.: 1,1,1...,2,2,2.... 3,3,3..... quando o problema já está meio que encaminhado, faz outros testes mais "reais". Ex.: João, FIAT, 28000. 7) O programa diferencia minúsculo de MAIÚSCULO, daí é recomendado dar uma atenção a isso. Ex.: "s" é diferente de "S" lá na condição do enquanto. Peguei o código de vocês e fiz algumas modificações, já demonstrando esses e outros pontos... para servi de exemplo: Algoritmo "Algo28" Var qtdVM, qtdFIAT, qtdGM, qtdOUTROS :inteiro //quantidade de carros da marca carros :vetor[1..100,1..3] de caractere //1-nome, 2-marca, 3-preço continuar :caractere //flag para verificar se deseja continuar cadastrando MAXIMO :inteiro //maximo de vendas possíveis i :inteiro //utilizado para controlar os for quant :inteiro //quantidade de vendas realizadas cont :inteiro //quantidade de impressões na tela (não imprimir tudo de vez) taxaDESCONTO:real //taxa de desconto INICIO //INICIALIZANDO VARIÁVIES MAXIMO<-3 taxaDESCONTO<-10/100 //10% //APRESENTAÇÃO DO PROGRAMA escreval escreval("ETEC Prof.Alcídio de Souza Prado") escreval("________________________________") escreval(" JE Revenda de Veículos ") escreval //CADASTRO DE VENDA continuar:="s" enquanto (continuar = "S") ou (continuar = "s") faca quant:=quant+1 escreva("Nome do Cliente....................: ") leia(carros[quant,1]) escreva("Marca do Veículo...< VW FIAT GM >..: ") leia(carros[quant,2]) escreva("Preço Total do Veículo..........R$: ") leia(carros[quant,3]) escreval() escreval() se quant < MAXIMO ENTÃO escreva("Quer Cadastrar Mais Um Cliente ? < S/N > ") leia(continuar) senao escreva("Só Pode Cadastrar Até",MAXIMO,"100 Clientes... Tecle Enter") leia() continuar:="n" fimse fimenquanto //CALCULO DE QUANTIDADES DE CARROS POR MARCA para i de 1 ate quant faca se (carros[i,2]="VW") ou (carros[i,2]="vw") ENTÃO qtdVM:=qtdVM+1 senao se (carros[i,2]="FIAT") ou (carros[i,2]="fiat") ENTÃO qtdFIAT:=qtdFIAT+1 senao se (carros[i,2]="GM") ou (carros[i,2]="gm") ENTÃO qtdGM:=qtdGM+1 senao qtdOUTROS:=qtdOUTROS+1 fimse fimse fimse fimpara //EXIBIÇÃO DE RESULTADOS limpatela cont<-0 para i de 1 ate quant faca escreval() cont:=cont+1 escreval("O Carro Do Cliente -> ",carros[i,1]) escreval("É Um ---------------> ",carros[i,2]) escreval("O Preço É ----------> ",carros[i,3]) escreval("O Desconto É -------> ",caracpnum(carros[i,3])*taxaDESCONTO) escreval("O Valor A Pagar É --> ",caracpnum(carros[i,3])-(caracpnum(carros[i,3])*taxaDESCONTO)) se cont=3 ENTÃO cont:=0 escreval() escreval("Tecle Enter Para Continuar") leia() fimse fimpara escreval() escreval("O Total DE Veículos VW É ----> ",qtdVM) escreval("O Total DE Veículos FIAT É ----> ",qtdFIAT) escreval("O Total DE Veículos GM É ----> ",qtdGM) escreval("O Total DE Outros Veículos É --> ",qtdOUTROS) escreval() escreval("A Quantidade Total DE Veículos É ",quant) escreval("********* FIM DO ALGORITMO ******") fimalgoritmo No aguardo.
  23. Serve também! Mas precisaria mudar de real para inteiro.... (pode ser considerado um erro)
  24. Olá @Danilo Martin da Silveira. 1) ESTRUTURA DE FUNCIONAMENTO Antes de qualquer coisa já achei estranho a forma como o programa funciona... acharia mais adequado se fosse dito os placares... e ai o programa iria atualizando a tabela, mas em fim...Sugiro que faça como foi pedido, e, caso deseja, depois faça outro programa recebendo os placares (teria duas versões) 2) USO DE VARIÁVEIS Não faz sentido usar vetores, e depois transpor os dados para uma matriz... ou usa um, ou usa o outro (no caso deveria ser só a matriz). Para efeito didático, vamos analisar como está o seu código... Temos dois pontos principais ai: a- No 3º for, você está escrevendo 5 valores numa mesma posição (sobrescrevendo... ficará só com o último). b- Relacionado ao problema acima, você precisa reformular o tratamento da matriz... veja, l=time, c=atributo... só existem 2 parâmetros (dica: é preciso apenas 2 laços de repetição) Daí você teria duas opções: ou tenta corrigir usando vetores, e depois reedita removendo eles só usando matriz... ou refaz logo usando só matrizes... (isso levando em consideração essa questão de não dever usar vetores) No aguardo
  25. Só complementando: 1) faltou declarar o subsituicao, mas de qualquer sorte, uma nomenclatura mais coerente com o contexto seria idade (se fosse assim, que tal substituir Ano1 e Ano2 por Minuendo, Subtraendo ) 2) o tipo mais adequado seria inteiro, ou seja, não precisa ser real, pois não usará números fracionados.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!