Ir ao conteúdo

Simon Viegas

Membro VIP
  • Posts

    3.940
  • Cadastrado em

Tudo que Simon Viegas postou

  1. Olá @AlequizChaos. Função e Procedimento são a mesma coisa. A diferença é que a função retorna algo em si mesmo, e o procedimento não. Exemplos de procedimentos: leia(), escreva(), Transporta(), LimpaTela() etc. Veja que eles fazem algo e não retorna nada. Exemplos de funções: RaizQ(), NumPCarac(), Aleatorio() etc. Estes fazem algo e retornam um valor nele mesmo, ou seja, eles funcionam exatamente como um procedimento, mas ao mesmo tempo se comporta como uma variável. Sobre: Mas ou menos... a sintaxe está um pouco confusa. adicionado 9 minutos depois Acho que seria algo mais ou menos assim: Função Transposta (X:Matriz [1...2,1...3] de inteiro):Matriz [1...3,1...2] de inteiro Var T: Matriz [1...3,1...2] de inteiro Inicio Para i de 1 até 2 Faça Inicio Para j de 1 até 3 Faça Inicio T[j,i] := X[i,j] Fim Para Fim Para retorne T Fim Procedimento Entende? É exatamente a mesma coisa... apenas que nela retorna algoz. No contexto, seria a matriz. Ai no programa principal algo irá receber ela. MatrizT:=Transposta[M] Ai poderia ter um outro procedimento para imprimir... algo como: ImprimeMatriz(M,2,3) MatrizT:=Transposta[M] ImprimeMatriz(MatrizT,3,2) ou ImprimeMatriz(M,2,3) ImprimeMatriz(Transposta[M],3,2) Deu para entender? Um procedimento é uma função que não retornar nada. adicionado 31 minutos depois Como vocês testam o código? Conhecem o Visualg? No aguardo obs.:Tô pelo celular
  2. Olá @Amanda Kellen. Que programa? no caso você só postou o código. E como você sabe que tem erro? tente explicar melhor o que está acontecendo... É na hora de compilar? se sim, leia o erro informado e tente se basear por ele... Então, peguei o seu código e compilei aqui no Dev++ 5.11. Deu o seguinte erro: In function 'int main()': 14 23 [Error] 'Fprt' was not declared in this scope 15 29 [Error] 'strok' was not declared in this scope Ou seja, o "algo" Fprt e strok não foram declarados no espoco que eles estão. Significa que o compilador não reconhece eles... Para ficar mais claro, veja esse código: Apenas indentei e troquei Fprt e strok por respectivamente XXXXXXXXX e YYYYYYYYY. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char buf[100],*nome; int numero; float nota1,nota2; FILE *Fptr; if((Fptr=fopen("ARQ.TXT","r"))==NULL) { fprintf(stdout,"\n Arquivo nao existe\n"); return 1; } else { while(fgets(buf,100,XXXXXXXXX)!=NULL) { numero=atoi(yyyyyyyyy(buf,";")); nome=yyyyyyyyy(NULL,";"); nota1=atof(yyyyyyyyy(NULL,";")); nota2=atof(yyyyyyyyy(NULL,";")); printf("\n numero: %d \n nome:%s", numero,nome); printf("\n nota1:%2.f \n nota 2: %2.f",nota1,nota2); } } return 0; } Tem exatamente o mesmo efeito. XXXXXXXXX tem tanto a ver com o seu código, quanto Fprt... entende? No aguardo.
  3. Olá @AlequizChaos. Seja bem vindo ao Fórum do Clube do Hardware. Esse código é compilável por algum programa ou algum site? se sim, qual? Não consegui entender o que você disse... Incluir uma Função para fazer o que? O quê é igual a o quê? Por favor, tente descrever melhor. No aguardo.
  4. Olá @Iyhoga GC. Prezado, favor editar sua postagem, apagar e reinserir o código, mas seguindo a orientação de utilizar a tag CODE. Favor ler tópico Poste seus códigos corretamente! contida no tópico desta pagina. No aguardo. adicionado 29 minutos depois ... Beleza. Entendi. Ai você precisa verificar como vai ficar o programa. Pense assim... tente fazer esse desafio no papel.. como você faria? o Visualg entra apenas para automatizar... ou seja, como no seu atual, abaixo apenas corrigi os erros de sintaxe (regrada da linguagem). A parte da lógica tem que parti de você. Então, tente fazer esse exercício no papel.. como se fosse um jogo. Verás que alguns pontos têm que ser observados, por exemplo: Como faria para computador os pontos? por que ao errar volta para a mesma pergunta? Seu código tem apenas pequenos erros: - o tipo é caractere, não mais literal; - aparentemente você tentou declarar uma resposta como se fosse uma variável, mas não é assim que funciona. Você tem a penas a variável que recebe a resposta, e nos lugares apropriados (se e até) ela é comparada com um um "texto" que você definiu como certo. Entende? Tomando como base o Visualg 3.0.6.5, segue orientações: obs.: deixei o que está errado entre { } apenas para demonstrar. Pode apagar após ter entendio. algoritmo "FCdH" var {resposta:literal} //o tipo utilizado é o caractere resposta:caractere {d :real} //variável não utilizada inicio repita escreval("1)Victor desenhou o triângulo determinado pelas coordenadas") escreval("dos pontos cartesianos A(7;5), B(3;2) e C(7;2)") escreval("Ao calcular a área e o perímetro desse triângulo,") escreval("os valores obtidos foram, respectivamente,") escreval("(imaginando que a dez colunas verticais e dez horizontais)") escreval("utilizem o teorema de Pitágoras :") escreval("a) 3 e 3") escreval("b) 3 e 6") escreval("c) 6 e 6") escreval("d) 6 e 12") escreval("e) 12 e 12") leia(resposta) se resposta="d" então escreval("resposta correta") fimse //você tinha colocado depois do repita ate resposta="d" fimalgoritmo Agora, tente elaborar como vai funcionar o seu quis. Daí você tenta implementar no seu algoritmo... Qualquer dúvidas é só postar. No aguardo.
  5. Olá @Iyhoga GC. A primeira coisa que verificar é de fato o que você precisa. Então, de onde surgiu "essa necessidade"? é algo que você resolveu fazer ou é algum exercício/trabalho? caso seja este último, poste o enunciado completo para analisarmos quais os requisitos e mais ou menos como deverá funcionar o seu algoritmo. Pelo que eu entendi, teria que ter um repita/até para cada questão. Nesse caso, ficará repetindo a mesma estrutura várias vezes. Isso dá para resolver posteriormente. Por enquanto tente fazer apenas com um e poste o código aqui para analisarmos. Então, essa parte eu não entendi.. se ao errar volta para a mesma questão, necessariamente todos vão acertar todos ou terá que ter alguma lógica para contabilizar os erros ou algo do tipo. No aguardo.
  6. 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 2 minutos depois Olá @helia1. Por favor, poste o que já conseguiu fazer e em qual parte está com dúvidas. PS: para o 1ª, sugiro que inicialmente apenas tente fazer um programa que recebe um número e você informa se é par ou ímpar. Depois evoluímos para os requisitos do exercício. No aguardo.
  7. Olá @Iyhoga GC. Poste o código completo para podermos analisar.
  8. 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
  9. Olá @Delmar Quispe. É necessário separar os elementos utilizando ",". Ex.: escreva (num,"x",i,"=",i*num) PS: é recomendado sempre manter o código indentado. Para ajudar, pressione CTRL+G no Visualg. PS2: para postar um código no fórum, favor ler e seguir orientações em tópico Poste seus códigos corretamente! contido no topo do fórum. No aguardo.
  10. 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
  11. 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
  12. 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
  13. Beleza. Qualquer coisa posta o código atual para analisarmos ou, se for o caso, onde tem dúvidas. No aguardo.
  14. Olá @Dafne Guimarães. Outro ponto importante. Você não deve ficar invocando um procedimento dentro do outro. O mais correto seria deixar a função terminar, ai volta para o main() e invoca um próximo método. Perceba que o nome do primeiro método é recebe_valor(). Dentro dele você invoca o calcula_valor(), mas entenda que uma coisa não está "dentro" da outra! Receber é receber, calcular é calcular... são etapas diferentes. Primeiro recebe, depois calcula, depois imprimi. Da forma que você fez, fica parecendo que "calcular" é uma sub-estapa para receber! E não é! Poderia ser algo como: int main() { recebe_valor(); calcula_valor(a, b, c); imprime_valor (raiz1, raiz2, bhask); } Veja que isso é só um esboço, você precisa efetuar as adaptações necessárias, como usar algumas variáveis globais, e/ou fazer alguma função retornar algum valor etc. No aguardo.
  15. 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
  16. Olá @Mateus Toshi. Seja bem vindo ao Fórum do Clube do Hardware. Por favor, leia a postagem Poste seus códigos corretamente! que está no topo desta página, na sessão "COMUNICADOS". Após, poste novamente o seu código com a tal tag CODE e tente reformular o seu comentário, pois está sem pontuação, o que dificulta a interpretação do colaboradores. No aguardo.
  17. Olá @Thiago Biagioni. Vide: Preciso do seu código para analisar... em relação ao do @devair1010, parte do "problema" está na "//Verificando as faixas de idades", pois este está sempre usando "3" como "total de cadastros". Poste seu código atual, que a partir dele tentamos analisar. No aguardo. No aguardo.
  18. Olá. @lucianogrecco, você citou o quê se pede (enunciado) e um código. Mas não relatou o que está te fazendo... Então... a ideia é que tente identificar qual problema está tendo, para assim tentar achar uma solução. O segredo é fazer por partes. Por exemplo: apenas ler a matriz e exibe ela na tela. Assim verás se está lendo corretamente. Após, adicionar a tal multiplicação por x. Pronto. O programa seria isso. Segue mais ou menos estrutura desejada: - Leia a matriz A 5x5; - Leia o valor de X; - Exiba a matriA (etapa interessante para mostrar os valores atuais da matriz) - Multiplique a coluna 2 dessa da matriz A por x. - Exiba a matriA Versão estendida: Alguns pontos: 1) "INICIALIZAÇÃO/PREENCHIMENTO DAS VARIÁVEIS" A parte da leitura da matriz está correta. Faltou apenas ler o valor de x. O enunciado inclusive já sugere isso (apesar de ser implícito). Veja, logo após preencher a matriz (lendo cada um dos valores), você já partiu para multiplicação das posições por x, mas qual seria o valor de x nesse momento? ou seja, x não terá valor algum*. Da mesma forma que você precisou ler o valores de cada posição da matriz, é necessário ler antes o valor do x. * no Visualg, ao rodar o programa, automaticamente as variáveis são zeradas, ou seja, as variáveis numéricas ficarão com 0 (zero). Logo, ao multiplicar por x, a matriz será zerada. Se seu código estiver rodando, verás que está resultando em uma matriz nula. Justamente porque você não leu o x e este acaba ficando com 0. (vide propriedade do elemento nulo da multiplicação) Outro ponto importante é que "você estaria apenas exibindo a matriz multiplicada pelo tal escalar", ou seja, até então a matriz continuará com os valores atuais. Mas o enunciado pede que você multiplique a coluna da matriz em si, logo, as posições ai2 deverão ser atualizadas, e após você exibe a matriz. Percebe? uma coisa é "você mostrar uma matriz diferente na tela", outra é "atualizar a matriz em si e depois exibir ela". 2) REQUISITOS DO ENUNCIADO 2.1) ESCOPO DE NÚMEROS ENVOLVIDOS Você tem esse código: para i de 1 ate 5 faca para j de 1 ate 5 faca escreva(vetA[i,j]*x) fimpara escreval("") fimpara Nesse caso você está multiplicando TODAS as posições por x (cada um dos aij), mas o enunciado é claro em dizer que é só os elementos da segundo coluna. (obs.: além da questão que não é para exibir essa multiplicação, mas sim apenas atualizar a posição na matriz, e depois exibir ela já atualizada). 2.2) REQUISITO NÃO SOLICITADO Pelo que eu entendi, você está fazendo uma espécie de cópia do vetA (já atualizado por x), em vetB. Mas além disso está antes elevando cada posição a 5ª potência. Pelo que você postou, isso não foi pedido. Simplesmente apague esse trecho. A matriz B não é necessária. 3) ALGUMAS SUGESTÕES À PARTE 3.1) SEPARAÇÃO DE PARÂMETROS DO ESCREVA() Nos algoritmos, após as "," não é necessário dar espaço (diferente do nosso idioma Português, que por costume, exige que a "," fique encostada na palavra a esquerda, e um espaçamento na direita). Seu código atual: Como sugiro: escreva("Digite os numeros: [",i," + ",j," ] ") Entendo que este segundo código fica mais agradável para leitura e interpretação. (do mesmo modo que,teoricamente,não existe uma regra para darmos um espaço após a vírgula,mas ao não usá-lo,torna a leitura desagradável.Concorda?) obs.: para a "regras do Visualg" não faz diferença entre dar espaço ou não. Se trata apenas de um pequeno detalhe e tentativa de, um suposto, "bom costume". Você pode usar da forma que achar melhor. 3.2) REPRESENTAÇÃO DE POSIÇÕES DE MATRIZ Usam-se ",", em detrimento do "+". Ex.: escreva("Digite os numeros: [",i," , ",j," ] ") 3.3) ESPAÇAMENTO DE EXIBIÇÃO Não precisa de espaços na hora de exibir, ex.: escreva("Digite os numeros: [",i,",",j,"]") Mas mesmo assim (no que eu entendo com uma bug do Visualg), ele automaticamente insere um espaço antes do número. Fica assim: Para corrigir, dá para usar o recurso de "formatação". Ex.; escreva("Digite os numeros: [",i:1,",",j:1,"]") Esse ":numero" após a variável, indica ao interpretador que será reservado "numero" espaços a esquerda antes de ser impresso. Ao usar ":1", reservará um espaço, que será justamente o próprio número, daí ficara colado. Ex.: 3.4) REORGANIZAÇÃO FINAL Apenas uns ajustes para ficar mais organizado: escreva("Digite o numero [",i:1,",",j:1,"]: ") Obs.: também acho muito repetitivo ficar solicitando a mesma coisa toda hora, basta algo como uma vez informar "Digite os números da matriz" e após só exibir as coordenadas. Evitar esses "digite", digite", "digite"... 4) AUTOMATIZAÇÃO DE LEITURA O Visualg disponibiliza um recuso chamado "aleatorio" que facilita bastante a leitura dos dados. Ex.: para i de 1 ate 5 faca para j de 1 ate 5 faca escreva("Digite o numero [",i:1,",",j:1,"]: ") //aleatorio on leia(vetA[i,j]) //aleatorio off fimpara fimpara Desta forma, o leia será preenchido automaticamente pelo programa. obs.: eu deixei como comentário. Para ativar, apenas retire o "//". Para desativar novamente, basta volta como antes. *** No aguardo.
  19. Olá @viniciusv21. Ficou TOP. Se tiver alguma dúvida sobre o código ou queria implementar algo mais, é só avisar. Caso contrário, favor sinalizar para darmos o tópico como resolvido. ADENDO: Em relação a minha indentação anterior, apenas esqueci de aplicar outro conceito que gosto. Ex.: procedimento MSG_QuerExecutarDenovo() inicio EscrevaL("Deseja executar o programa de novo?") EscrevaL("Responda [S] para continuar.") EscrevaL("Responda com qualquer outra tecla para terminar o programa.") Escreva ("Resposta: ") fimprocedimento Observe que dei um espaço no escreva, desta fora, a parte do texto fica alinhada. PS: eu editei a minha postagem para inserir esse conceito. No aguardo.
  20. Olá @Thiago Biagioni. Já conseguiu resolver? se sim, por favor, poste o código atual para analisarmos e também poder servir de base para outros usuários. Caso não, posta o código e onde está com dúvidas. No aguardo.
  21. Olá @Antonio214. Seja bem vindo ao Fórum do Clube do Hardware. A depender da interpretação poderia de fato entender como "duas pirâmides", ou seja, desenha uma pirâmide em cima e outra invertida depois. Apenas se atentar ao tamanho de cada uma. Por favor, poste o código em forma de texto, pois assim fica mais fácil para analisarmos. obs.: para postar um código, favor ler tópico Poste seus códigos corretamente! no topo desta página, na seção de COMUNICADOS. No aguardo.
  22. Olá @Zukhe. Nenhum comentário? Então, creio que paralelo e simultaneamente sejam a mesma coisa. Mas no caso, o Pascal executa as instrução de modo sequencial mesmo. Pelo menos no nível atual de programação... (existe a possibilidade de uso de threads, mas acho que não vem ao caso). Analisando o código e fazendo alguns testes, acho que já consegui entender como mais ou menos deve funcionar o programa. Acho que dá para fazer de modo sequencial mesmo. Abaixo tento explicar. Mas vamos lá. Alguns pontos: 1) IDENTIFICAÇÃO DA TECLA PRESSIONADA Ao invocar a function ReadKey, o programa trava e fica aguardando a tecla ser pressionada. No caso, do jeito que você fez, ficará aguardando uma tecla para cada if... mas o que provavelmente você precisa é que leia apenas uma tecla e depois analise ela. Use algo assim: var tecla:char; ... tecla:=ReadKey; E usa a variável tecla nos if... e no until. Dessa forma, lerá a tecla apenas uma vez para cada loop. 2) ESTRUTURA DE PROGRAMAÇÃO A estrutura atual está dividida em duas partes: a nave e a sua movimentação; e os destroços e sua movimentação. Pelo que eu vi, dá para fazer as duas estruturas funcionarem "de modo alternado", ou seja, deixar os destroço caindo, e se pressionar uma tecla, movimenta a nave, e volta novamente para os destroços até que nova tecla seja pressionada... no caso, a "simultaneidade" será simulada. Antes de entrar na tentativa de como fazer alternar entre uma parte e outra, sugiro antes reorganizar cada umas delas. *** Resumidamente: Pegue apenas uma das estruturas e deixe funcionando certinho. Depois partimos para outra, e após juntamos as duas. É melhor fazer assim por que seria complicado tentar fazer as 3 coisas ao mesmo tempo (nave, destroços e juntar). No aguardo.
  23. Olá @mosiah santos. se (ele =>200) e (ele<=1000) então desconto:=5/100 se (ele>1000) então desconto:=5/100 No aguardo.
  24. Olá @leonardo197. Seja bem vindo ao Fórum do Clube do Hardware. 1) TRECHO DESCONEXO Não consegui entender o que esse trecho deveria fazer, mas de qualquer sorte não está funcionando... se puder explicar melhor... 2) VERIFICAÇÃO DE NÚMEROS REPETIDOS Um bom caminho é usar vetores para armazenar os números, pois dessa forma ficará mais fácil para acessar cada um deles, ou seja, usando variáveis individuais, teria que montar uma estrutura completa para verificar cada números... já com vetores, basta usar uma variável para controlar a posição. Resumindo: primeiramente apenas troque essas 6 variáveis "n" para um vetor de 6 posições. Após evoluímos na abordagem. 3) APURAÇÃO DO JOGO Idem ao item 2. É recomendado o uso de vetores, pois é necessário efetuar um conjunto de comparações, e se tiver com variáveis individuais, ficará inviável. (dá para fazer, mais vai ficar tosco, rs) *** Resumindo: remova aquela parte citada no item 1. Foque apenas em tentar usar um vetor para ler o resultado e outro para ler os números sorteados... a "validação" dos números para ficarem entre 1 e 60 pode ser feita depois. (vai precisar de vetores também!!!) No aguardo.
  25. Olá @Gabriel Lin. Alguns pontos: 1) INDENTAÇÃO DE CÓDIGO Sempre mantenha seu código indentado. Ex.: #include<stdio.h> #include<conio.h> int escolha; int lineu,agostinho,beicola,nene,tuco,bebel,marilda,paulao; int votos() { printf("\n Escolha o personagem preferido"), printf("\n 1-lineu \n 2-agostinho \n 3-beicola \n 4-nene \n 5-tuco \n 6-bebel \n 7-marilda \n 8-paulao"); scanf("%d",&escolha); } int votos_2() { if (escolha==1) { lineu++; } else if (escolha==2) { agostinho++; } else if (escolha==3) { beicola++; } else if (escolha==4){ nene++; } else if (escolha==5) { tuco++; } else if (escolha==6) { bebel++; } else if (escolha==7) { marilda++; } else { (escolha==8); paulao++; } } int imprimir() { printf("\n Votos do lineu : %d",lineu); printf("\n Votos do beicola : %d",beicola); printf("\n Votos do nene : %d",nene); printf("\n Votos do tuco : %d",tuco); printf("\n Votos do bebel : %d",bebel); printf("\n Votos do marilda : %d",marilda); printf("\n Votos do agostinho : %d",agostinho); printf("\n Votos do paulao: %d",paulao); } int main() { votos(); votos_2(); imprimir(); getch(); } Inclusive é possível aplicar outras técnicas para organizar ainda mais. Ex.: #include<stdio.h> #include<conio.h> int escolha; int lineu,agostinho,beicola,nene,tuco,bebel,marilda,paulao; int votos() { printf("\n Escolha o personagem preferido"), printf("\n 1-lineu \n 2-agostinho \n 3-beicola \n 4-nene \n 5-tuco \n 6-bebel \n 7-marilda \n 8-paulao"); scanf("%d",&escolha); } int votos_2() { if (escolha==1) {lineu++;} else if (escolha==2) {agostinho++;} else if (escolha==3) {beicola++;} else if (escolha==4) {nene++;} else if (escolha==5) {tuco++;} else if (escolha==6) {bebel++;} else if (escolha==7) {marilda++;} else if (escolha==8) {paulao++;} } int imprimir() { printf("\n Votos do lineu : %d",lineu); printf("\n Votos do beicola : %d",beicola); printf("\n Votos do nene : %d",nene); printf("\n Votos do tuco : %d",tuco); printf("\n Votos do bebel : %d",bebel); printf("\n Votos do marilda : %d",marilda); printf("\n Votos do agostinho: %d",agostinho); printf("\n Votos do paulao : %d",paulao); } int main() { votos(); votos_2(); imprimir(); getch(); } Observe como deixei os if com uma linha, e alinhei o resultado dos votos. 2) ESTRUTURA DE SELEÇÃO No seu código faltou o if para a opção 8. Nesse caso, qualquer voto diferente de 1 a 7 iria para "Paulão". O que seria um erro. (no segundo código acima já inclui) Nesse sentido, daria para aproveitar para contabilizar os votos nulos, ou seja, de quem não votou em um candidato da relação... inseriria um else a mais (sem if, é claro). 3) NOMENCLATURA DAS FUNÇÕES Por que para "imprimir os resultados" você usou imprimir() e para "leitura da opção do eleitor" e "processamento do voto" você usou voto() e voto_2? Siga a mesma lógica, algo como: int main() { leituraVoto(); processamento(); imprimir(); getch(); } 4) ESTRUTURA DOS DADOS Como os números são sequenciais, você poderia usar um vetor de 8 posição (0 a 7). Para acessar a posição, usaria "escolha-1". Algo como: votos[escolha-1]++; Lembrando que isso apenas para escolha entre 1 e 8 (inclusos). Os diferentes disso iria para "votosNulos". Na hora de exibir os resultados, usaria a posição correspondente para cada vetor. (0 para o primeiro, 1 para o segundo etc) *** Por ai vai. 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!