Ir ao conteúdo
  • Cadastre-se

Emumaniaco

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

Reputação

1
  1. Muito obrigado @arfneto. Desculpe a demora em responder. Vou analisar tudo que postou e se tiver dúvidas para montar o código entro em contato de novo por aqui para depois postar no tópico para ajudar outros "leigos" como eu no assunto, Fui.
  2. Se você compilar o primeiro código, com os dados que listados, será gerado um arquivo (combinacao.csv) com 100.000 linhas. Eu estou tentando implementar no código uma forma de quebrar esse arquivo em pedaços de 25000 linhas (combinacao1.csv, combinacao2.csv, ..., combinacao4.csv). Coisa que estou batendo a cabeça para entender, encontrar e adaptar ao meu código por causa do meu nível de conhecimento (quase nulo) na linguagem. Erro meu. Na verdade o termo seria gerador de permutações. O exemplo que usei foi de um modelo antigo que estava usando para gerar números para loteria. A string pode ser qualquer coisa. Pessoas, cidades, países, etc. Nesse caso específico, seria um arquivo com as permutações viáveis para um jogo de loteria de 00 a 50 números. Como falei acima, é um conjunto viável (pelo meu ponto de vista) de permutações para um jogo de loteria de 00 a 50 números.
  3. Na verdade é um exercício de Análise Combinatória - AC. Mas estava tentando gerar uma calculadora de análise combinatória que vi em visual basic para ser usada no excel (segue arquivo abaixo). Tentei uma aproximação diferente para poder retirar o "lixo" (combinações indesejadas) e me deparei com o seguinte problema: Se você fizer a AC de um número muito grande (milhões de combinações), o excel não vai suportar. Por isso pensei em fazer essa "Calculadora de AC" utilizando colunas dentro de uma matriz com a linguagem de programação que comecei a aprender. Assim poderia fazer a AC não só de números, mas de qualquer coisa que quisesse ('char', 'int' ou 'string' como é o caso). A opção que achei foi separar os resultados em vários arquivos csv ou txt. Tentei fazer com vetores bidimensionais, mas toda vez que compilava, entrava em loop infinito (ainda estou apanhando do parâmetro 'for'). Por isso parti para string. Meu primeiro código (exercício de soma de vetores) foi assim: #include <iostream> #include <fstream> int main() { std::ofstream meuarquivo("combinacaosoma.csv"); int x0, s0; int n=10; int total=0; int soma00a10[10][10] = {{1,1,1,0,0,1,1,0,0,0}, {1,1,1,0,0,1,0,1,0,0}, {1,1,1,0,0,1,0,0,1,0}, {1,1,1,0,0,1,0,0,0,1}, {1,1,1,0,0,0,1,1,0,0}, {1,1,1,0,0,0,1,0,1,0}, {1,1,1,0,0,0,1,0,0,1}, {1,1,1,0,0,0,0,1,1,0}, {1,1,1,0,0,0,0,1,0,1}, {1,1,1,0,0,0,0,0,1,1}}; int soma11a20[10][10] = {{1,1,1,0,0,1,1,0,0,0}, {1,1,1,0,0,1,0,1,0,0}, {1,1,1,0,0,1,0,0,1,0}, {1,1,1,0,0,1,0,0,0,1}, {1,1,1,0,0,0,1,1,0,0}, {1,1,1,0,0,0,1,0,1,0}, {1,1,1,0,0,0,1,0,0,1}, {1,1,1,0,0,0,0,1,1,0}, {1,1,1,0,0,0,0,1,0,1}, {1,1,1,0,0,0,0,0,1,1}}; int soma21a30[10][10] = {{1,1,1,0,0,1,1,0,0,0}, {1,1,1,0,0,1,0,1,0,0}, {1,1,1,0,0,1,0,0,1,0}, {1,1,1,0,0,1,0,0,0,1}, {1,1,1,0,0,0,1,1,0,0}, {1,1,1,0,0,0,1,0,1,0}, {1,1,1,0,0,0,1,0,0,1}, {1,1,1,0,0,0,0,1,1,0}, {1,1,1,0,0,0,0,1,0,1}, {1,1,1,0,0,0,0,0,1,1}}; int soma31a40[10][10] = {{1,1,1,0,0,1,1,0,0,0}, {1,1,1,0,0,1,0,1,0,0}, {1,1,1,0,0,1,0,0,1,0}, {1,1,1,0,0,1,0,0,0,1}, {1,1,1,0,0,0,1,1,0,0}, {1,1,1,0,0,0,1,0,1,0}, {1,1,1,0,0,0,1,0,0,1}, {1,1,1,0,0,0,0,1,1,0}, {1,1,1,0,0,0,0,1,0,1}, {1,1,1,0,0,0,0,0,1,1}}; int soma41a50[10][10] = {{1,1,1,0,0,1,1,0,0,0}, {1,1,1,0,0,1,0,1,0,0}, {1,1,1,0,0,1,0,0,1,0}, {1,1,1,0,0,1,0,0,0,1}, {1,1,1,0,0,0,1,1,0,0}, {1,1,1,0,0,0,1,0,1,0}, {1,1,1,0,0,0,1,0,0,1}, {1,1,1,0,0,0,0,1,1,0}, {1,1,1,0,0,0,0,1,0,1}, {1,1,1,0,0,0,0,0,1,1}}; int somatotal[10][10]; for(x0=0 ; x0<n ; x0++) { for(s0=0 ; s0<n ; s0++) { somatotal[x0][s0] = soma00a10[x0][s0] + soma11a20[x0][s0] + soma21a30[x0][s0] + soma31a40[x0][s0] + soma41a50[x0][s0]; } } for(x0=0 ; x0<n ; x0++) { for(s0=0 ; s0<n ; s0++) { meuarquivo << somatotal[x0][s0] << ","; total++; } meuarquivo << std::endl; } meuarquivo.close(); std::cout << total << std::endl; return 0; } A distribuição que eu queria e consegui foi essa: Só me falta agora implementar a quebra de arquivos para fechar esse exercício. Espero ter explicado. Fui. gerador de combinacao e permutacao (com opcoes).zip
  4. Como eu disse, estou começando a aprender. Tentei fazer com 'int', mas não consegui fazer a distribuição funcionar. Estou batendo cabeça por dias com coisas que, com certeza, vcs passam o olho e veem a resolução na hora. Exatamente o que estou dizendo. o conceito eu até entendo. mas os parâmetros do código me fogem completamente. De qualquer forma, obrigado. Fui.
  5. como o colega citou acima, tem o princípios e práticas de programação com c++ (bjarne stroustrup), que é bem completo, mas o autor supõe que você já tem um grau de conhecimento intermediário na linguagem. Fica complicado em muitas partes. Tem também como programar em c++ (paul deitel e harvey deitel) que é "mais melhor de bom" para quem tá iniciando, mas se você não tiver acesso a uma biblioteca de livros de informática, o preço fica proibitivo. Estou procurando também o c++ para leigos (stephen r. davis) aparecer em algum sebo da vida para comprar, pois me falaram que para quem está começando é muito bom. Fui.
  6. Bom dia. Estou aprendendo c++ na cara e na coragem através de cursos no youtube e livros sobre o assunto e estou começando a fazer meus primeiros programas. Fiz um programa que lista 5 vetores e os distribui em um arranjo que no final me dá um arquivo com 100 mil combinações. Fiquei pensando se seria possível quebrar esse arquivo em 10 partes com 10 mil combinações em cada, mas não achei nenhuma referência dessa situação em lugar nenhum. O resultado final seria uma lista de arquivos (combinacao1.csv, combinacao2.csv, ..., combinacao10.csv) Segue o código abaixo: #include <iostream> #include <fstream> int main() { std::ofstream meuarquivo("combinacao.csv"); int v0, v1, v2, v3, v4; int n=10; int total=0; std::string vetor00a10[10] = {"1,2,3,6,7", "1,2,3,6,8", "1,2,3,6,9", "1,2,3,6,10", "1,2,3,7,8", "1,2,3,7,9", "1,2,3,7,10", "1,2,3,8,9", "1,2,3,8,10", "1,2,3,9,10"}; std::string vetor11a20[10] = {"11,12,13,16,17", "11,12,13,16,18", "11,12,13,16,19", "11,12,13,16,20", "11,12,13,17,18", "11,12,13,17,19", "11,12,13,17,20", "11,12,13,18,19", "11,12,13,18,20", "11,12,13,19,20"}; std::string vetor21a30[10] = {"21,22,23,26,27", "21,22,23,26,28", "21,22,23,26,29", "21,22,23,26,30", "21,22,23,27,28", "21,22,23,27,29", "21,22,23,27,30", "21,22,23,28,29", "21,22,23,28,30", "21,22,23,29,30"}; std::string vetor31a40[10] = {"31,32,33,36,37", "31,32,33,36,38", "31,32,33,36,39", "31,32,33,36,40", "31,32,33,37,38", "31,32,33,37,39", "31,32,33,37,40", "31,32,33,38,39", "31,32,33,38,40", "31,32,33,39,40"}; std::string vetor41a50[10] = {"41,42,43,46,47", "41,42,43,46,48", "41,42,43,46,49", "41,42,43,46,50", "41,42,43,47,48", "41,42,43,47,49", "41,42,43,47,50", "41,42,43,48,49", "41,42,43,48,50", "41,42,43,49,50"}; for (v0=0; v0<n; v0++) { for (v1=0; v1<n; v1++) { for (v2=0; v2<n; v2++) { for (v3=0; v3<n; v3++) { for (v4=0; v4<n; v4++) { meuarquivo << vetor00a10[v0] << "," << vetor11a20[v1] << "," << vetor21a30[v2] << "," << vetor31a40[v3] << "," << vetor41a50[v4] << std::endl; total++ // Contador } } } } } meuarquivo.close(); std::cout << total << std::endl; return 0; } Desde já, obrigado. Fui.

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...