-
Posts
3.940 -
Cadastrado em
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Simon Viegas postou
-
Precisso saber quantos numeros tem meu nome. Progress 4GL
Simon Viegas respondeu ao tópico de IvanJoinville em Programação - outros
Olá, seja bem vindo ao Fórum do Clube do Hardware. Provavelmente nenhum número. Deve ter somente letras! Pelo que eu entendi, o programa deve fazer simplesmente "trocar cada letra de uma palavra pelo seu respectivo valor numérico". Não é isso? Então, você pode usar uma String para receber o "nome". Para acessar um caractere da letra, basta informar a posição através de "[]". Ex.: nome:='Pascal'; writeln(nome[3]); //exibirá a letra "s" (posição 3) Ou seja, usando o "[]" você tem acesso a cada letra da string, da mesma forma que se acessa uma posição de um array, ou seja, uma string se comporta mais ou menos como se fosse um array[1..255] of char. Daí vai verificando letra por letra e traduzindo para o numeral correspondente. Obs.: Como dif sugeriu, tente fazer algo e poste aqui seu código e onde está com dúvidas. PS: - Você precisará de um laço de repetição para percorrer as letras - Você pode usar uma sequência de if/else para comparar as letras. Fica mais fácil e elegante usando um case. No aguardo. Abraços -
Olá Rosberguedes 1) Identação Antes, corrigindo a identação (pequeno errinho): Obs.: Não muda a "sintaxe" nem a "lógica", é uma questão visual. Obs2.: De certo modo, a identação faz parte do critério de correção. program Q2L1; uses crt; var e:real; n,fat,i,x:integer; BEGIN e:=1;n:=1; writeln('Informe o denominador'); readln(x); if(x>0) then while (n<=x) do begin fat:=1; for i:= n downto 1 do fat:=fat*n; e:=e+(1 div fat); N:=N + 1; end else writeln('Valor nao permitido'); writeln('O Valor gerado pela expressao é ',e:2:2); readln; END. Vejam que o e:=e+(1 div fat); e N := N + 1; estavam fora do lugar, dando a impressão que estão dentro do for, mas eles não estão!!! Tem também o else, mas ai dependo do padrão. No meu, ele fica na mesma lida do if... 2) Algoritmo A resposta aqui não está batendo... Sugestão: Faça um teste de mesa... Faça alguns cálculos na calculadora e outros pelo programa. As respostas tem que dar sempre igual respectivamente. Ex. te tabela: *** A minha sugestão da postagem anterior está de pé ainda! No aguardo Abraços
-
Olá Rosberguedes Antes de somar, você precisa saber calcular os "X!"... Ja sabe o que é esse "!" significa?? Somar é uma etapa posterior. São duas etapas distintas: 1) Calcular os resultados de 1! a N!; 2) Somar o inverso (1/X) de cada um desses resultados para achar o valor de E (seguindo a fórmula). O que ocorre é que no programa você pode fazer a soma a medida que vai achando uma resposta. (Não precisa calcular tudo de uma vez e depois dividir 1 por cada resultado e ir somando) Então, primeiramente você precisa saber calcular esses 1! a N!. Tente fazer da seguinte forma: 1) Faça um programa que leia um valor "N" e calcule o N! e exiba o resultado na tela; 2) Faça um programa que leia um valor "N" e calcule os valores de 1!,2!,3!.. a N! e exiba o resultado de cada conta na tela. 3) Faça um programa que leia um valor "N" e calcule os valores de 1!,2!,3!.. a N!, some os resultado e exiba o resultado da soma. Poste aqui casa um dos programas. ... O seu programa será simplesmente o 3) com a diferença que em vez de somar os resultados diretamente, você deverá somar 1/(resultado). No aguardo Abraços
-
Está com dificuldades em que? Mas vamos lá, o que você precisa fazer é achar uma forma de calcular esse 1!, 2!, 3! etc. Primeiramente o mais óbvio: o que é essa "!"? Descobrindo isso, basta criar um algoritmo que calcule os valores para cada caso (de 1! a N!), ao final de cada cálculo, divida 1 por esse valor e some ao total em "E". PS: "N" é um valor inteiro, logo pode usar integer em vez de real. No aguardo. Abraços
-
Internet Lenta - Dicas e Soluções - Consulte AQUI o que fazer!
Simon Viegas respondeu ao tópico de marcmira em Redes e Internet
Vou dar uma olhada aqui.... ai a gente vê o que pode ser corrigido.. Até breve... Abraços -
Internet Lenta - Dicas e Soluções - Consulte AQUI o que fazer!
Simon Viegas respondeu ao tópico de marcmira em Redes e Internet
Olá a todos... Pessoal, cuidado!!! A nomeclatura para Bytes e Bites são diferentes!!!! A velocidade medida pelos sites, como RJ Net e SpeedTest já estão em bits (kbps ou Mbps). A fórmula de cálculo no tutorial está cometendo esse "pequeno" erro... (precisa ser corrigida) Correto seria assim: Medido em byte por segundo = kBps; Medido em bit por segundo = kbps. Na verdade, ambas as velocidades "são reais", apenas está se convertendo para uma medida mais convencional (fazendo analogia ao tamanho de arquivos, que são em bytes, já a internet é em bits) Outro exemplo: Não, 2 MEGA = 2 MEGAbits (e não 2028). Que dar 2048 kilobits (o mesmo que 2048 kbps), que 256 kBps. 256 kbps (em bits) seria igual a 32 kBps (em bytes) A tabela está assim: Mas deveria ficar assim: Em fim... um link de 512 kbps será de 512 kbps e pronto!!! Não existe essa divisão. Só devemos dividir por 8 caso queira encontrar o valor em bytes (kBps). "Minha internet de 10 Mega, equivale a 10x1024 bits = 10240 kbps. Transformando em bytes, dá 10240/8 = 1280 kBps, que dar "um arquivo de 1.25 MB por segundo". Ou seja, 10 Mega (bits) de internet é igual a 10/8 = 1,25 MB. Por ai vai Abraços -
PC com Windows 7 não reconheçe teclado USB
Simon Viegas respondeu ao tópico de Skorpion007 em Teclados, mouses e controles para jogos
Coloque o teclado que funciona e configure o Windows 7 para logar automaticamente. Passos caso não saiba: - Pressione as teclas "Win+R" para abrir o executar, lá digite "control userpasswords2" (sem aspas) para abrir as "Contas de Usuário". - Clique num usuário com acesso administrativo (que está no grupo "Administradores") e desmarque a opção "Os usuários devem digitar um nome de usuário e uma senha para este computador". - Dê OK. E digite a senha do usuário e confirme. Desligue o computador, coloque o teclado ruim e ligue. O SO logará automaticamente (se senha estiver correta) e deverá identificar o seu teclado... PS: Uma forma, que não testei e não sei se funciona, é você logar com o teclado bom, esperar terminar de logar... e muda o teclado. Como são USB, acho que funciona, mas não tenho certeza. No aguardo. Abraços. -
Olá Clobs, Tem um pequeno erro de sintaxe nos se, veja o exemplo de correção: De: Se (v[1,1]) e (v[2,2]) e (v[3,3]) = "X" então Para: Se (v[1,1]="X") e (v[2,2]="X") e (v[3,3]="X") então Obs.: o então não tem o "~". Basicamente isso. No aguardo.
-
Como fazer o Pendrive aceitar arquivos grandes no formato FAT32
Simon Viegas respondeu ao tópico de METAL HEAD em Pen drives e cartões de memória
Então, se essa informação for verdade, ou for o caso para o seu aparelho, você realmente ficará limitado a aproximadamente 4GBs por aquivo. Pois é uma limitação da arquitetura do Fat32, mas nada impede de ter vários arquivos... já que o pen é de 16 GB! Daí, uma solução seria dividir o filme em várias partes menores que o limite... ou seja, cada parte seria como um CD do filme. Veja, não confundir com "dividir o arquivo"... são coisas diferentes! No primeiro, você pode usar um programa para "cortar o filme", ficando por exemplo: superman1.avi, superman2.avi, superman3.avi etc. Já tem programas que servem para dividir o arquivo (não o filme), ficando por exemplo.: superman.part1, superman.parte2, superman.parte3... Só não conheco no momento os programas que fazem isso! Dê uma pesquisada pelo termo "split". (lembrando de dividir o filme, não o arquivo). -
Manipulação de strings. Pascal
Simon Viegas respondeu ao tópico de Nanda Souza em Programação - outros
Olá, Baseado no código de rockzilla2109, fiz uma function. Abaixo um código, já com um testador... uses CRT; //carrega comandos extras como ClrScr, ReadKey, TextColor() etc (* FUNÇÃO QUE EXTRAI O TEXTO DA LINHA DO ARQUIVO. PARA CADA "//" ENCONTRADO, SUBS- TITUI POR UMA "QUEBRA DE LINHA". *) function separaTexto(linha:string):string; var i :byte; //variavel de apoio pra varrer todos os caracteres da string begin separaTexto:=''; //limpa o texto final; i:=1; //inicializa o contador while i <= Length(linha) do //enquanto não chegar ao final da linha begin //se encontrar dois '/' seguidos... if (linha[i]='/') and (linha[i+1]='/')then begin separaTexto:=separaTexto+#13+#10; //coloca 'enter' e 'carrie return' inc(i,2); //pula os dois caracteres '//' da "linha" end else begin //nao encontrou '//', então apenas captura o caracter verificado separaTexto:=separaTexto+linha[i]; inc(i); //pula para o próximo caractere end; end; end; {### Variáveis globais ###} var str :string; //variavel de apoio pra string resultante BEGIN ClrScr; //limpa a tela; str:='O Yahoo//respostas está//em//manutenção'; writeln('TEXTO ORIGINAL: ',str); writeln; writeln('TEXTO EXTRAIDO:'); writeln; writeln(separaTexto(str)); ReadKey; {pause antes de finalizar - (qualquer tecla para continua)} END. Qualquer coisa é só postar. No aguardo. Abraços Simon Viegas -
Qual a diferença entre READ e READLN ???
Simon Viegas respondeu ao tópico de Simon Viegas em Programação - outros
Olá, Valeu Mog.Lucas por essas outras informações. Só como dica pro pessoal: na dúvida usem sempre o readln, assim como também comentou kelson.23. A não ser, obviamente, que queira justamente aproveitar destas características do read , mas se não for o caso é bom usar o readln, até para evitar possíveis conflitos com outros compiladores. Abraços -
Olá, Eu estou perguntando e eu mesmo tentarei começar a responder... De cara!!! Fica a dica básica: "NUNCA USE READ(); SÓ USE READLN();" Pessoal, eu sempre recomendei usar ReadLN e nunca Read (sem o ln), mas nunca, pelo menos que lembre, dei uma boa explicação do motivo. Agora vou tentar dar uma luz para gente. Pela minha prática do uso do Pascal, observei que alguns programas davam problemas devido ao uso do Read (sem o ln). Não tinha nenhum motivo aparente. Todo código estava "claramente" correto, tudo visto certinho, mas na hora de rodar dava o famoso "pau". Futucando futucando observei que só alterando de Read para ReadLN o programa voltava a funcionar normalmente. Daí em diante SEMPRE usei ReadLN e excluir o Read do meu dicionário. Com o tempo descobri qual a diferença entre um e outro, mas quase que não utilizava o segundo devido a utilidade dele, ou seja, pouco programas necessitaram do uso do Read e acabei esquecendo da sua utilidade... entretanto, continuei com a "vibe" de só utilizar o ReadLN, já que são aparentimente iguais, para quê vou utilizar um que pode dar problema??? Aqui no fórum é comum encontrar código com o bendito Read, e sempre que podia dava a dica de NÃO USAR READ, SOMENTE READLN, mas de certo modo não explicava direito. Como não lembrava (já tinha visto antes) da funcionalidade do Read, resolvi pesquisar na net a algum tempo... já vi livro dizendo que é igual ao ln do Write... cuidado, não tem nada a ver!!! (em relação a escrita e leitura do console). O LN do WriteLN serve basicamente como "pular uma linha", acredito eu que "LN" venha de "Line", ou seja, como se desse um "ENTER" !!! - Imprime o texto e vai pro início da próxima, sem o ln vai continuar onde parou... Experimentem trocar um ReadLN por um Read! A linha vai deixar de descer??? NÃO !!! Não vai!!! (ou vai?) Vamos lá Resumidamente o que sei sobre eles é: ReadLN = Pega todos os caracteres digitados do console, armazena o que consegue e descarta o resto. Read = Pega SOMENTE o que cabe na variável e deixa o resto para o próximo Read ou ReadLN. Detalhe, enquanto não encontrar outro ReadLN (com LN) o Pascal NÃO VAI MAIS LER CARACTERES PELO CONSOLE, ou seja, não vai mais deixar o usuário digitar nada!!! Ele vai indo consumindo o que foi digitado ou não!!! PS: A dica continua.. ou seja, quem sabe mais ou menos pra que ser o Read use-o para sua utilidade, caso contráio só use READLN. Façam seus testes e comententem aqui por favor. Abraços
-
Gerar numeros e letras em ordem alfanumerica
Simon Viegas respondeu ao tópico de jw2009 em Programação - outros
Olá, Eu acredito que só bastará ajusta o primeiro com o terceiro... Eu não programo eu Delphi, mas vou tentar te ajudar. Abaixo fiz um código em Pascal... não está perfeito, mas funciona!!! Ai passar para o Delphi fica por tua conta!!! (tente, posso tentar ajudar tambpém) Se você conseguir colocar "proximaPalavra()" no Delphi, daí é só inserir o retorno dela no arquivo... Código Program Gera_Sequencia; (* /* Name : Gera_Sequencia. Author : Simon Viegas. Description : Gerador de sequência. Date : 26/08/09 19:19. Copyright : Fórum do Clube do Hardware (Pascal/Delphi). */ *) const (* REGRAS 1) ambos tem quer ter a mesma quantidade de letras} 2) inicio tem que ser menor que o fim (óbvio) 3) caracteres suportados: A..Z e 1..0. 4)... *) palavraInicio = 'AAA'; palavraFim = '000'; {retorna o sucessor da letra} function sucessor(letra:char):char; var temp :char; begin case letra of 'A'..'Y' :temp:=succ(letra); 'Z' :temp:='1'; '1'..'8' :temp:=succ(letra); '9' :temp:='0'; '0' :temp:='A'; else writeln('Tem algum erro nos caracteres'); writeln('Verifique as constantes palavraInicio e palavraFim'); readln; halt; {fecha o programa} end; {fim case} sucessor:=temp; end; {retorna a próxima palavra} function proximaPalavra(var palavra:string; posicao:byte):string; var tamanho :byte; pos :byte; begin tamanho:=length(palavra); {tamanha} pos:=tamanho-posicao+1; if (palavra[pos] = '0') then proximaPalavra(palavra,posicao+1); {chama em recursividade} palavra[pos] := sucessor(palavra[pos]); proximaPalavra:=palavra; end; var palavra :string; Begin palavra:=palavraInicio; writeln(palavra); while palavra <> palavraFim do writeln(proximaPalavra(palavra,1)); readln; end. Fico no aguardo... Abraços -
Separar palavras de uma string em pascal sem uso de funções
Simon Viegas respondeu ao tópico de Paula Minaré em Programação - outros
Você deve fazer mais ou menos o seguinte. Se houver letra para percorrer Pular todos os espaços até acha a 1º letra e copiar a posição dela; Achar o próximo espaço ou fim do programa e copiar a posição dela; Imprimir lado-a-lado da posição inicial até a posição anterior ao do espaço; Pular um linha; Voltar para etapa 1; Senão Fim. Espero ter ajudado...
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