Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Simon Viegas

Moderadores
  • Total de itens

    2.424
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

779

Sobre Simon Viegas

  • Data de Nascimento 22-06-1982

Informações gerais

  • Cidade e Estado
    Salvador/BA
  • Sexo
    Masculino

Outros

  • Biografia
    Carregando...
  • Ocupação
    Técnico e Analista de Sistemas
  • Interesses
    Tecnologia
  1. Outro .bat para desbloqueio de usuário automático

    Olá @Walter C. Catelan, eu faço duas perguntas, e você me responde com uma outra? É necessário sabermos qual o Sistema Operacional está utilizando e para qual o contexto ou necessidade precisa disso... No aguardo.
  2. C Trocar valores através de função

    PS: Aproveitando.. Testei aqui e funcionou com ponteiros: A assinatura da função do procedimento pode ficar assim: void troca(float *a, float *b) { } int main() { } Repare que essa "função" não precisa retornar nada... logo fica void. @jbiribi, tente implementar essa função... Daí você tem que chamar o método troca() fora do printf() (já que não é mais uma função, ou seja, "não retorna um valor nele mesmo") e mandar imprimir o x e y, que após serem trocados, estarão com seus valores invertidos entre si. OU Poderia declarar a função para retornar uma string, contendo os valores invertidos... correto? NÃO, não pode! O enunciado é claro: ou seja, os valores em si que tem que ser trocados. Não é uma questão de apenas "exibir trocado"... se fosse assim, bastaria fazer algo assim: printf("X é igual a %f e Y é igual a %f", y,x); //inverti a ordem das variávies :) Entende? para o usuário o resultado seria correto (iria aparecer invertido), mas para a lógica do algoritmo não... não é só o resultado que importa, mas também como chegou a ele... Uma outra forma, tomando como base a sugestão de @devair1010, poderia ser assim: float x, y; void troca() { } int main() { } Declarando as duas variáveis como globais... mas como já citado, é melhor passar por parâmetro... dessa forma também dá a sensação de "reutilização", ou seja, essa mesma função pode servir para qualquer outras variáveis do tipo float... não só para x e y. Se tive por exemplo no mesmo código um a e b, w e z, salarioA e salarioB etc, ou seja, qualquer pares de float, poderia utilizar a mesma função... já se usar sem parâmetro, só vai servir para o x e y (ou que você usou no procedimento). No aguardo
  3. C Trocar valores através de função

    Olá a todos. @devair1010, creio que na verdade o que está errado é a lógica... a função deveria servir para "trocar os valores" e não "retornar algo", ou seja, essa função poderia ser void. A "confirmação" da troca pode ser feita ao mudar de "passagem de parâmetro por valor" para "passagem de parâmetro por referência"... ou seja, seguindo a sugestão de @Chrissy Costanza. Sobre o processo de troca: Creio eu que, apesar de valer a experiência, seja um tema mais avançado e de entendimento pouco trivial... (algo como entrar em arquitetura de computadores ou estudo de números binários...) sugeriria utilizar um auxiliar mesmo! É um processo mais convencional. obs.: a não ser que a troca não funcione com ponteiro.... No aguardo.
  4. C Pergunta sobre Visual Studio 2017

    Olá @Junior12332. Por favor, o que estava acontecendo e como conseguiu resolver. Pode ser que outros usuários tenham o mesmo problema. No aguardo.
  5. programa em c helppp

    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
  6. Outro .bat para desbloqueio de usuário automático

    Olá @DANIEL PIRANGI. Seja bem vindo ao Fórum do Clube do Hardware. Qual o SO que está utilizando? Para a necessidade de ficar desbloqueando de tempos em tempos? No aguardo.
  7. C Separar palavras de uma frase

    Olá a todos. Testei no Dev-C++ 5.11 e funcionou normal também. Mas observação: Aqui é C++, será que não tem diferença para o C?
  8. Pascal erro - '$' não especificado

    Olá @maxmedeiros, seja bem vindo ao Fórum do Clube do Hardware. O erro é na hora de compilar ou na hora de executar? São etapas diferentes. Qual compilador está utilizando? Aqui, no Free Pascal Compiler (3.0.2), está dando erro: D:\Simon\_My Portables\Notepad++\Compiladores\FPC\3.0.2\bin\i386-win32\ppc386.exe "D:\Simon\_My Portables\Notepad++\_FCdH.PAS" Process started >>> _FCdH.PAS(10,1) Error: Duplicate identifier "x" _FCdH.PAS(10,4) Error: Duplicate identifier "y" _FCdH.PAS(31,3) Error: Identifier not found "ClrScr" _FCdH.PAS(104,16) Error: Identifier not found "RaizQ" _FCdH.PAS(116,14) Error: Identifier not found "bsqr" _FCdH.PAS(117,24) Error: Identifier not found "RaizQ" _FCdH.PAS(118,24) Error: Identifier not found "RaizQ" _FCdH.PAS(172,5) Error: Identifier not found "alor1" _FCdH.PAS(210,4) Fatal: Syntax error, ";" expected but "." found Fatal: Compilation aborted <<< Process finished. (Exit code 1) ================ READY ================ Então, seu código tem muitas funcionalidades implementadas ao mesmo tempo, daí fica mais difícil para corrigir. Não tem necessidade de fazer tudo de vez. Sugiro que faça o programa por partes, e ir avançando a medida que cada etapa fica pronta. A orientação seria fazer um programa novo, com apenas esses itens: writeln ('|Digite 1 Para ADIÇÃO |'); writeln ('|Digite 2 Para SUBTRAÇÃO |'); writeln ('|Digite 3 Para DIVISÃO |'); writeln ('|Digite 4 Para MULTIPLICAÇÃO |'); writeln ('|Digite 10 Para Sair |'); Daí posta o código aqui para analisarmos e onde está com dúvidas... Só após, tente dar continuidade. No aguardo.
  9. Como eliminar linha e coluna de uma matriz

    Caro usuário, Seja bem-vindo ao Fórum do Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware adicionado 0 minutos depois Olá @Ronaldo Krüger, poste código que já conseguiu fazer e onde está com dúvidas. No aguardo.
  10. Olá @Ayron Matos. Alguns pontos: 1) MELHOR DEIXAR TUDO COMO PROCEDIMENTO Cada uma das etapas poderia ser um procedimento... assim fica mais padronizado... ou seja, por que "fatorial" está como procedimento, e "cubo" não está? 2) PASSAGEM DE PARÂMETRO Aqui está um dos problemas principais... você deixou a assinatura dos procedimentos recebendo parâmetros, mas não está passando os parâmetros quando chama a função. Eu pensei em deixar para você mesmo descobrir sozinho, mas fazendo testes aqui, vi que o Visualg está travando... ou seja, onde isso seria apenas um erro comum, onde o "compilador" deveria avisar que é necessário passar o parâmetro, em vez disso o Visualg está travando.. dando literalmente erro e sendo necessário finalizar o processo no Windows. Em fim, seria basicamente isso: r <- fatorial(i) Fatorial precisa receber qual número será "fatoriarizado"... pelo que eu entendi, seria o i (que vai de 1 a 10). Na função, b irá copiar o valor de i, e no final a função retornar o resultado da operação. Deu para entender? 3) FAZER O PROGRAMA POR PARTES É recomendado evitar fazer as partes do programa de uma vez... não tem por que fazer os "divisores" se fatorial não está funcionando ainda (isso supondo que o quadrado e o cubo estão funcionado). Sugiro ir adicionado e testando cada "componente" um a um... Ex.: Algoritmo "Tabelade 1 ate 10" //Função que retorna o quadrado do número que foi passado por parâmetro Funcao quadrado(x:Inteiro):Inteiro Var resultado :Inteiro Inicio resultado := (x*x) Retorne resultado FimFuncao //*** FUNÇÕES EM CONSTRUÇÃO *** //Função que retorna o cubo do número que foi passado por parâmetro {Funcao cubo(x:Inteiro):Inteiro} //Função que retorna o fatorial do número que foi passado por parâmetro {Funcao fatorial(x:Inteiro):Inteiro} //Função que retorna a quantidade de divisores do número que foi passado por parâmetro {Funcao numDivisores(x:Inteiro):Inteiro} Var i :Inteiro Inicio EscrevaL("Número Quadrado Cubo Fatorial Divisores Primo") Para i <- 1 Ate 10 Faca EscrevaL(i:4,quadrado(i):10) //<--aqui fiquei testando o :x até ficar alinhado FimPara FimAlgoritmo Daí, implementa o "cubo" e faz os testes até ficar certinho... como não estruturas pesadas, dá para fazer os testes juntos com os procedimentos já prontos, ou seja, não precisa "desativar" o 'cubo" para testar os "quadrado"... nem desativar o "cubo" e "quadrado" para testar o "fatorial" etc. Vá implementando uma a uma as funções... só passe para próximo quando tiver pronto a atual... No aguardo.
  11. C programa com vetores em C

    Olá a todos: 1) INTERAÇÃO COM O USUÁRIO @AnaTrinity, por favor, veja o que foi dito na minha postagem anterior sobre "interações com o usuário".. está com o mesmo problema! Aqui só aparece uma tela preta!!!! 2) INDENTAÇÃO DO CÓDIGO Outra ponto é que sempre deve manter o seu código indentado... veja o exemplo abaixo: #include <stdio.h> int main() { int N, i; scanf("%d", &N); int a[N],b[N],c[N]; while(N!=0) { int m=0; for(i=0;i<N;i++) { scanf("%d",&a[i]); } for(i=0;i<N;i++) { scanf("%d",&b[i]); } for(i=0;i<N;i++) { c[i]=a[i]*b[i]; } for(i=0;i<N;i++) { if (c[i] > m) m=c[i]; } printf("%d\n", m); scanf("%d\n", &N); } return 0; } Percebe a diferença? Sugiro usar esse código como base. 3) VERIFICAÇÃO DE MAIOR NÚMERO Siga o que foi sugerido por @Chrissy Costanza, ou seja, inicialize o menor com a primeira posição e faça as verificações restante a partir da segunda posição em diante. 4) VETORES DINÂMICOS Também acho melhor seguir a orientação de @Chrissy Costanza. Daí ou usar um vetor grande, como 100, e limitar o tamanho máximo (não aceitar valores maior que 100) ou estudar e implementar vetores dinâmicos para usar de uma forma mais "elegante". Do jeito que está, apesar de funcionar, realmente fica estranho... *** No aguardo.
  12. C como armazenar a media na mesma linha do vetor ja preenchido

    Sim! Tudo bem! Mas sugiro se atentar nesse item: Pois faz parte do escopo do problema. Nem toda nota é arredondada... e seu código já está utilizando float. Pra adiantar, parte do problema pode está porque está utilizando soma como int. No aguardo.
  13. VisualG Exercício Visual G - Criança Esperança

    Beleza!!! Creio que era que era só isso mesmo. Creio que primeiro por que, provavelmente, você ainda não "chegou" nesse tema (senão já tinha entendido)..., ou seja, não é nada de outro mundo, mas é relativamente um conceito mais avançado. O ponto é que recursividade geralmente é utilizada para outros fins... o que não inclui o seu contexto. Seria como dizer que "está utilizando um recurso erroneamente ou por engano"... e este "engano" tem custos! Mesmo que o código funcione (apresente um resultado como deseja), seria um erro de lógica (quebrando as técnicas de programação). Você está utilizando da recursividade para fins apenas de repetição... e a recursividade não serve para isso.. se quer repetir, utilize repita/ate ou enquanto/fimenquanto. Caso tenha interesse, dê uma pesquisada no Google com os termos "recursividade no visualg". Mas se atente que não tem nada a ver com o seu código... *** Para demonstrar o que acontece, abaixo inseri algumas linhas no código para exibir quando ENTRA e quando SAI de um procedimento. Experimente inserir no menu principal a opção 8 umas 20 vezes (fique apertando 8 e ENTER várias vezes, quanto mais erro, mais claro fica)... depois volte para o menu principal e faça uma doação. Veja o que acontece. Algoritmo "Criança Esperança" //----------------------------------- procedimento opcao() inicio EscrevaL("Entrou em OPCAO()") EscrevaL(" Para doar 15 reais, pressione [1]") EscrevaL(" Para doar 20 reais, pressione [2]") EscrevaL(" Para doar 30 reais, pressione [3]") EscrevaL(" Para doar 40 reais, pressione [4]") EscrevaL(" Para doar outros valores, pressione [5]") EscrevaL(" Para cancelar, pressione [6]") EscrevaL() Escreva (" Pressione a opção desejada: ") EscrevaL("SAIU de OPCAO()") escolher_opcao() EscrevaL("VOLTOU para OPCAO()") EscrevaL("FINALIZOU de OPCAO()") fimprocedimento //----------------------------------- procedimento escolher_opcao() inicio EscrevaL("Entrou em ESCOLHER_OPCAO()") Leia(N) Escolha N Caso 1 Valor := 15 Caso 2 Valor := 25 Caso 3 Valor := 30 Caso 4 Valor := 40 Caso 5 Escreva(" Por favor, digite a quantia que deseja doar:") Leia(Valor) Caso 6 Valor := 0 OutroCaso EscrevaL("SAIU de ESCOLHER_OPCAO()") opcao_invalida() EscrevaL("VOLTOU para ESCOLHER_OPCAO()") FimEscolha EscrevaL("FINALIZOU de ESCOLHER_OPCAO()") fimprocedimento //----------------------------------- procedimento confirmacao() inicio EscrevaL("Entrou em CONFIRMACAO()") EscrevaL(" [1] Confirma a doação no valor de R$", Valor:3:2, "?") EscrevaL(" [2] Cancela a doação") Leia(N) Escolha N Caso 1 EscrevaL(" Você doou R$", Valor, ",00.") EscrevaL(" Obrigado pela participação!") Caso 2 cancelamento() OutroCaso EscrevaL("SAIU de CONFIRMACAO()") opcao_invalida() EscrevaL("VOLTOU para CONFIRMACAO()") FimEscolha EscrevaL("FINALIZOU de CONFIRMACAO()") fimprocedimento //----------------------------------- procedimento cancelamento() inicio EscrevaL("Entrou em CANCELAMENTO()") EscrevaL(" Você cancelou a participação.") EscrevaL("FINALIZOU de CANCELAMENTO()") fimprocedimento //----------------------------------- procedimento opcao_invalida() inicio EscrevaL("Entrou em OPCAO_INVALIDA()") EscrevaL(" Opção inválida.") EscrevaL(" [1] Voltar ao menu principal") EscrevaL(" [2] Cancelar doação") EscrevaL(" Escolha uma opção: ") Leia(N) Escolha N Caso 1 opcao() Caso 2 cancelamento() Outrocaso EscrevaL("SAIU de OPCAO_INVALIDA()") opcao_invalida() EscrevaL("VOLTOU para OPCAO_INVALIDA()") FimEscolha EscrevaL("FINALIZOU de OPCAO_INVALIDA()") fimprocedimento //----------------------------------- var N, Valor : inteiro inicio EscrevaL("-----------------------") EscrevaL(" CRIANÇA ESPERANÇA ") EscrevaL("-----------------------") EscrevaL() opcao() Escolha N Caso 1, 2, 3 , 4 , 5 confirmacao() Caso 6 cancelamento() OutroCaso opcao_invalida() FimEscolha Fimalgoritmo Veja que cada vez que você entra em "recursividade", o procedimento anterior fica aberto, aguardando finalizar o atual... Em fim... se seu objetivo é confirmar a opção, você poderia ficar repetindo até que utilize uma opção válida. Utilizando o comando "repita/ate". O que não pode é chamar um procedimento que já está aberto... MINHA SUGESTÃO Pegue o gabarito e faça alterações SEM UTILIZAR procedimentos, ou seja, inserir o conceito de "Confirmação", "Cancelamento" e "Opção inválida" utilizando laços de repetições (repita ou enquanto). Só depois tente encontrar o que pode ser colocado como procedimento. Por exemplo, abaixo peguei o gabarito e apenas substitui partes por procedimentos. algoritmo "CriancaEsperanca" var D : Inteiro Valor: Real procedimento MenuOpcoes() inicio EscrevaL ("---------------------------") EscrevaL (" CRIANCA ESPERANCA ") EscrevaL ("---------------------------") Escreval (" Muito obrigado por ajudar ") Escreval (" [1] para doar R$10 ") Escreval (" [2] para doar R$25 ") Escreval (" [3] para doar R$50 ") Escreval (" [4] para doar outros valores ") Escreval (" [5] para cancelar ") fimprocedimento procedimento lerOpcao() inicio leia(D) fimprocedimento procedimento processamento() inicio Escolha D Caso 1 Valor <- 10 Caso 2 Valor <- 25 Caso 3 Valor <- 50 Caso 4 Escreva ("Qual o valor da doacao? R$") Leia (Valor) Caso 5 Valor <- 0 FimEscolha Escreval ("------------------------") Escreval (" SUA DOACAO FOI DE R$", Valor) Escreval (" MUITO OBRIGADO!") Escreval ("------------------------") fimprocedimento inicio menuOpcoes() lerOpcao() processamento() fimalgoritmo Deu para pegar a ideia? os procedimento estão servindo basicamente para organizar o código (algo que já estava pronto)... esqueça os procedimentos por enquanto... estará mais atrapalhando que ajudando! Mais pra frente, quanto tiver mais experiência e entender melhor o funcionamento dos procedimento e funções, já daria para ir pensando na construção do algoritmo utilizando eles.... da forma como você planejou os procedimentos anteriormente, não servirá, pois está quebrando uns princípios, como foi o caso do uso da recursividade de modo "errado". Apenas faça as melhorias como se não existissem procedimentos! No aguardo.
  14. VisualG Exercício Visual G - Criança Esperança

    Olá. Não, não foi isso. O enquanto apenas adicionou uma nova funcionalidade de repetição. Uma coisa não tem a ver com a outra. Imagine a situação: "o cliente leva o carro para oficina, diz que está com um barulho na roda... ai diz que resolveu ao instalar um ar condicionado e fazer outras alterações no carro". Sugiro que revive novamente o seu código e descubra o real erro. Só após, faça modificações... (no processo ganhará experiência). Assim como? utilizando enquanto? Peraê... está mais fácil ou tá mais confuso? Existem infinitas formas de fazer um código.. tudo vai depender primeiramente da necessidade (requisitos) e da criatividade (melhorias, adaptações etc) Primeiramente precisa resolver a questão do erro anterior (item 2 da postagem anterior). Não dar para ir atropelando as etapas. Ache o erro e tente resolver (sem alterar o código ainda), pois o erro pode influenciar nas novas alterações. Posta aqui o código corrigido... Depois, começa a ver as melhorias... aí já se atentando no item 3... "uma função não pode chamar uma outra função que já está aberta", veja, no seu novo código, a função opcao_invalida() está chamando novamente a função opcao_invalida(). Não pode! Isso (uma função chamar a se mesma) tem até nome: recursividade! mas que só é usada para contextos específicos... RESUMINDO: Primeiro ache o erro e corrija. Depois vemos as modificações.
  15. C como armazenar a media na mesma linha do vetor ja preenchido

    Olá @Marcos Paulo feitosa. Ficou muito bom!!! Algumas dicas: - Digitei notas "7.5" e o programa me retornou média 7 (em vez de 7.5); - Experimente solicitar para outras pessoas executarem o programa. Não explique nada... só execute e peça para usar... analise o feedback e tente fazer as possíveis melhorias/adaptações...

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×