Ir ao conteúdo

arfneto

Membro Pleno
  • Posts

    6.526
  • Cadastrado em

  • Última visita

Tudo que arfneto postou

  1. Postei duas soluções possíveis para esse problema, e talvez queira ver em
  2. Vi um certo número de soluções on-line para esse problema. Esse site em particular tem um código escrito por Carlos Fleitas que permite animar o problema e testar com vários parâmetros. Nada mal para testar suas funções. Ou as minhas Circulo de Josephus online app E nesse aqui https://www.urionlinejudge.com.br/repository/UOJ_1030.html tem uma explicação bem razoável do problema, em português. E vi mesmo muitas tentativas que resolver usando listas e tal. Vou deixar duas soluções que eu escrevi e acho mais simples Solução 1 int resolve_para(int M, int N, int P); Você passa M N e P e recebe a posição do sobrevivente. Usei a posição partir de zero. Eis a função completa int resolve_para(int M, int N, int P) { int pos = P, vivos = M; int* circulo = (int*)malloc(sizeof(int) * M); printf("M=%d, N=%d, P=%d\n", M, N, P); for (int i = 0; i < M; i += 1) circulo[i] = 1; // vivo while (vivos > 1) { for (int avanco = 0; avanco < N; avanco = circulo[pos]== 1 ? avanco+1 : avanco ) pos = (pos + 1) % M; // conta so os vivos circulo[pos] = 0; // morre aqui o pos vivos = vivos - 1; }; // while for (pos = 0; pos < M; pos += 1) { if (circulo[pos] == 1 ) { // retorna o sobrevivente ou -1 free(circulo); // apaga o vetor return pos; // comeca de zero }; } // for }; // resolve_para() Como vê, dá pra resolver com uma única função e uma única estrutura de dados: o vetor Solução 2 int resolve_para(int M, int N, int P, int vivos, int* circulo) É a mesma coisa. Minha ideia aqui era que nada muda exceto para o infeliz que morreu a cada rodada. Então basta rodar uma vez e se tem mais de um vivo chamar a função de novo com a nova posição e um cara a menos. Só que precisa passar o vetor com M caras preenchido com 1 para simplificar a recursão int resolve_para(int M, int N, int P, int vivos, int* circulo) { int pos = P; if (vivos < 2) { for (pos = 0; pos < M; pos = pos + 1) if (circulo[pos] == 1) break; return pos; } for (int avanco = 0; avanco < N; avanco = circulo[pos] == 1 ? avanco + 1 : avanco) pos = (pos + 1) % M; circulo[pos] = 0; // morre aqui o pos resolve_para(M, N, pos, vivos - 1, circulo); }; // resolve_para() Apenas 10 linhas. Se precisar posso postar uma explicação de porque as duas funcionam. Estou perdendo a paciência com esse editor do forum : demora mais tempo para formatar o texto do que para escrever uma solução, às vezes... Procurei escrever sem grandes invenções e usando nomes óbvios ou que já estavam no enunciado. Espero que ajude a entender porque eu disse que aquele caminho com as listas era uma ideia ruim
  3. Eu, como muita gente, não acho boa ideia escrever aplicações para console e compilar como aplicações para Windows e usar o loop de mensagens. Se vai usar isso porque não fazer o simples e escrever uma aplicação comum para windows? E aí pode usar todo o suporte da API e escolher fontes e tratar o mouse e menus e teclas aceleradoras e tal, tudo de graça porque assim é uma aplicação para Windows. Entendo a ideia de @Flávio Pedroza mas acho que é melhor tratar essas aplicações de console como tal. E se quer usar algo mais sofisticado ir na direção que a própria Microsoft foi em 2016, desenvolvendo um novo ambiente para isso com a "nova console do Windows". Veja o blog disso que eu já postei o endereço aqui também... Minha opinião apenas
  4. Acho que se consegue ler a maioria das teclas já podia parar por aí. Isso é um inferno, como já te disse --- console, windows, cursor, cores, teclado tudo isso --- e acho que sempre que possível é bom ficar longe. E se não vai ficar longe use as ferramentas modernas, como já te falei e postei referências aqui. Em especial usar uma versão recente de windows 10, usar o Terminal do Windows que tem aceleração gráfica e Unicode de graça e nunca usar a console de algum IDE para rodar esse tipo de programa. Se está usando o convencional, veja em que modo programou a console com GetConsoleMode() e SetConsoleMode() e se está habilitado ENABLE_VIRTUAL_TERMINAL_PROCESSING e ENABLE_VIRTUAL_TERMINAL_INPUT e talvez outras coisas dessas. Leia a documentação sobre aplicações para console da Microsoft, cujo link eu já passei também. E se prepare para muitos testes e surpresas.
  5. E aí? sucesso com o código? Como eu disse em outro tópico sobre o mesmo problema, lista não é nem de longe uma boa estrutura para esse problema. De qualquer forma se você insistir nisso uma declaração como a que segue resolveria seu problema. O nsu é um número de sequência para os elementos da lista para ajudar a testar. Se some algum igual fica fácil saber qual foi e também fica fácil saber em que ordem insere os iguais. No seu caso acho que não tem nem essa possibilidade de duplicatas. Mas eu precisava de algo mais genérico. Obviamente cada lista tem uma variável elementos que marca quantos tem a cada momento. Com essa implementação pode ter várias listas no mesmo programa, independentes. Precisa de um exemplo? #pragma once #include <stdio.h> #include <stdlib.h> struct item { int valor; // o item em si int serial; // o numero unico na lista struct item* anterior; struct item* proximo; }; typedef struct item Item; struct lista { int elementos; // o contador int nsu; // numero sequencial unico char* nome; // nome da lista Item* origem; // endereço de inicio }; typedef struct lista Lista; Mas não precisa disso. Dá pra resolver em uma função só eu creio. adicionado 2 minutos depois
  6. Acho que sabe, mas de todo modo não é um circo mas sim um círculo, redondo onde ficavam os caras, como no seu desenho que postou em outro tópico. Como eu disse antes, não é uma boa ideia usar listas para isso porque listas não dão acesso imediato por posição, que é exatamente o que você quer aqui. É possível mas vai trabalhar a toa. Use um array, vetor. Tem exatamente o comportamento de que você precisa. E veja se o moderador não pode unificar esses tópicos
  7. ? Tem os headers? Testou? Não deve fazer diferença. Esse compilador é praticamente o gcc do Linux eu acho. Que versão está usando? De onde conseguiu? adicionado 4 minutos depois Ou por outro lado tentou o download da ICU no site que falei? Deve usar um desses caminhos.
  8. arfneto

    C salto com lista circular

    Vi isso no outro tópico, com o usuário usando listas ligadas. Mas tal usuário não postou o enunciado e agora fica bem mais claro. Lógico que é possível usar listas, mas partindo do enunciado não parece ser vantagem alguma. Eu usaria um simples vetor de estruturas de tamanho M onde os dados seriam um mínimo: o status e a identificação, tipo o nome ou o número dos caras. A partir da posição P no vetor de tamanho M e no próprio estilo Highlander --- "no final só pode haver um" --- você faz o salto considerando o comprimento N e fuzila o infeliz que está na posição. Marca o que se foi e continua saltando até ter apenas um vivo E pronto. Claro que o salto de comprimento N seria entre os vivos nas M células, considerando algo como o loop abaixo. Não é complexo. Não precisa de uma lista circular. Nesse loop for (int X = 0 ;; X= (X + 1 ) % M) { // X vai ser 0,1,2,3...(M-1), 0,1... } a matemática faz exatamente isso com X. E o ;; quer dizer que o for não termina e você sai com break quando só tiver um vivo... Highlander é um filme sobre guerreiros imortais que vivam até duelos entre eles ao final dos quais só restava um...
  9. Você vai gravar e depois você vai ler, então defina algo e use. Como está declarado isso? Podia postar o código ou ao menos as declarações, certo?
  10. Não escreveu nada ainda? Apenas crie as classes, defina uma ordem padrão para o construtor e crie um outro que aceita algum tipo de dimensionamento, como um vetor de int com as dimensoes. Como o enunciado aparentemente não diz o que fazer com os operadores, defina você algo simples, como só permitir operar com instâncias da mesma ordem e fazer coisas simples, como o óbvio de somar, multiplicar e tal, aplicando a todos os elementos da classe, e talvez algo como somar uma constante e aí você propaga para todos elementos. Matriz M23(2,3); Matriz M23B(2,3); Vetor ArrayCom100(100), ArrayCentenario(100; Por exemplo criaria duas matrizes 2x3 e dois vetores de 100 posições, e você definiria os operadores como pedido de modo que funcionasse o esperado: Matriz Outra = M23 + M23B; Vetor Cem = ArrayCom100 + ArrayCentenario; Postei aqui outro dia um programa com testes e tudo que redefinia uns 10 operadores, usando classes de conjunto para ficar mais fácil. Pesquise aqui e deve achar o programa. Não sei agora o tópico
  11. É uma decisão muito pessoal, claro. Mas se gosta da atividade penso que devia insistir mais. Acho que não teve sorte com suas escolhas, eu acho: nem o curso de C++ e C nem os vídeos do Youtube. Se quiser posso procurar por algo que eu ache recomendável, afinal aqui é um forum de palpites mesmo. Quanto a começar a ir atrás de livros, preciso perguntar de novo: você nem tentou acessar a tal biblioteca virtual de sua escola? Aquelas referências que te passei tirei de seu próprio texto. Não são recomendações minhas. Sequer conheço esses livros ou autores. Terminou seu programa afinal? Ainda precisa de ajuda?
  12. Tem duas dificuldades em escrever essas coisas: uma é que as listas não são por definição posicionais. Para isso se usam outras estruturas, como vetores. Então para ter acesso ao n-ésimo elemento de uma lista é preciso implementar suporte à essa nova função outra é que ao apagar cada elemento a ordem muda porque cada elemento só conhece a si e aos vizinhos Uma solução fácil seria pegar a função que lista os elementos e a que apaga e criar uma terceira tipo int apaga_de_n_em_n( Lista** lista, int inicial, int n ); E aí apagar um cara a cada 'n' a partir do 'inicial' como precisa... Em seu exemplo, quando fala em começar por 1 fala da posição 1 ou do número 1? Sua lista pode ter duplicidade? Como funcionaria nesse caso? É preciso formalizar essas definições. Sua função que remove um elemento remove por valor ou por posição?
  13. Já escrevi sobre isso aqui tempos atrás. E acho que não mudou nada. Eu acho que não vale a pena perder tempo com isso se tiver alternativa. Isso é um pesadelo para programar. Sério. Se ninguém está pagando para você fazer isso ou de dando uma nota por fazer exatamente isso sugiro deixar pra lá. Você precisa usar Unicode e não ASCII para os caracteres. E manipular isso usando as funções Unicode e não as que está acostumado a usar. Como funciona? Tem um cenário que é gravar isso, se chamada encoding se for usar arquivos texto Tem um outro que é mostrar isso na tela tem um outro que é imprimir isso tem um outro pior ainda que é transmitir isso de alguma forma para outros sistemas e ler desses outros sistemas... ASCII v Unicode Veja a tabela ASCII em http://asciitable.com pequenina. Numa época eu sabia quase todos de cabeça, e os equivalentes EBCDIC que era outra codificação. Mas o mundo mudou Unicode por outro lado vai bem longe. Na versão 12.1 (2019) Unicode conta com mais de 137.000 caracteres cobrindo mais de 150 linguagens. 1062 caracteres formam o MES-2, MultiLingual European Character Set 2 e é um conjunto razoável que inclui caracteres latinos, gregos e cirílicos e pode servir para o que você quer. Veja em https://en.wikipedia.org/wiki/Unicode#Standardized_subsets por exemplo. Unicode é descrito em https://home.unicode.org/basic-info/overview/ e um banner no site já diz para que serve Ambicioso, não? Na prática Por exemplo, uma biblioteca chama ICU que acho que foi criada inicialmente pela IBM suporta Unicode em várias linguagens, e sim, inclui C e C++ e java. Então se você quer oferecer isso em seus programas pode usar essas funções para manipular texto em seu programa. Só essas. ICU tem um site claro. Veja em http://site.icu-project.org/home No windows por exemplo você tem que se preocupar com muitas coisas: char usa um byte, mas unicode é um formato multibyte e pode usar até 4. Então não pode usar printf() ou scanf() ou strcpy() ou strcmp() em suas versões convencionais mas precisa encontrar suas irmãs no mundo unicode. E os novos tipos, como utf-16 e utf-32 para guardar essas novas letrinhas. Tem uma biblioteca Windows também, diferente da ICU. Mas funciona? Sim, claro. Tem que usar os tipos certos, as funções certas em cada ambiente, e se preparar para algumas surpresas. Acho que eu postei um programa em C aqui que lia e gravava Unicode em C mas tem muitos exemplos online melhores que o meu certamente. Mas pode pesquisar aqui no forum pelo que eu postei. Não me lembro do tópico e não dá pra eu procurar agora. E no Windows em C C# ou C++? Bem, veja lá onde tem tudo sobre Windows e terá a documentação e os tipos e funções que deve usar com Unicode, ou ao menos uma parte pequena dos caracteres... Começa por isso #define _UNICODE #include <tchar.h> #include <wchar.h> onde estão as funções novas. A correspondente de printf() por exemplo, direto da documentação int printf( const char *format [, argument]... ); int _printf_l( const char *format, locale_t locale [, argument]... ); int wprintf( const wchar_t *format [, argument]... ); int _wprintf_l( const wchar_t *format, locale_t locale [, argument]... ); É muito chato. E já foi bem resolvido em outras plataformas, então pode ser mais fácil usar o navegador e javascript por exemplo. Porque os caras que mantêm os navegadores e HTML tem claro que se preocupar muito com todos os possíveis idiomas em uso por quem abre ou escreve um site afinal. adicionado 23 minutos depois Mais uma nota: A console do Windows depende de uma recurso muito chato, codepages para escolher conjuntos de caracteres e é uma coisa do passado e é cheia de problemas e incompatibilidades. Fuja disso também e evite qualquer versão de Windows que não seja Windows 10 posterior a edicão de aniversário. Poruqe o suporte é muito melhor a Unicode Rode seu programa no novo Terminal do Windows, que usa aceleração da GPU e é compatível com Unicode. Você pode baixar da loja do Windows, claro. E esqueça a console.
  14. É mais simples porque nesse caso você vai usar os campos como números, para calcular os dígitos verificadores e ver se o CPF digitado é válido afinal. Se fosse tudo string isso ficaria um pouco diferente.
  15. Lendo o programa de exemplo agora acho que vai entender. Ou pergunte de novo e te mostro no programa onde usa isso
  16. Se n for 1 você retorna, mostrando os dois maiores. Se não for você atualiza os índices e chama a função de novo. Só isso.
  17. Você rodou isso em sua máquina? Entendeu o que eu queria dizer sobre scanf() ser "ativa"? Sério, se não rodou esse programa que te mostrei E não entendeu isso não continue. Insista até entender. Pergunte de novo. Esse programa exemplo mostra o %c no final do scanf() que vai consumir --- scan --- tudo que tiver até o enter e vai colocar algo na variável char fim; que não serve pra nada exceto isso: garantia. Assim o próximo scanf() começa de onde você imaginava. Eu gostaria muito de ter lido um programa desses quando comecei a usar essa função. Não vejo isso na documentação ou nos livros-texto. Parece que os autores não enfatizam de modo algum essa parada de scan do scanf()... Sobre funções Funçoes são blocos de código com um nome. Mas com algo mais: você pode passar argumentos e retornar um resultado, então pode reutilizar indefinidamente. A diferença entre a função printf() e uma função x() que você escreveu é só essa: você escreveu a segunda e só está usando a primeira, que alguém escreveu e deixou em algum lugar onde você pode usar. Sobre o CPF Vou te mostrar um exemplo sobre o CPF sem usar funções, para você poder testar com mais facilidade. Na prática você criaria uma função para verificar os dígitos verificadores e a formação e tal. Resultado da execucão do programa de exemplo para o CPF 123.456.789-09, válido CPF: 123.456.789-09 scanf() leu 7 itens scanf() valor1 = 123 scanf() valor2 = 456 scanf() valor3 = 789 scanf() valor4 = 09 scanf() delimitador 1 = [.] scanf() delimitador 2 = [.] scanf() delimitador 3 = [-] CPF lido 123.456.789-09 Digito a Digito: 1 2 3 4 5 6 7 8 9 0 9 DV calculados: 0 9 CPF valido Esse programa lê um CPF usando a máscara de que falei --- %3d%c%3d%c%3d%c%2d --- com 4 grupos de números e 3 delimitadores. Se espera que venha algo tipo 1.2.3-04 que pode até ser válido. No retorno de scanf() ela deve ter lido 4+3=7 valores, claro. E você pode testar cada um. Teste o programa mudando os dígitos finais e o CPF e vai entender o resto Eis o programa #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "string.h" int main(int argc, char** argv) { int valor1, valor2, valor3, valor4; // os numeros char d1, d2, d3; // os delimitadores int n; int soma, i; // para calculo dos DV 123.456.789-09 OK printf("Entre com o CPF no formato 012.345.678-90 e Tecle ENTER ao terminar\n"); printf("\nCPF: "); n = scanf( "%3d%c%3d%c%3d%c%2d", &valor1, &d1, &valor2, &d2, &valor3, &d3, &valor4 ); // o que leu? printf("\nscanf() leu %d itens\n", n); // os valores printf("scanf() valor1 = %03d\n", valor1); printf("scanf() valor2 = %03d\n", valor2); printf("scanf() valor3 = %03d\n", valor3); printf("scanf() valor4 = %02d\n", valor4); // os delimitadores printf("scanf() delimitador 1 = [%c]\n", d1); printf("scanf() delimitador 2 = [%c]\n", d2); printf("scanf() delimitador 3 = [%c]\n", d3); // mostra os valores afinal printf("\nCPF lido %03d.%03d.%03d-%02d\n", valor1, valor2, valor3, valor4); // aqui vão os digitos 1 a 1 para calcular os DV int digito[11] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; digito[0] = valor1 / 100; digito[1] = (valor1 % 100) / 10; digito[2] = valor1 % 10; digito[3] = valor2 / 100; digito[4] = (valor2 % 100) / 10; digito[5] = valor2 % 10; digito[6] = valor3 / 100; digito[7] = (valor3 % 100) / 10; digito[8] = valor3 % 10; digito[ 9] = valor4 / 10; digito[10] = valor4 % 10; printf("Digito a Digito: "); for (i = 0; i < 11; i = i + 1) { printf("%d ", digito[i]); } printf("\n"); /////////////////////////////////////////////////////////// DV 1 // o primeiro digito verificador, modulo 11 dos 9 soma = 0; for (i = 0; i < 9; i = i + 1) soma = soma + digito[i] * (10-i); // 10..2 // essa e a conta que da nome ao processo soma = soma % 11; if (soma > 1) digito[9] = 11 - soma; else digito[9] = 0; /////////////////////////////////////////////////////////// DV 2 // o segundo DV, modulo 11 dos 10 soma = 0; for (i = 0; i < 10; i = i + 1) soma = soma + digito[i] * (11 - i); // 11..2 // essa e a conta que da nome ao processo soma = soma % 11; if (soma > 1) digito[10] = 11 - soma; else digito[10] = 0; printf("\nDV calculados: %d %d\n", digito[9], digito[10]); // compara os digitos int dv1ok = digito[9] == (valor4 / 10); int dv2ok = digito[10] == (valor4 % 10); if (dv1ok && dv2ok) { printf("CPF valido\n"); } else { if (!dv1ok) printf("DV1 'devia ser %d. Lido %d\n", digito[9], (valor4 / 10)); if (!dv2ok) printf("DV2 'devia ser %d. Lido %d\n", digito[10], (valor4 % 10)); printf("CPF INVALIDO\n"); }; // if } // main Escrevi de maneira bem linear e até redundante. Espero que dê para entender. Linear: lê os valores. Confirma o formato. Calcula os dígitos verificadores Compara Mostra o resultado Game Over Como testar um CPF? Simples demais. Primeiro o formato, com if. Os valores devem ser 3 números entre 1 e 999 e um numero entre 00 e 99 que são os tais dígitos verificadores. E os delimitadores? Se espera que sejam ponto, ponto e traço nessa ordem. E são d1, d2 e d3 no programa de exemplo. Veja lá. Só isso. Se falhar algo você rejeita o CPF como mal formado. E os DV? Simples mas um pouco chato: a receita federal usa uma norma de décadas atrás, conhecida como módulo 11 e acho mais fácil ler o código que eu explicar a toa. Se não entender, pergunte. Mas é bem simples. O que fazer então? Se o número está bem formado, com os números certinhos e os delimitadores esperados, você confere os dois dígitos verificadores e se bater um e outro está ok: tem um CPF válido e confirmado. Espero que ajude a entender. Continue perguntando. adicionado 8 minutos depois Usando scanf() você tem 4 números e pronto. Na hora de imprimir use %03d para cada grupo e o printf() coloca os zeros a esquerda se for o caso... e %02d para os dígitos verificadores porque podem ser até 00. Vai ver isso no programa que eu escrevi. Teste. Tem um milhão de maneiras de fazer isso. Essa que te mostrei é bem clássica para escrever em C. Usar string seria outra. Mas na hora de calcular os DV essa técnica que eu usei é mais simples. Para 100% de compatibilidade: acho que a receita federal diz que os 9 dígitos não podem ser iguais. Não tenho certeza. Minha lembrança disso vem de épocas bem distantes . O primeiro dígito de meu CPF é aquele que preocupa você: zero mesmo. Então teria que rejeitar um CPF se os 3 grupos tivessem o mesmo valor, tipo 111 ou 222. Deve estar em uma instrução normativa da SRF imagino. Mas já está bem para o forum assim.
  18. Acho que entendi o que quer fazer, apesar de você não ter feito o mais simples e explicado em português. Você quer: ler uma lista dos parentes mais próximos ler uma lista de quem veio pra festa e mostrar quem veio exceto os parentes mais próximos, que de repente viriam de qualquer jeito mesmo só porque é de graça É isso? Está um pouco longe de funcionar. Um problema conceitual está aqui void festa() não retorna nada. Isso é o que significa void. Se você queria retornar um char[20] que seria o caso de nomes[j] que é global devia ter declarado char* festa(); Mas não é uma boa ideia. Variáveis assim globais são uma m$%Da sempre. Sugiro declarar vetores char quem_veio[10[20]; char parentes[10][20]; E uma função tipo lista_nao_parentes( char todos[][], char parentes[][]); Que faz o que você precisa. Entende a diferença? Claro, supondo que EU tenha entendido o que você quer fazer. Nessa função você pega o vetor dos caras que vieram, todos, e compara com os caras que estão em parentes e cada um que não está lá você mostra. Bem mais simples e pode testar com vários conjuntos de todos e de parentes. Basta mudar o nome. Por essa razão já tem um exemplo do porque não usar essas variáveis globais se pode evitar.
  19. Meu computador diz que tem algo errado com o pdf. Pode usar o icone <> aqui na tela mesmo e colar seu programa na janela que vai abrir. Ou usar um zip que assim fica fácil de extrair em windows ou linux. Ou mesmo um .txt anexado ao post acho que o forum aceita. adicionado 6 minutos depois Minha sugestão de sempre para meu pessoal e aqui de novo: ao implementar qualquer estrutura de dados tipo container: primeiro implementa a função que lista. Lista mesmo, um por um na console ou numa caixa de texto sem mais. E chama com a lista vazia depois a função que insere para colocar um usa a função que lista ainda quando só tem um insere outro a função que lista quando tem dois a função que apaga e a função que lista, uma depois da outra até ficar vazio insere dois insere no fim e lista insere no meio e lista insere no inicio Assim cobre as situações comuns com alguma segurança e testando a cada passo
  20. Entendo. Se tivesse uma rotina pra listar ia chamar como? Posta o resto do código e mais tarde eu dou uma olhada e rodo ele aqui.
  21. A maneira tradicional de fazer isso é chamar CreateProcess() com o nome do programa e umas estruturas. Vai usar um programa para desktop? Se for uma aplicação para console talvez tenha algo a mais para fazer. Tem uma descrição na Biblia do Windows, claro em https://docs.microsoft.com/pt-br/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa
  22. Agora estamos nos comunicando... Em C++ podia ser muito mais fácil ou podia ser igualzinho. Então vamos ficar com o lado igualzinho. Fica difícil sem ler o código todo e não li ainda. Imagino que tenha postado isso. Pergunto: EstaVazia() funciona? Listar() esta retornando o que? ou dá erro? Está certo de que devia somar também no return? Sobre "algumas coisa é como se fosse falar grego" se você não der exemplos vai ficar grego para mim porque não vou saber de qual coisa está falando adicionado 6 minutos depois Vi que postou um arquivo no formato rar com o código. Sabe que pode postar o código aqui certo? Se vai postar em algum formato comprimido sugiro usar zip ou pdf. Nesse caso o sistema de quem lê já tem suporte nativo para ler esse troço. Eu sei que eu posso instalar algo e que pode ser grátis e tal, mas não ajuda nada. Eu tenho que por exemplo abrir a loja instalar um programa de que não preciso, fazer um download, extrair seu código e carregar num editor...
  23. O que não entendeu? Explique e podemos ajudar. Está usando C ou C++ ? adicionado 1 minuto depois "esse jeito" seria como marcar num papel o total de itens e o endereço de início da lista e ir passando para cada função que manipula a lista.
  24. Então você pode implementar essa relação de "conhecidos"como achar melhor? Como pretende fazer? um menu? E o que são os vetores i e j? Quanto melhor você qualificar as coisas fica mais fácil para você escrever a solução e mesmo para conseguir uma ajuda objetiva de alguém. Mas qual a dificuldade em relação ao nome do tópico? Porque apagaram? Eu na verdade não sei como funciona. Vou ver lá

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!