-
Posts
3.940 -
Cadastrado em
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Simon Viegas postou
-
Qual a saída desejada? Vide: O que é uma "subsequência contígua"? Vejam: Ou seja, apesar dos erros de português, o enunciado está dizendo algo como apenas as "subsequências contíguas" "a", "b" e "ab" são repetidas para "ababcabb". Então, vamos considerar que não sabemos o que é "subsequências contíguas" ou "subsequências repetidos contíguas"... mas ele diz que isso, sei lá o que seja, só são "a", "b" e "ab". E é isso que estou me baseando. Agora reparem: "ababcabb" "ababcabb" "ababcabb" "ababcabb" "ababcabb" "ababcabb" Para qualquer outra subsequências contíguas isso não ocorre... Para "mississippi" existem 9 subsequências contíguas diferentes.... o que inclui o "issi". Veja: "mississippi" "mississippi" Seguem todas as "subsequências contíguas" que se repetem: Se quiser podem testar aí...cada uma das subsequências contíguas que estão entre " podem ser localizadas pelo menos de duas formas diferentes em mississippi. (não importa parte de uma está eventualmente "encavalado" com outra -... pois é isso que ele quer para o meu entendimento) @arfneto, de um modo geral, o que eu quero dizer é que para analisar um problema, não necessariamente importaria se ele faz algum sentido ou não.. o cerne está no que ele quer. "A quantidade de ocorrência de alguma coisa". Veja que também não me importa para que esse dado será utilizado... estou apenas no escopo da função... que é receber uma string e retornar um inteiro. ADENDO: Veja o conteúdo da versão em inglês: Traduzindo pelo Google Translator: Perceba que traduzindo direto do inglês faz mais sentido!!! E se encaixa perfeitamente no que deduzi...
-
OK. Não é "duplicada". Talvez um termo melhor seria "repetidas"?... Se não servir também - apesar de ser importante utilizar um termo mais correto e preciso - vamos chamar o que eu procuro de "copeliscos". Daí, existem 13 "copeliscos" em "mississipi". O "issi" é um deles". É isso que eu estou contando. Veja: Eu estou entendendo que o enunciado queria apenas a quantidade "copeliscos" distintos entre si... perceba que no trecho rasurado tem "is", logo foi um erro foi na execução do algoritmo!!! ele já foi citado no 4... não faria sentido! Apenas errei ao fazer de cabeça na hora... Todos os 9 citados são "copelistos" e são distintos entre si. Segue um resultado de um novo teste: Peguei uma string de 1315 caracteres no site e executei lá: 7SygxhcDARmBjE4lzmoOOXSLR5EWNMU4LZ.TG3thal0jmV0hBQmMlXTJ2ktwIXE447EK45SAQFbjyMbo6Uy4YOio5ZbtzfZiEnGZhw1FaVAKvjiOGGBMdEOUD8qT2QvV9XTI1xvDRcOHRHWEZi85OAZmiSNUGNT1,UT6Qb1CrItic2I3DTK4iMrVJmVE,gJJkohcoF8LCvcHcqf7ez6RkiRFxKpd6nEaixJcj4t,YKD1u2cZssNAyjPLk8WN7fhuGsRdetHY9xnlEXbMUHtozWYiMC6rP1fO6hfmL5phJ16RjkPCaoLo1hVqsmukSNbd..zMwYffoilE.gJDWGgJuuhg1tMzSHJTu.qx9gQ0LwPRKWwYMHDuEHJX56zgrSsUKrrPe9NDqO8AIpRIkxtP70Qzfjvzdq2pw9fJsEJh2gR0IQj2elpQuvfgbibBRv4xsluooYh6b3Ealkz08f6GpoCbv.gtVdapadLXIb6.yf.gf3cMBn7svMwrP1lj4H19jSHu1tLCJ2Zo35TuhQ7ipKC,LZ5gV4aRtpVaVWVBltKHlycfPLIlJrvsXb4r6qiHh1474Gbe2K6gOBObQgxI71Qs1NVYdX2LoKKq4QdDnXCg2miqWvdv9ychAShYWJYboLAexxCW4bZOEXj7LAnTtbg6gANyRTJ9X,cH9V1fGEN0gsuiWDEXK5DYI33SBzYFE8fUt61IRoFYx5qc4LDPxjX3xmH3OTgX9IlZ,,frdAdR5TMUN7ZEw3NsmHla5Yi61675QimAok8Mv1.wKNiwilPkO.Dp4VFdWm.h9BZd2LYRrA,bxXdCvpFNvQaSmU0tvG8LEbIwI1mdxKs4OHn1LjWY6UCGD1UYm9CC3caB5aZ1nBEc,.nRGcfY.syYuo2O9SgZVL1yLppjDgmNerSfVdgVlECRx,0.q2JYT0RxnQhiUVdVFIrm4rAXiAsrpqp7THBIB1hFzyd5NCSJ45LgK3PbDoGVKlWO91vkGX05XJSKYwVk4Eq9B7CMYbUk,2.lM86YKWyR9rQr2LZTfy55gNBPV8LSgBIVr8XIp5BaLRKjBqGsiXialbnr8hSCJadzN.JJjwM9r5dtjHFdQVMCusBMcQSI8Tktok386nHSQdU4OEyirB7vhHSWNTnh7SEKWOw2kNZuwqo,GqYNN8UXo4P4ux2sgePu0GOyHSf9.QlWA,wQtCO6qD6fYXqlh8qRb5uQNK.Wlxmt8ZSy8br31zgFNdc6LD9Yb9d0fxh0JG5XVZB6m0qXK01pDv1OiVyXBYC,HmhrWn7rCjlxQ9nVh2XC6VrCy6iU3Hi Deram 219 "copeliscos" únicos*. Veja: Fui no meu programa e executei: Deu 219. Então, só para reforçar: não estou dizendo que esse algoritmo é uma resposta válida, mas apenas demonstrando que está coerente no que eu entendi.. da mesma forma não estou dizendo que o que eu entendi está necessariamente certo, mas apenas que está correspondendo 100% com todos os testes efetuados até o momento (acho que poderia chamar de conjectura)... pode ser apenas coincidência. Modifiquei o código para ler apenas uma string, segue: #include "stdio.h" #include "string.h" int main() { char entrada[1400], subString1[1400]="", subString2[1400]="", listaRepetidos[256][1400]; int cont=0, pos1, pos2, qtd, contRepetidos = 0; scanf("%s", entrada); int tamanho = strlen(entrada); for (int qtd=1; qtd < tamanho; qtd++) { for (int pos1=0; pos1 < tamanho-1; pos1++) { bool repete = false; memcpy(subString1, &entrada[pos1], qtd); for (int pos2=pos1+1; pos2 < tamanho; pos2++) { memcpy(subString2, &entrada[pos2], qtd); if (strcmp(subString1, subString2) == 0) { cont++; repete = true; bool novo = true; for (int r=0; r<=contRepetidos; r++) { if (strcmp(listaRepetidos[r], subString1) == 0) { novo=false; } } if (novo) { for(int x=0; x<strlen(subString1); x++) { listaRepetidos[contRepetidos][x] = subString1[x]; } contRepetidos++; } } if (repete) break; } } } printf("\nENTRADA: %s\nSAIDA: %d", entrada, contRepetidos ); return 0; }; // main() O código anterior foi apenas uma forma que imaginei para já deixar algumas entradas no próprio código (só para testar mais de uma de uma vez... tentei fazer só por um desafio mesmo, mas falhei, rs)... Mas acho que o que importa é a lógica para uma string mesmo (pois se para uma string tiver errado, não adiantaria muita coisa para N strings)...
-
@arfneto, sim... apenas foi uma tentativa frustada de inserir as entradas automaticamente... era apenas para demostrar os resultados de uma vez só. Entrando um a um funciona (aquilo que propus a fazer, não necessariamente o que é necessário de fato para o enunciado. Todos os valores batem igual... pode ser coincidência). adicionado 0 minutos depois Já comecei me batendo para fazer um "vetor de strings", rs.
-
VisualG algoritmo falta uma condição
Simon Viegas respondeu ao tópico de wagner.c em Programação - iniciantes
@wagner.c, seja bem vindo ao Fórum do Clube do Hardware. A definição do que precisa ser feito depende do que está no enunciado. No caso, é preciso verificar de fato se quer que encerre o programa OU quer que o usuário informe outro número (ou a depender uma misto de ambos)... são duas características distintas. Segue algumas dicas gerais: Sempre mantenha seu código indentado. No VisualG ao pressionar Ctrl+G é já dá uma reorganizada; Ex.: Algoritmo "doisouum" Var c, e, w: inteiro Inicio Escreval ("cris informe sua jogada") Leia(c) Se (c>2) entao Escreval ("Game Over") senao Fimse Escreval ("erick informe sua jogada") Leia(e) Se (e>2) entao Escreval ("Game Over") senao Fimse Escreval ("wagner informe sua jogada") Leia(w) Se (w>2) entao Escreval ("Game Over") senao Fimse se (c<>w) e (c<>e) entao escreval("c") senao se (e<>w)e(e<>c) entao escreval("e") senao se (w<>e)e(w<>a) entao escreval("w") senao escreval("x") fimse fimse fimse fimalgoritmo Veja a diferença. Visualmente já fica mais fácil para entender as estruturas; Use nomenclaturas de variáveis mais sugestivas. Ex.: algoritmo "Dois ou Um" var jogadaCris, jogadaErick, jogadaWagner :inteiro Perceba como faz todo sentido biológico. Num mesmo sentido, vale também dar uns resultados mais específicos. Exemplo: se (jogadaCris <> jogadaWagner) e (jogadaCris <> jogadaErick ) entao escreval("----->> Cris venceu") senao se (jogadaErick <> jogadaWagner) e (jogadaErick <> jogadaCris) entao escreval("----->> Erik venceu") senao se (jogadaWagner <> jogadaErick) e (jogadaWagner <> jogadaCris) entao escreval("----->> Wagner venceu") senao escreval("=======>> Não acho que quem ganhar ou quem perder, nem quem ganhar nem perder, vai ganhar ou perder. Vai todo mundo perder") fimSe fimSe fimSe É preferível relacionar as condições com o contexto, exemplo: Em vez de: escreval("Cris, informe sua jogada") leia(jogadaCris) se (jogadaCris > 2) entao escreval ("Game Over") fimSe Poderia ser algo como: escreval("Cris, informe sua jogada") leia(jogadaCris) se (jogadaCris <> 2) e (jogadaCris <> 1) entao escreval ("Game Over") fimSe Perceba que a ideia é sempre ir se aproximando de uma representação do contexto real... se o jogo é "dois ou um", não pode ser "diferente de 2 e diferente de 1". Tá, se objetivo seria finalizar, poderia utilizar o comando fimAlgoritmo. Funciona!!! mas eu acho muito estranho e não recomendo. Seria algo assim: Se for colocar para fica repetindo: repita escreva("Cris, informe sua jogada ---: ") leia(jogadaCris) ate (jogadaCris = 2) ou (jogadaCris = 1) repita escreva("Erick, informe sua jogada --: ") leia(jogadaErick) ate (jogadaErick = 2) ou (jogadaErick = 1) repita escreva("Wagner, informe sua jogada -: ") leia(jogadaWagner) ate (jogadaWagner = 2) ou (jogadaWagner = 1) Perceba que as sentenças ficam "negadas", ou seja: passou a ser igual e ficou OU, em vez de E. Adendo: @devair1010, como já colocou a verificação dos valores antes, essa seleção sempre vai ter resultado falso (será uma Contradição). -
@arfneto, vamos lá: Em relação a minha lógica, apenas houve erros nas demonstrações da execução. A minha lógica não mudou. Na tua lógica, qual é o número de diferentes subsequências contíguas que aparecem pelo menos duas vezes na seqüência em mississipi? Ex.: ENTRADA nusssissippi SAÍDA 8 Correto? Quais seriam 8 sequências? Então, da forma que eu entendi seriam 9 sequências. Essas: [i, is, iss, issi, p, s, ss, si, ssi]. Cada uma delas ocorrem pelo menos 2 vezes. Foi assim que eu entendi, e está, por coincidência ou não, correspondendo. Aqui uma demonstração: Existem 13 repetições de sequências de bytes... mas o enunciado quer apenas as repetições únicas... logo, dá 9. Achei esse site (https://www.udebug.com/URI/1377) que testa as entradas... todos os resultados batem. Ex.: Outros testes: Aqui continua batendo igual... Então, estou tendo dificuldade para implementar um código em C (não na lógica, mas sim pela sintaxe do C. Eu sei o que é para fazer, só não sei como, rs). Fazendo um testes individuais está batendo certinho... mas como não tenho as manhas, não consegui colocar um vetor com os dados de entrada... ou seja: não está funcionando bem para várias entradas. Mas isso não tem qualquer relação com a lógica... Segue o código com tentativa de colocar várias entradas: #include "stdio.h" #include "string.h" int main() { //scanf("%s", entrada); char ENTRADAS[256][256] = {",BQgnwsjrHMK1raD7Xjd,9Ik9rcwsGGwhPttlN3jaju15H6VdGV6IcnACgLL8HODqZi906Assg,mQTdvp,fHY8yhJfQpvrJmIHqSp2bnqbVspBJ3P2sH5un6A2z7NyzkfB1hKd1HbIUVWuH8yTGI,WYAic5s5Esacj937j.3UsdkvbgmLm1ll5rq1pu7ukwwGtXJDVJ3D31lhiArw7AeLyWdPgWF,gSZOIz0rFUiy6nCntLW1Jx2vZxCTqwMc6", "*"}; int e=0; do { char entrada[256], subString1[200]="", subString2[200]="", listaRepetidos[256][256]; int cont=0, pos1, pos2, qtd, contRepetidos = 0; strcpy(entrada, ENTRADAS[e]); int tamanho = strlen(entrada); for (int qtd=1; qtd < tamanho; qtd++) { for (int pos1=0; pos1 < tamanho-1; pos1++) { bool repete = false; memcpy(subString1, &entrada[pos1], qtd); for (int pos2=pos1+1; pos2 < tamanho; pos2++) { memcpy(subString2, &entrada[pos2], qtd); if (strcmp(subString1, subString2) == 0) { cont++; repete = true; bool novo = true; for (int r=0; r<=contRepetidos; r++) { if (strcmp(listaRepetidos[r], subString1) == 0) { novo=false; } } if (novo) { for(int x=0; x<strlen(subString1); x++) { listaRepetidos[contRepetidos][x] = subString1[x]; } contRepetidos++; } } if (repete) break; } } } printf("\nENTRADA: %s\nSAIDA: %d", entrada, contRepetidos ); e++; } while (strcmp(ENTRADAS[e], "*") != 0); return 0; }; // main() Calcula certinho... só não consegue calcular mais de um em uma única execução... você poderia dar uma ajustada nesse código?
-
@arfneto, de antemão respeito deu feedback honesto... e espero não ter causado problemas... e peço desculpa por qualquer mal entendido... Vamos lá: Creio que seja esperado que jamais teria a intenção de ofender ninguém, ainda mais você que sequer me deu motivos... Peço que abstraia e entenda apenas como mal uso de palavras minhas... São relacionados às premissas anteriores... Veja: foi ele que abriu um tópico para traduzir um código... "qualquer" foi apenas, também, um mal uso... foi mal. Reforçando a premissa: estou focando no autor. Além de nós, que estamos tentando ajudá-lo, é ele, principalmente, que deve ANTES entender o que o exercício quer responder.. É algo (que acho) que já costumo empregar a um tempo: "focar no entendimento do problema antes de implementar um código". (no caso do autor... seja ele criar um novo código, ele usar um código traduzido). (Adendo: o "qualquer" vem daí, pois tanto faz se foi ele mesmo quem o fez, seja se ele "achou pronto" em algum lugar.) Show!!! O meu comentário foi com tom de agradecimento por me apresentar algo útil (que eu não conhecia), e ao mesmo tempo de forma que foi suficiente para eu (tentar) utilizar o mesmo recurso para a minha demonstração de entendimento do problema. Vide: A árvore que eu postei é Trie (pelo menos é isso que diz o site online que eu criei a árvore - https://www.cs.usfca.edu/~galles/visualization/Trie.html). A parte do teu código confesso que fiquei longe de entender ainda...(não sou um grande programador, e conheço ainda menos C). Eu tinha em mente antes chegarmos a um senso comum de qual é o entendimento correto do problema, para só depois, caso necessário, tirar algumas dúvidas com vocês. Veja: no momento achava que ainda não tínhamos entendido o problema de forma igual: Ali citei você entre "()" para dizer que "nosso" era apenas eu e você, sem incluir o autor (que não sei o que ele entendeu) ou outros entendimentos. VAMOS A QUESTÃO DO MEUS ALGORITMO Sobre: Foram erros digitação e erro de criação de árvore correspondente (como achava que a árvore estava certa, criei uma lista baseado nela). Eu fiz de cabeça! (o resultado dos código estão certos). Já corrigi parte das minhas postagem. Cito-os abaixo: x Pode de ser que ainda tenha erro kkkkkk. De qualquer forma peço que foque na lógica. Ou seja: houve erros na demonstração da lógica, não na lógica em si. (Obs.: mesmo que eventualmente essa lógica não siva para o enunciado - eu ainda acho que sim. Apenas reforço que já existem pelo menos 2 entendimentos diferentes, o que no mínimo dar um ar de não ser um problema tão trivial assim... para menos para mim, é claro.) Então... para mim o enunciado está correto... assim como acho que a lógica que estou usando responde a ela. Sobre: Justamente. Estou supostamente fazendo isso: Estou propondo que o enunciado pode ser resumido a isso... ou seja: não deveriam-se sequer importar se essa verificação faz algum sentido para essa história "Recuperador de Arquivos"... isso seria só um "enche linguiça" ("atrapalhar a abstração").
-
Estava me referindo a uma nova implementação para o @Denis Mioto, ou seja: ele deve primeiro entender o problema. Caso não tenha entendido ainda, não tem porque começar a tentar implementar. E outro ponto é sobre a "tradução de código". Se não entendeu ainda o problema, menos ainda adiantaria traduzir um código que eventualmente estaria correto. (Se não entendeu o problema e o código está correto, ou acertaria por sorte, ou copiou de outro lugar.) Sobre esse recurso Trie... eu não tinha ouvido falar antes.. Mas, seguindo o que eu entendi do problema, uma arvore ficaria mais ou menos assim: Para ababcabb: Legenda: As bolinhas verdes são as sub-strings que se repetem; As bolinhas brancas são as que existem, mas não se repetem (precisam existir para ter uma referência que não precisa verificar). O que o enunciado queria seria a quantidade de círculos verdes, ou seja: 3 repetições. O "a" se repete, o "ab" se repete e o "b" se repete. Adendo: Eu usei um recurso online para gerar a árvore. Mas poderia ser "A" primeira bola e "AB" na bola filha. (O site que representa apenas uma letra.) Para mississipi : OBS.: a imagem acima está errada, o "pp" não se repete. (houve um erro na hora de cria manualmente a árvore online!! mas a lógica é exatamente a mesma) Total 9 [i, is, iss, issi, p, s, ss, si, ssi] Total 9 [i, is, iss, issi, p, pp, s, ss, ssi]. Para aaaaaaaaaaaaaaaaaaaaaaaaaa: Total 25 repetições. obs.: esse não terá ponto de parada pois não é verificado a posição 26 (não tem como toda string se repetir) Para o 012345678,abcdefg.STUVWXYZ: A árvore teria 26 bolas (uma para caada caractere) e todas seriam brancas. Por aí vai... Ou seja: só aqui suponho que o nosso entendimento (@arfneto e meu) são distintos (ou sequer entendi o que você entendeu)... mas no final, o que importaria seria o que o @Denis Mioto entendeu, ou passará a entender, pois é ele que vai implementar o código em C. adicionado 13 minutos depois Para tentar demonstrar o que eu entendi, fiz um código que conta quantas substring estão repetindo: Para ababcabb: No caso, existem um total de 7 repetições... mas acontece que o enunciado do problema não quer "repetições repetidas". Logo: Risquei as repetições repetidas... deu 3 repetições. Para mississipi: RESUMINDO: adicionado 23 minutos depois Para say.twice,say.twice não tem repetições repetidas: O resultado seria 45 mesmo. ADENDO: Eu, como curioso que sou, até tenho curiosidade para entender para que essa contagem serviria para recuperar dados, mas o que estou propondo é que é algo irrelevante para solução do problema. No caso, é preciso entender "o quê o enunciado quer que o programa conte", e não necessariamente "a serventia de determinada contagem para alguma coisa". A proposta seria ficar apenas dentro do escopo da função, ou seja: só me importaria o valor de entrada e qualquer seria o valor de saída esperado.
-
C Como ignorar acentuação e espaços em uma string
Simon Viegas respondeu ao tópico de Matheus Eduardo Vieira em C/C#/C++
Acho que só isso não adiantaria. Talvez uma alternativa mais viável seria normalizar (acho que o termo é esse) a string antes mesmo de copiar. Após obter a string: normaliza a string: remove os acentos (inclui "ç"); remove as pontuações; remove os espaços; torna tudo maiúsculo ou minúsculo etc; só aí faz uma cópia invertida; compara a string normalizada com a sua cópia. Uma outra forma para verificar seria comparar as posições simétricas (também acho que o nome é esse), ou seja: vai verificando se o primeiro é igual ao último, se o segundo é igual ao penúltimo... etc. (Só precisa verificar até no máximo a metade dos caracteres.) -
Olá... segue o que eu entendi do tópico: Vamos alguns pontos: 1# Sobre a solicitação do chamado? Para simplificar: @Denis Mioto, não importa se foi você quem fez ou se achou o código em algum lugar. Qual a necessidade de traduzir um código? Isso não me faz muito sentido. Simplesmente crie um novo código e pronto. O objetivo é VOCÊ criar um algoritmo que resolva um problema em C, e não "você colar lá um código que solucione-o". O objetivo não é fazer o site aceitar uma resposta, mas sim o meio para chegar a essa resposta. Se está sendo solicitado que seja implementado um código em C, vá lá e implemente. 2# Sobre o enunciado do problema Temos 2 bases iniciais: é preciso primeiro entender o problema, para só depois tentar solucioná-lo. o que vale é que está no enunciado, não necessariamente o contexto do "mundo real". Para o [1]. @arfneto, você já sabe o que é para fazer? Se sim, comece a implementar um código para resolver o problema proposto. Se é para fazer em C, faça em C. Caso não saiba, veja ANTES a necessidade de entender o que é para ser feito!!! Vejam: o que eu quero dizer é que não deveria fazer sentido tentar fazer um código que ainda não se sabe para que ele vai servir!!! Piorou "traduzir um código qualquer* para servir como uma possível resposta". Para o [2], se lá existe uma definição do problema... a definição do problema é a que ele definiu. Se existir eventualmente existir algum conflito, devem-se voltar para o [1]. O que pode incluir, por exemplo, discutir o problema em um fórum (como esse; ou um fórum do próprio site; ou entre colegas de curso etc). Vejam: a questão aqui NÃO é discutir para resolver o problema ainda!!! mas pura e simplesmente ANTES entender o problema em si... *** Vou tentar entender o que o enunciado quer... Vejam o texto o negrito.. para mim não deveria importar se isso faz algum sentido técnico ou não.. o cerne não deveria ser a viabilidade, mas sim o requisito desejado. "Ele quer isso, vamos dar isso" [suponto que já sabemos que o enunciado está correto, como sugerido mais acima]. Então. Geralmente analisar a saída ajuda... vamos lá: O que eu entendi que precisa ser feito é: informe quantas sub-strings distintas se repetem na string informada. Vamos ver se se encaixa as saídas: Para: ababcabb "a" se repete; "b" se repete; "ab" se repete; Logo, temos 3 sub-strings repetindo. Para: mississippi "i" se repete; "s" se repete; "p" se repete; "is" se repete; "ss" se repete; "si" se repete; "issi" se repete; "is" se repete; "iss" se repete; "ssi" se repete Logo, temos 9 sub-strings repetindo. Para: aaaaaaaaaaaaaaaaaaaaaaaaaa "a" "aa" "aaa" "aaaa" . . . . . . . . . "aaaaaaaaaaaaaaaaaaaaaaaa" "aaaaaaaaaaaaaaaaaaaaaaaaa" "aaaaaaaaaaaaaaaaaaaaaaaaaa" Logo, temos 25 sub-strings repetindo. Para: say.twice,say.twice "s" "a" "y" "." "t" "w" "i" "c" "e" "sa" "ay" "y." ".t" "tw" "wi" "ic" "ce" "say" "ay." "y.t" ".tw" "twi" "wic" "ice" "say." "ay.t" "y.tw" ".twi" "twic" "wice" "say.t" "ay.tw" "y.twi" ".twic" "twice" "say.tw" "ay.twi" "y.twic" ".twice" "say.twi" "ay.twic" "y.twice" "say.twic" "ay.twice" "say.twice" Logo, temos 45 sub-strings repetindo. PRONTO! Esse entendimento do problema está correto? SE SIM, então só a partir de agora eu começaria a implementar algum algoritmo que consiga solucionar o problema; (Como citado mais acima: não me faz muito sentido 'traduzir' um outro código.) SE NÃO, então nada de código por enquanto... teria que antes parar para entender melhor o problema.
-
C++ Crie uma matriz 2 𝑥 3. Execute um dos seguintes procedimentos para a matriz: (2
Simon Viegas respondeu ao tópico de Lucasalb11 em C/C#/C++
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 -
Portugol Com o Portugol Studio Desenvolva os seguintes Algoritmos
Simon Viegas respondeu ao tópico de Kidorion em Programação - iniciantes
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 -
VisualG Pseudocódigo Unicesumar - Quero entender a soma da matriz nesse algoritmo
Simon Viegas respondeu ao tópico de Luiz Paulo Escobar em Programação - iniciantes
Trata-se de outro tema. Sugiro dar uma olhada no fórum de C : https://www.clubedohardware.com.br/forums/forum/177-ccc/ A depender, utilizar o recurso de Pesquisar que fica no canto superior direito. Caso não encontre algo útil, poderia abrir um chamado com sua dúvida/pedido de sugestão. -
@Tubarãogigante, tentei dar uma reformulada no código do @arfneto. #include <stdio.h> int primo(int); int main() { int qtdDesejadaDePrimos = 10; int qtdPrimosEncontrados = 0; int fa = 0; int fb = 1; int soma; if (primo(fa)) { qtdPrimosEncontrados++; printf("%2d ", fa); }; // if() for (qtdPrimosEncontrados = qtdPrimosEncontrados; qtdPrimosEncontrados < qtdDesejadaDePrimos;) { if (primo(fb)) { printf("%2d ", fb); qtdPrimosEncontrados++; }; // if() if (fb > 900* 1000 *1000 ) break; soma = fa + fb; fa = fb; fb = soma; }; // for() return 0; }; // main() int primo(int a) { //em construção return 1; }; Então, tanto esse código, tanto o do @arfneto são apenas um "esboço" (quase tudo na verdade) do que precisa ser feito. Só falta apenas implementar a função primo(). Você pode colocar qualquer algoritmo ali dentro!!! O importante é que, ao receber um inteiro, ele retorne 1 quando esse inteiro é primo, ou 0 quando ele não é primo. Se quiser usar como retorno bool, apenas faça retornar true e false respectivamente... vai dar na mesma! Sobre o teu código: Não ser primo não tem algo a ver com o problema. Só importa o que é primo (a não ser que use para ter alguma referência); Como você quer encontrar 10 primos dentre os números passados (que no caso são da Sequência de Fibonacci), você precisaria utiliza um "contador de primos", ou seja: o laço de repetição deve ficar até encontrar 10 primos, e não até verificar 10 números. O código do @arfneto (e o meu por consequência) já faz isso. Só entender e ajustar o teu código. RESUMINDO: Já existem 3 soluções possíveis: A do @arfneto, que basta finalizar a implementação da função primo(); (que foi deixado para você fazer...) Meu código, que foi baseado no código do @arfneto, que também deixei apenas terminar o primo(); (Em ambos bastaria por exemplo colar o código do @Matheus Maldi e mudando a entrada para N, em vez de a.) A lógica do @Matheus Maldi, no qual também já está praticamente tudo pronto. Basta usar as duas funções corretamente. A minha sugestão é fazer os 3 códigos!!! Inicialmente escolhe um e tenta finalizar. Qualquer dúvida é só postar. Após, finaliza os outros também... por exemplo: você pode corrigir o que você idealizou e tentar fazer os outros 2 apenas como exercício. (Aí, a depender, pode reorganizar o seu com aquilo que achar interessante.)
-
Acho a utilização de array desnecessária... no caso, seria preferível ir verificando se é primo ou não a medida que vai gerando um novo número da sequência. Desta forma, irá apenas gerar uma quantidade de números necessários. Utilizando vetores teria que "adivinhar" quantos números são necessários, afinal, não se sabe a relação entre a sequência e a ocorrência de primos. Ou como no teu exemplo, colocar uma "quantidade alta" de números... (obs.: que te antemão não sabia se ia funcionar)
-
VisualG Algorítimo Vetor - Visual G
Simon Viegas respondeu ao tópico de Alexandra Oliveira em Programação - iniciantes
@Alexandra Oliveira, Qual o enunciado completo da questão? adicionado 5 minutos depois No código atual inicialmente sugiro o seguinte: coloque para ler apenas 3 números, em vez de 20; é para calcular a somatória, e não a quantidade. Ajuste o código para tanto. -
VisualG Algorítimo Vetor - Visual G
Simon Viegas respondeu ao tópico de Alexandra Oliveira em Programação - iniciantes
@Alexandra Oliveira, poste o que já conseguiu fazer e onde está com dúvidas. -
O outro erro é que falta uma ")";
-
VisualG Algoritmo visualg com arredondamento de latas de tinta
Simon Viegas respondeu ao tópico de Rogerr Bianchi em Programação - iniciantes
@Rogerr Bianchi, um exemplo: Pegue a parte inteira do número: Se for igual ao valor original, então usa apenas esse valor; Se for maior, então soma mais 1 da parte inteira. -
Prolog Intentificação de variavel em algorotmos
Simon Viegas respondeu ao tópico de Mr.Waffles em Programação - iniciantes
Então você não entendeu o d. Dê uma pesquisa sobre "registros" em VisuaG, Portugol, Pascal etc. No C é chamado de struct. Um registro é meio que uma coleção de variáveis. Para exemplificar, segue um exemplo em Pascal: {$CODEPAGE UTF8} //para permitir acentos nas string em alguns compiladores program Exemplo_de_registro; var aluno :record nome :string; notaAV1 :real; notaAV2 :real; end; begin writeln('Dados do Aluno'); write ('Nome : '); readln(aluno.nome); write ('Nota AV1 :'); readln(aluno.notaAV1); write ('Nota AV2 :'); readln(aluno.notaAV2); writeln('Nome: ', aluno.nome, ' - ', 'Média :', (aluno.notaAV1+aluno.notaAV2)/2:1:2); readln(); end. Perceba que o registro é apenas uma forma de estruturar os dados. Com ele fica mais fácil agrupar e obter informações, por exemplo... No código acima, os dados do aluno está no registro aluno... para um vetor de alunos, cada dados de um mesmo aluno ficaria numa mesma posição de vetor. Por aí vai. Um exemplo com vetores: (obs.: esqueci de mudar a posição para 2 ali no nome do segundo... estou com preguiça de tirar outro print, rs) Veja que poderia também colocar vetores dentro do registro, exemplo: Por aí vai.. -
Prolog Intentificação de variavel em algorotmos
Simon Viegas respondeu ao tópico de Mr.Waffles em Programação - iniciantes
Nops! divisão de inteiros por inteiros resulta em um real. Poderia dizer algo assim: "Executar um div de um inteiro por outro inteiro resulta em um inteiro". Não pelo "então" e sim para "a=6". A resposta resposta está certa, mas pela justificativa errada. (Ou pelo menos no que foi citado.) Tomemos A div B. O div (supostamente) é um operador que retornará a parte inteiro da divisão A por B, logo: o resultado sempre será (apenas) inteiro, e não real. -
@devair1010, você está utilizando vários "comando" do C. Vide: Creio que, caso necessário, deveria substituir por equivalentes em C++. Sobre: Eu também não entendi. Como funciona essa estrutura?
-
Prolog Intentificação de variavel em algorotmos
Simon Viegas respondeu ao tópico de Mr.Waffles em Programação - iniciantes
@Mr.Waffles, OK... mas que tipo de divisão? Ele retorna qual valor? (e esse valor é de que tipo?) -
Portugol Preenche uma matriz e imprime seus valores pares
Simon Viegas respondeu ao tópico de Mr.Waffles em Programação - iniciantes
Para mim um ponto inicial seria "reduzir o tamanho da matriz" mesmo... Após ter uma solução, fica até mais fácil para analisar... Pelo que eu vi, para uma quantidade de colunas par, a quantidade de números pares na linha será sempre N / 2. Daí só multiplicar por M para ter o total. M = 10.000 N = 10.000 (N/2) * M = 5.000 * 10.000 = 50.000.000 -
VisualG Sequência de Fibonacci portugol
Simon Viegas respondeu ao tópico de TEC897546 em Programação - iniciantes
@TEC897546, provavelmente trata-se uma limitação/arquitetura computacional. No VisualG, tomemos que o tamanho das variáveis na memória são fixos! Sempre "utiliza" a mesma quantidade de bits na memória para armazenar os valores. O número 10 vai ocupar o mesmo espaço do número 1.000.000. Para número menores que o limite, ele colocar um monte de 0 a esquerda... entende? Assim, existe um limite de representações possíveis para um inteiro, por exemplo: pode escrever de -10.000.000 a +10.000.000. Daí, quando chega a um limite, a forma que está programado para funcionar, é "virar" para a próximo valor lá da outra ponta da faixa. Algo assim: 9.999.997 9.999.998 9.999.999 10.000.0000 -10.000.000 -9.999.999 -9.999.998 -9.999.997 Ou seja: a sequência fica limitada ao tamanho da faixa de números. Você pode tentar com outro tipo numérico compatível ou implementar alguma estrutura que consegui expandir ADENDO: Poderia ser possível fazer o programa "travar" ao tentar passar do limite, mas por algum motivo técnico ou por opção mesmo, resolveram fazer o número "da uma volta" na sua faixa de valores. Isso não necessariamente é um problema, apenas não é útil para o teu contexto. -
Portugol Preenche uma matriz e imprime seus valores pares
Simon Viegas respondeu ao tópico de Mr.Waffles em Programação - iniciantes
Como vai responder a pergunta se utilizar a quantidade que quiser? Vide: O enunciado não é para implementar algum código ou ter opções..., mas apenas analisar o algoritmo e responder a pergunta.. só existe uma resposta correta. @Mr.Waffles, vamos ao enunciado: Dois segredos: Foque no entendimento problema, e não na busca de solução (dica fundamental); Use e abuse da abstração. Vamos a uma demonstração de exemplo de análise: Após dar uma passada superficial no "código do algoritmo", eu não* entendi muito coisa... e para mim nesse momento não me importa!!! Ainda não sei do que se trata... só tô passando o ôio... mas ali no final tem uma pergunta: "Quantos valores são impressos pelo programa acima?". Opa! ele quer saber quantos números são pares em relação a uma lista qualquer. Pronto! esse é o cerne! Perceba que já sei qual é a base do problema. Uma nova questão poderia ser: "Como raios essa matriz está sendo montada?". Mas veja: se tive um algoritmo de 1000 linhas, e no final tivesse perguntando: "Qual é o maior time de Futebol do Note/Nordeste?". A resposta seria Bahia! O importava ler/traduzir o algoritmo?. Ou: "Quantas letras existem na palavra Brasil?"... Não teria qualquer relação com um algoritmo. A resposta seria 6 e pronto. Foque no problema!!! Para ajudar, use de abstrações... Tem outro sub-problema: o que é um número par? eu já tenho domínio sobre esse tema?... Acho que é bem simples, mas um dos pontos seria saber se 0 é par ou não, e se negativos também são considerados pares e ímpares, mas já deu para deduzir ali no código que o menor valor na matriz será 2... então algo a menos para se preocupar. Vamos analisar mais o código: então, existirá uma Matriz MxN (M linhas x N Colunas). A matriz será preenchida de modo que cada posição Ai,j terá a soma dos valores de sua própria coordenada... ou seja: Ai,j = i+j. Ex.: A156,1201 = 156+1201 (tô com preguiça de somar, rs. Mas veja: por sinal nem precisa calcular, pois já dar para ver que vai ser ímpar. O valor que está lá nem importa, apenas importa se é par ou ímpar...). Teu objetivo é responder, matematicamente, quantos dos valores dessa matriz serão pares! É isso. Como contar quantos pares existirão? Esse é teu objetivo! ADENDO: Creio que não será permitido criar um algoritmo computacional para "contar" os pares. A ideia aqui é entender o problema e criar uma fórmula para contar esses pares. Entenda o problema.. veja quais as suas características... o que tem de padrões... etc. Imagine que foi uma questão do ENEM ou algum Concurso Público.. Não podemos te dar mais dicas específicas, pois o objetivo é você, primeiramente entender o problema, e posteriormente, buscar tuas soluções para ele. O objetivo é forçar a tua criatividade... é normal ter dificuldades no início... a maioria das soluções que achamos são baseadas em outros problemas semelhantes que já passamos ou a montagem de sub-problemas menores que já conseguimos encontrar uma solução... vai tentando achar algo... uma hora sai. Se tiver dúvidas sobre o entendimento do problema, é só falar... veja: primeiro entenda o problema!! Só a partir daí parte para tentar achar uma solução. Qualquer dúvida é só perguntar. Em relação às ajudas para solucionar, aí acho que no momento está apenas com você. Você precisa criar mecanismo para entender como a matriz vai ficar e uma forma prática de contar quantos pares tem lá dentro. Oh! já dá para supor que "calcular cada um dos 100.000.000 de valores e; verificar e ir contanto um a um quantos são pares" está fora de questão, né? Seria possível, mas a questão aqui simplificar o cálculo... é um cálculo genérico! 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