-
Posts
6.526 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que arfneto postou
-
C++ Imprimir na ordem inversa <SEM VETOR> C/C++
arfneto respondeu ao tópico de Camila Campos em C/C#/C++
Pense assim: você só precisa de uma função que imprime o último número. Depois que imprimir o último o penúltimo será "promovido" a último e a vida segue. A vida recursiva. -
C++ Gerar matriz com valores pré-determinados
arfneto respondeu ao tópico de Geraldo Carvalho em C/C#/C++
Você tem um livro sobre C++? Sua escola assina alguma biblioteca online de referência? Apenas declare o tipo e liste os valores -
30m não é uma distância grande. Se precisa de Gigabit use cat 5E até 100m. Cat 6 é caro e pouco flexível.
-
é como aqueles exercícios bobinhos dos livros de criança: você tem que usar os 7 símbolos e colocar na ordem lá onde estão os pontos, de modo que o programa resultante faça o previsto, inverter a string de entrada.
-
C Como abrir um ficheiro binário e colocar em um vetor dinâmico de estruturas
arfneto respondeu ao tópico de João Vitor Santos Nowisck em C/C#/C++
Acho que você não pensou no programa todo... Se vai ler de um arquivo qualquer pode ler bytes e mostrar o que tem lá dentro, tipo um dump em hexadecimal. Se quer ler algo estruturado com algum conteúdo que faça sentido, que tal antes GRAVAR algo lá e DEPOIS ler de volta? -
Seu programa parece certo. Exceto nesse aspecto "ideológico" que estamos discutindo. Provavelmente o enunciado se baseou na mesma "interpretação" que você. E assim alguns valores vão por certo divergir do que eu falei. Mas o enunciado E os programas de aferição estão errados se for esse o caso. Infelizmente o autor e o site não ofereceram as strings consideradas repetidas para algum caso mais significativo, como o folclórico Mississippi ou o exemplo de 26 'a'., mas você o fez, na verdade De todo modo isso pode claro ser interpretado como você e o site fizeram. Mas ao ler a descrição no próprio enunciado fica claro que o autor se confundiu, porque cita o fato de ser um sistema de arquivos e ter cópias espalhadas pelo disco e ser a sua chance de afinal recuperar algo perdido... Eu citei isso antes. Essa descrição elimina a possibilidade de aceitar 45 sequências para os 26 'a' ou 9 para Mississippi. . . E eu te mostrei exemplos de situações em que isso não é aceito, coisas como o Notepad e o Chrome e o vi, e o fato de que o enunciado fala de um sistema arquivos. Seria ingênuo imaginar que algum sistema de arquivos usasse uma área para uma nova versão de um arquivo que não fosse absolutamente distinta da original. É importante que você tenha isso claro: um sistema de arquivos jamais usaria um pedaço da área de uma versão anterior do arquivo para gerar a nova versão, e eu te expliquei a razão: se o usuário resolver sair sem salvar, por exemplo, o arquivo original pode ter sido corrompido. Se havia alguma ambiguidade no enunciado isso elimina o possível caráter interpretativo. É assim descrito Como trataria sequências dentro delas mesmas para tentar recuperar algo? Isso seria um inferno e não levaria a nada. E é o mesmo caso para o Notepad, o vi, o Firefox. Nenhum deles aceita. E você pensou que se "issi" serve como duplicata em "ississi" então deve aceitar como duplicatas a partir da segunda posição da origem, certo? Imagino que tenha feito isso em seu programa. E foi assim que o argentino autor Pablo Heiber chegou no 1377 a 45 sequências repetidas naquele exemplo de 26 'a'... Sim de fato são 8. Para um editor de texto, para um recuperador de arquivos, ou para qualquer coisa na prática. Um exemplo simples seria no próprio IDE, por exemplo, se você usa isso: no meu ambiente tem um comando, control H. Veja o exemplo: Para que serviria aceitar issi como duplicada se depende de "emprestar"o "i" final da sequência-alvo? Em que cenário isso seria útil? No editor de texto, tipo o vi ou o sublime text, se você pedir para trocar todas as sequências, ele vai dizer ao final quantas trocou. Esse é o número que em geral a gente espera quando fala de sequências repetidas. E ele nunca considera intersecção entre o padrão e uma sequência a ser substituída. "mississippi" passo a passo... Como eu disse, o mais eficiente seria mesmo usar trie e uma pilha para montar as possíveis subs. A justificativa é simples: trie é uma árvore de prefixos, então conforme vai aumentando ela cresce só com o final das palavras. Se usar uma lista ligada ou um vetor de strings vai copiar tudo de novo a cada string. E isso cresce muito. mas muito rápido mesmo. A questão da pilha é a seguinte: a trie é uma árvore com uma letra por nó. E N folhas para cada nó. Nesse caso aqui 64. Quando você vai "descendo" em busca de uma palavra você pode passar por outras. Imagine o caso simples do plural: se você tem verdade e verdades então só sai faltar o 's' na segunda palavra. E aí usando uma pilha --- uma string, um char* --- você vai marcando por onde passa, como faria no papel mesmo. Cada nó que é fim de uma palavra tem uma marca então você resolve com essa técnica: uma pilha de nós. Se usar uma tabela convencional você vai ter - verdade - verdadeiro - verdades Acho que já entendeu. Se usar trie vai ter "verdade", "iro" e "s" apenas... Mas o programa aqui é simples e o orçamento é baixo: a gente escreve nas horas vagas. Depois vou postar uma solução assim com trie porque preciso tirar de algum programa ou adaptar pra ficar mais "didático" digamos. Então como seria o simples para fazer isso? Seguindo a folha de papel Vamos varrer a string da esquerda para a direita mississippi, 11 bytes a maior coisa que pode se duplicar aí é (missi)ssippi porque seria a metade. Veja o exemplo do enunciado, 'say.twice,say.twice' e vai entender porque um valor assim foi colocado para teste. Temos então as sequências missi miss mis mi m que podem ou não estarem duplicadas no arquivo ississippi, 10 bytes Temos mais essas issis issi iss is i que podem ou aparecer duplicadas à direita ainda. Podem estar à esquerda, mas não importa porque se for o caso elas já aparecem na pesquisa... ssissippi, 9 bytes A maior duplicável é "ssis", podia aparecer como o exemplo do enunciado, tipo "ssis,ssis" ssis ssi ss s sissippi, 8 bytes Aqui temos siss sis si s issippi, 7 bytes Aqui temos iss is i ssippi, 6 bytes Aqui temos ssi ss s sippi, 5 bytes si s ippi, 4 bytes ip i ppi, 3 bytes p pi, 2 bytes p i, 1 byte não pode duplicar porque acabou o espaço E agora? => 'mississippi' missi miss mis mi m issis issi iss is i ssis ssi ss s siss sis si s iss is i ssi ss s si s ip i p p Essas são as possíveis 30 sequências, que podem ou não estarem duplicadas no arquivo. O simples agora seria pegar essas 30 ver quantas aparecem ao menos duas vezes no arquivo, colocar em ordem e eliminar as duplicidades. Essa foi a ideia do programa em C++ que o autor postou inicialmente. Seguindo nesse rumo Dessas 30, 12 estão de fato duplicadas no arquivo 'iss' 'is' 'i' 'ssi' 'ss' 's' 'si' 's' 'i' 's' 'i' 'p' Colocando em ordem, o windows tem sort, o unix tem sort, grep, awk, vi... 1 'i' 2 'i' 3 'i' 4 'is' 5 'iss' 6 'p' 7 's' 8 's' 9 's' 10 'si' 11 'ss' 12 'ssi' E eliminando os duplicados 1 'i' 2 'is' 3 'iss' 4 'p' 5 's' 6 'si' 7 'ss' 8 'ssi' E isso você pode confirmar com qualquer editor de texto...
-
isso quer dizer que o mesmo que faz para os clientes deve fazer para os pets E produtos. Defina outra struct para os produtos E escreva funções que executem as tarefas, usando os dados que você já tem.
-
Pois é. Espero que faça mais sentido agora com o que te expliquei acima.
-
Entenda que URI é uma abreviatura de Universidade Regional Integrada, uma escola de Erechim - RS no nosso próprio Brasil. Traduzir do inglês pode bem ser o caso de traduzir de volta algo que foi inicialmente escrito em português do Brasil. Essa plataforma foi projetada por professores e alunos de lá. Que falam português com um sotaque diferente e expressões diferentes do que se usa na minha cidade por exemplo, mas ainda português E esse caso aqui não depende de tradução. Você pode até considerar --- como uma interpretação livre --- se uma sub-string está repetida numa string maior considerando também partes da própria string que está buscando. Afinal é a tal liberdade. Mas entenda que em geral isso não faz sentido. E aqui não faz sentido Veja o bloco de notas do Windows, o Write, o Word, o vi no linux, o grep, o awk, o sed. Eles não vão achar duas vezes a string issi em ississi ou mississippi. Vão achar uma só. Pense nesse comando por exemplo, do vi no Unix/Linux: :1,$s/issi/valor/c Isso diz para o editor substituir todas as ocorrências de "issi" por "valor" no texto inteiro. Mas pedindo confirmação. Esse é o objetivo do 'c' final. Se você estiver editando esse arquivo: ele não via achar a sequência repetida que você diz que existe. Vai achar as duas na linha dois e a primeira na linha 1. E nenhum editor. Nem o Control-F no navegador Chrome ou no Edge. Um match Tem que ser uma coisa que você possa substituir. Entenda a confusão que pode dar essa sua interpretação. Se trocar o 'c' por 'g' de global no comando ele vai trocar todos. Eis o resultado de :1,$s/issi/valor/g Eu sei que você acha que são 4. Mas esse é um editor de texto e é diferente e tal. Mas e se fosse um sistema de arquivos? Acha mesmo que um sistema de arquivos ia usar uma cópia do arquivo a partir de um pedaço do próprio arquivo? NUNCA. Um sistema de arquivos aloca uma outra área para a nova versão do arquivo. E trabalha na versão nova até você salvar o arquivo. Aí libera a área anterior no disco. Imagine se ele usar um pedaço do próprio arquivo na próxima versão e o usuário resolva sair sem salvar... Impossível, porque já corrompeu uma parte do arquivo original. É assim. Não é a minha lógica. Por acaso é o problema 1377 desse serviço. E todos esses outros contextos de que falei. Do próprio enunciado Acha mesmo que ISSI pode estar repetida em MISSISSIPPI depois de ler isso no enunciado para escrever esse programa? Acha que isso teria uma chance de ser uma cópia do arquivo? Não tem. Espero que tenha compreendido. Pode ser como você quer, mas quase nunca é. Parece a minha vida De volta ao seu programa Seu programa está então correto, a menos dessa questão ideológica? funciona para várias strings? Porque usou aquelas áreas enormes de memória estática? Ainda quer que eu veja algo nele?
-
O que eu te mostrei é um exemplo de que é melhor focar nos dados antes. E te mostrei como acessar, declarar e inicializar dados dentro de estruturas e vetores de estruturas. E de como vincular seus dados, como um pet com vários donos e um dono com vários pets. E de uma razão para ANTES de tudo pensar no programa e nos dados, porque menus nada acrescentam. Claro, esse exercício é muito trivial então não tem na verdade qualquer processamento exceto manter os cadastros. Você ainda nada disse sobre os tai produtos... Entendeu isso? adicionado 1 minuto depois exato. Acho que já pode listar os cadastros por exemplo. Ou apagar um pet ou um cliente...
-
Está bem. Então devo concluir que você de fato acha que 4324324 uma sequência de 7 dígitos, tem uma repetição da sequência 4324 de 4 dígitos? Está bem. Outros podem imaginar que para uma coisa se repetir você precisa de um igual comprimento. Uma cópia. Uma repetição. Não adianta traduzir o enunciado. Uma repetição que conta com parte do original? Você olha no resto para ver se ela está repetida. Essa é a noção de repetição. 4324 só poderia se repetir a partir da posição 4. Ou não
-
o que você não entendeu? pergunte algo objetivo pra eu poder ajudar
-
C++ Algoritmo e Linguagem de Programação:Recursividade
arfneto respondeu ao tópico de Alex Jhonson em C/C#/C++
De uma Progressão Aritmética, a tal P.A. @herbertbahia , mas sem usar a fórmula do ensino fundamental, a metade da soma do primeiro com o ultimo dividida pelo comprimento da sequência -
Como eu disse, primeiro os dados. Defina algo que faça sentido. Eu mostrei a diferença. cadastrar os dados não significa nada além de uma série de leituras. Seu enunciado não parece ter nenhum processamento. Nada. Apenas defina os dados e escreva um a um os processos de que precisa.. Você tem um livro de C? Conhece alguma outra linguagem? Já fez alguns programas antes? Que são os produtos que vai listar? Nada falou sobre produtos Você entendeu o programa que te mostrei? Rodou em seu computador? Ficou claro pra você?
-
não adianta: se está encavalado não é uma repetição. entenda isso. ISSISSI não tem a ISSI repetida como você identificou. Não é uma repetição. Em mississippi temos 11 letras, mas pode pensar só no caso mais simples: issi repetido. Seu programa vai dizer que em uma string de 7 posições tem uma de 4 bytes REPETIDA? Sério? Na string "ISSISSI" seu programa acha uma repetição? Na posição 1234 tem uma string "issi" então uma possível repetição não pode começar na posição 4. Entende isso? Repetição não pode contar com a última letra da PRÓPRIA string. Seu programa diria que em ISSISSI que só tem 7 letras tem uma string repetida de 4 letras? É isso que está tentando me dizer desde ontem... EM ISSIISSI sim... issi só pode se repetir a partir de 5. Integralmente. Não pode "emprestar" uma letra Aqui sim: adicionado 20 minutos depois Algo assim serviria, como te mostrei: const char exemplo[6][50] = { "ababcabb", "mississippi", "aaaaaaaaaaaaaaaaaaaaaaaaaa", "012345678,abcdefg.STUVWXYZ", "say.twice,sa,sa.twice", "*" }; const char* final = "*"; // marca de final int i = 1; while (strcmp(exemplo[i], final) != 0) { // ate ler "*" printf("%5d %s\n", i, exemplo[i]); lista_dups(exemplo[i]); i += 1; } Tem razão, basta uma ou outra string com casos particulares. Mas não vai ler 9 sub sequências naquele exemplo e se a correção espera 9 não adianta. Vou escrever um pra ver se o site diz que está errado Seu novo programa passou de um vetor de 64K para mais de 300K de alocação estática. Meu compilador rejeitou vou ter que mudar algo para testar
-
Vou te mostrar um exemplo que digitei em cima de seu programa Veja os dados como podem contar uma história ANTES de escrever o programa: typedef struct { int id; char nome[30]; char telefone[20]; int pet[8]; } Cliente; typedef struct { int id; char nome[30]; char raca[30]; int humano[8]; } Pet; Você tem pets e clientes. Um mínimo de info só pra ter um sentido. os caes tem um vetor para os donos, os donos tem um vetor para os caes. Assim se uma mulher deixa o cão e o marido vem buscar esta coberto tem os dois um cliente pode ter mais de um cão Como usar isso, ANTES de uma p$%%a de um menu Cliente loja1[50]; Pet pet1[50]; uns clientes e pets Como criar uns, ANTES de um printf() infeliz e um scanf() que não tem & uma linha que pula sozinha, nada disso: const Pet Rex = { .id = 1, .nome = "Rex", .raca = "york", .humano = { 1,2 } }; const Pet Toy = { .id = 2, .nome = "Thor", .raca = "Pastor", .humano = { 3 } }; const Cliente Joao1 = { 1, "Jhonny Cash", "999-123-456", { 1 } }; const Cliente June = { .id = 2, .nome = "June Carter", .telefone = "999-123-456", .pet = { 1 } }; const Cliente Will = { .id = 3, .nome = "Willie Nelson", .telefone = "999-123-456", .pet = { 2 } }; Olha só: dois pets e 3 clientes. já dá pra terminar o programa. antes do menu. Note que você pode iniciar os campos direto pelo nome. E nem precisa colocar todos. Ou pode por na ordem como no primeiro. Como colocar essa m#$%a nos vetores pra testar? loja1[0] = Joao1; loja1[1] = June; loja1[2] = Will; pet1[0] = Rex; pet1[1] = Toy; Simples, não? E como acessar um desses caras? printf("Pet: %s id %d id dono: %d\n", Rex.nome, Rex.id, Rex.humano[0]); printf("Cliente: %s F: %s id: %d id pet: %d\n", loja1[0].nome, loja1[0].telefone, loja1[0].id, loja1[0].pet[0] ); Note que assim você até pode saber quem é o dono do Rex, quais os cães do Jhonny e por aí vai. E nem começou o programa ainda. E funciona? Claro. Pet: Rex id 1 id dono: 1 Cliente: Jhonny Cash F: 999-123-456 id: 1 id pet: 1 Teste esse #include <string.h> #include <stdio.h> typedef struct { int id; char nome[30]; char telefone[20]; int pet[8]; } Cliente; typedef struct { int id; char nome[30]; char raca[30]; int humano[8]; } Pet; int main(int argc, char** argv) { Cliente loja1[50]; Pet pet1[50]; const Pet Rex = { .id = 1, .nome = "Rex", .raca = "york", .humano = { 1,2 } }; const Pet Toy = { .id = 2, .nome = "Thor", .raca = "Pastor", .humano = { 3 } }; const Cliente Joao1 = { 1, "Jhonny Cash", "999-123-456", { 1 } }; const Cliente June = { .id = 2, .nome = "June Carter", .telefone = "999-123-456", .pet = { 1 } }; const Cliente Will = { .id = 3, .nome = "Willie Nelson", .telefone = "999-123-456", .pet = { 2 } }; loja1[0] = Joao1; loja1[1] = June; loja1[2] = Will; pet1[0] = Rex; pet1[1] = Toy; printf("Pet: %s id %d id dono: %d\n", Rex.nome, Rex.id, Rex.humano[0]); printf("Cliente: %s F: %s id: %d id pet: %d\n", loja1[0].nome, loja1[0].telefone, loja1[0].id, loja1[0].pet[0] ); return 0; }; // main() Apenas control-c control-v para copiar os caras, digita em cima dos dados e aumenta a base, um ou dois de cada. E faz o programa. Depois escreve um menu, le os dados e tal. Se possível leia o menu do disco porque já vem alinhadinho porque você pode digitar no próprio IDE afinal. E o a opção do menu é o retorno da função que mostra o menu, só com uma letrinha... E não perde tempo
-
Você está declarando ao contrário. Você não declara uma struct com vetores. Declara um vetor com structs. Esse é o objetivo e isso é muito mais fácil. Comece seu programa pelos dados. Sempre. Nunca, mas nunca mesmo por um menu. Não leva a nada. Não há dúvida de que um printf() sai na tela, um scanf() tenta ler algo, um fgts()... Você vai achar que fez algo, mas não fez.
-
Estamos afinal de acordo de issi não é duplicada em mississippi? Use a técnica do sistema. Não tem como dar errado ou a gente já teria visto... int main(int argc, char** argc); ou public static void main(String[] args) em java São sempre vetores de strings. Vou te mostrar uma maneira de construir. Acho que tenho um exemplo que escrevi para alguém... Para esse programa, sem criar de fato o vetor como em C ou C++ ou java: #include <string.h> #include <stdio.h> int main(int argc, char** argv) { const char exemplo[7][50] = { "ababcabb", "mississippi", "aaaaaaaaaaaaaaaaaaaaaaaaaa", "012345678,abcdefg.STUVWXYZ", "say.twice,say.twice", "say.twice,sa,sa.twice", "*" }; const char* final = "*"; // marca de final int i = 0, n = 0; while (strcmp(exemplo[i], final) != 0) { // ate ler "*" printf("%5d [%4d] '%s'\n", 1 + i, strlen(exemplo[i]), exemplo[i]); i = i + 1; // ve o proximo }; // while return 0; }; // main() Mostra 1 [ 8] 'ababcabb' 2 [ 11] 'mississippi' 3 [ 26] 'aaaaaaaaaaaaaaaaaaaaaaaaaa' 4 [ 26] '012345678,abcdefg.STUVWXYZ' 5 [ 19] 'say.twice,say.twice' 6 [ 21] 'say.twice,sa,sa.twice' Depois te mostro como construir um vetor adicionado 5 minutos depois Note que assim também funciona: #include <string.h> #include <stdio.h> int main(int argc, char** argv) { const char exemplo[7][50] = { [4] = "mississippi", [1] = "say.twice,say.twice", }; printf("%5d [%4d] '%s'\n", 1, strlen(exemplo[1]), exemplo[1]); printf("%5d [%4d] '%s'\n", 4, strlen(exemplo[4]), exemplo[4]); return 0; }; // main() Declarando só alguns dos valores, e mesmo fora de ordem 1 [ 19] 'say.twice,say.twice' 4 [ 11] 'mississippi'
-
struct ficha_cliente { char nome[3]; } ficha_cliente; typedef struct ficha_cliente tcliente; struct ficha_pet { int codigo; char nome_pet[3]; }; typedef struct ficha_pet tpet; Então um pet pode ter um nome de ate 3 letras. ok para Rex e Toy ao menos Mas é só isso? E o cliente também? Só 3 letras. E nenhum outro campo?
-
Não que eu tenha entendido, mas ao menos li seu programa. A tabela era apenas para simular a entrada? O que tem dentro?
-
Não devia perder seu tempo criando um menu ou vários, antes do programa estar pronto. Isso não leva a nada e só faz você perder tempo na hora de testar o programa. Pense primeiro nos dados e escreva as partes em torno dos dados.
-
Não acho que vá ter qualquer dificuldade. java é muito similar a C++ e C#. Muito mesmo. Em relação a games acho que o caminho é C++.DirectX, OpenGL, os engines para games, os SDK dos fabricantes de placas de vídeo, a questão óbvia da performance... Tudo isso gira em torno de C++. C++ é a linguagem para games. E para performance e abstração, no geral. Jogos e java tem sentido talvez no caso dos telefones, mas mesmo assim hoje em dia se considera muito coisas como o NDK https://developer.android.com/studio/projects/add-native-code Esses sistemas todos foram escritos em C e C++ afinal... Mas não terá dificuldade.
-
C++ Algoritmo e Linguagem de Programação:Recursividade
arfneto respondeu ao tópico de Alex Jhonson em C/C#/C++
Você não tem um livro? Sua escola não assina uma biblioteca digital para os alunos poderem ler livros texto? Recursividade indica apenas a possibilidade nessas linguagens de uma função chamar a si mesma, Muitos algoritmos, em especial em estruturas de dados, são vistos como muito mais simples usando recursão. Uma progressão é um caso destes, já que ela não tem memória: apenas uma regra para o próximo elemento e um saldo a transportar, então escreva uma função assim -
Acho que não entendeu o lance dos parenteses em azul e vermelho quando eu postei ontem. Você já postou várias sequências distintas tentando acertar o número 9 do enunciado Mas vamos ver em relação às últimas: "issi" não está duplicado em "mississippi" veja a figura que mostrei. A primeira ocorrência está na posição 1 da string e você quer aceitar uma duplicata que começa na posição 4, aproveitando o último "i" de uma sequência para começar a próxima. Elas não podem estar "encavaladas" digamos. Uma de 1-4 e outra de 4-7. Não é uma repetição. Ela só poderia aparecer por exemplo em MISSIISSIPPI, inserindo outro i na posição 5. Como é o caso do exemplo "say.twice,say.twice" do enunciado. Sobre as anteriores, "pp" não está repetida, "is" você havia listado duas vezes. Sequências de 1 byte descritas como é algo folclórico. São sequências de UM byte. Como verificar sequências de UM byte? E se o byte existe vai ter um conteúdo. Se são 64 letras de possíveis 256 combinações você pode considerar 25% de "verificações" à toa. Se você aceitar que sequências de 1 byte tem sentido para se considerar uma repetição serão mesmo 8 repetições em mississippi. Não 9. O seu programa Vou ver a seguir se entendo seu programa. Essa tabela de 64k bytes era para listar as possíveis combinações? Poderia explicar um pouco sua ideia? Não se interessou pelo uso do trie? ficaria bem mais fácil... e o mapa (opcional) que mostrei é para uma tabela de 64 posições, 1024 vezes menos que sua tabela de 65536 bytes mais a noite vou ver seu programa sim. Em relação ao site https://www.udebug.com/URI/1377 nada muda sobre esse programa. Não testei de fato para as outras strings porque tinha abandonado o programa. Isso porque achei muito bobinho e o autor do tópico também acho que se foi há muito. Por outro lado, pode ser que o site entenda as respostas corretas, considerando a interpretação discutível das sequências de um byte e o enunciado como um todo. Vinha escrevendo isso para deixar um exemplo de certas técnicas que aparecem muito na prática, e vou até concluir para acrescentar uma implementação do trie em C com comentários em português nos próximos dias de confinamento conforme eu tenha oportunidade
-
Sem stress algum. Imagino que você tenha digitado meu nome por engano lá então. Porque o do autor do tópico lá não está Ainda não estamos do mesmo lado dessa questão. Eu já escrevi ao menos 3 desses "recuperadores" de arquivo e aí esse enunciado me chamou mais atenção. E eu já tinha dito que o enunciado era "bobinho".E aí tentei até dar sentido ao texto, até ler "sequências a verificar" de 1 byte" e o lance do mississipi. O texto ruim sem conexão com a realidade e só pra parecer sofisticado me atingiu afinal. Aí eu parei. Mas logo em seguida vi sua mensagem e aí fui ver como você tinha visto sentido naquilo. E o resto já se sabe. Mas afinal porque a gente não concorda com o lance do mississippi? Note os parenteses vermelhos e azuis em torno da expressão. Essa é a lógica. E entenda que esta sequência não está duplicada na palavra. Não há lógica que faça isso acontecer. Você tinha errado ontem e errou hoje nesse caso. Não são 9 mas apenas 8 strings duplicadas. Estamos do mesmo lado agora? Entende que aquilo está errado? Essa é a lógica. Um programa correto não vai mostrar 9... Esse é o autor. adicionado 6 minutos depois Sim. É. Entendeu que se usar o programa que eu mostrei ele gera o #include para você por no programa, passando a letra lida na entrada direto para a posição certa na tabela? Entendo. Você entendeu a tabela abaixo? const char ref[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // ARFNeto '20 é a saída daquele programa C, você roda com o nome do .h como argumento e ele gera o arquivo para você incluir Como no exemplo #include "stdio.h" #include "trecho.h" int main() { int l = 0; printf("\n"); for (int i = 0; i < 256; i += 1) if (idx[i] != 0) // tem representacao { printf(" %2d:%3d %c", idx[i], i, i); if (l % 8 == 7) printf("\n"); l += 1; }; // if() printf("\n"); }; Que vai mapear o conteúdo da entrada automaticamente para o universo de 64 bytes do enunciado: 1: 44 , 2: 46 . 3: 48 0 4: 49 1 5: 50 2 6: 51 3 7: 52 4 8: 53 5 9: 54 6 10: 55 7 11: 56 8 12: 57 9 13: 65 A 14: 66 B 15: 67 C 16: 68 D 17: 69 E 18: 70 F 19: 71 G 20: 72 H 21: 73 I 22: 74 J 23: 75 K 24: 76 L 25: 77 M 26: 78 N 27: 79 O 28: 80 P 29: 81 Q 30: 82 R 31: 83 S 32: 84 T 33: 85 U 34: 86 V 35: 87 W 36: 88 X 37: 89 Y 38: 90 Z 39: 97 a 40: 98 b 41: 99 c 42:100 d 43:101 e 44:102 f 45:103 g 46:104 h 47:105 i 48:106 j 49:107 k 50:108 l 51:109 m 52:110 n 53:111 o 54:112 p 55:113 q 56:114 r 57:115 s 58:116 t 59:117 u 60:118 v 61:119 w 62:120 x 63:121 y 64:122 z Ajudei a entender?
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