Ir para conteúdo
Fórum Script Brasil

vangodp

Membros
  • Total de itens

    884
  • Registro em

  • Última visita

Tudo que vangodp postou

  1. O interessante seria você usar tilemaps, assim você pode fazer uma espécie de editor de mapas, se quiser entender olhe essa imagem: é pegar a imagem da esquerda(tileset) e gerar o mapa da direita aplicando a técnica de tilemaps. Como você pode ver o tile set não é mais que uma imagem na qual você copia certas partes no seu mapa. Eu não uso sdl, acho essa lib bem enrolada, prefiro SFML, se quiser ajuda posso lhe passar algumas dicas sobre essa biblioteca, você pode adaptar posteriormente ao SDL, ou inclusive mudar de lib pois acho SFML bem mais fácil e mais potente que SDL. Sobre os fantasmas tenha por seguro que não todos os fantasmas tem o mesmo comportamento, tipo um pode te perseguir, outro te cercar, outro buscar ao azar etc. http://www.unidev.com.br/index.php?/topic/44373-pacman-inteligencia/ http://www.techtudo.com.br/noticias/noticia/2014/11/pac-man-conheca-curiosidades-mais-interessantes-sobre-franquia.html Este ultimo tem uma parte muito interessante que diz como agem os fantasmas: "IA complexa Outro conceito inovador de Pac-Man era sua complexa Inteligência Artificial. Cada fantasma tinha uma 'personalidade', uma função no jogo. Um deles perseguia incessantemente Pac-Man, outros dois tentavam se antecipar ao personagem para pegá-lo de surpresa e o último era meio bobo e só ficava circulando por aí. Um dos interceptadores era também meio 'covarde' e só encarava Pac-Man quando estava perto dos seus outros amigos fantasmas." Busque no google "inteligência artificial fantasmas pacman" e sairá muita informação como esta: https://www.google.es/search?hl=es&as_q=inteligencia+artificial+fantasmas+pacman&as_epq=&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=lang_pt&cr=&as_qdr=all&as_sitesearch=&as_occt=any&safe=images&as_filetype=&as_rights= Outras buscas relacionadas são "teoria de grafos" e "algoritmo de busca em grafos" entre outras coisas, prove essas buscas e leia tudo o que puder sobre o tema, busque em vídeos que são muito efetivos para entender. O que quero dizer é que já existe muita informação na internet, faça uso do google para minerar essa info.
  2. vai ser mais rápido se perguntar num forum dedicado a java
  3. pode ser por causa do if(num%i==0), em nenhum momento você deu valor a essa variável, e divisão por 0 da erro, prove dar valor ao i e comente
  4. Aparte do que já comentou Nando_xd, eu recomendaria você usar logo depois do cin.getline(name, 50); a sentença cin.sync() ficando da seguinte forma: char name[10][50]; for(int i = 0; i<10;i++... cin.getline(name, 50); cin.sync(); ... Por que usar isso? Fácil! Se não por o cin.sync() o buffer vai conter lixo trás pulsar a tecla enter, certamente vai saltar as seguintes leituras posteriores a essa primeira leitura, a função membro sync da classe cin elimina esse resíduo do buffer de entrada(stdin) sincronizando o conteúdo da string com o que você realmente entrou por teclado, fazendo com que seu programa funcione corretamente seu programa, chame sin.sync logo depois de fazer uma leitura, ou incluso antes si tiver problemas, normalmente quando quiser trabalhar com chars ou strings. Sorte.
  5. E não pode liberar todo o source?
  6. Olá companheiro. A melhor forma de aprender não C++, se não que qualquer linguagem, eu diria que é praticando, ou seja, escrevendo linhas e mais linhas de código. C++ é como um quebra cabeça, você precisa saber onde encaixa cada peça como if, else, while...., procure entender bem como funciona cada sentença, procure estar afiado em ponteiros, arrays, vetores, passo de parâmetros etc. Não recomendo muito você ficar olhando código que você não entende, você pode perder muito mais tempo em entender algo que é complicado demais do que aprender algo simples e que você vai precisar para continuar prosperando. Ler código de bibliotecas pode servir para aprender sobre coisas que você não sabia, porem podem ser um autentico inferno ver códigos tão complexos. Aprenda as coisas básicas, siga passo a passo e passe a seguinte lição, não continue sem entender o anterior, pratique muito tudo o que for aprendendo, é escrevendo código que você vai memoriza-los, é muito comum você você voltar a ler algo que você tenha aprendido anteriormente. Ter horas inteiras para ler está muito bem, normalmente tenho o dia inteiro para isso, procure evoluir no linguagem, veja vídeos, leia livros, participe de fóruns, use google, e pratique muito, esse é meu conselho. Nos fóruns os usuários trazem muitos exercícios que só dão em universidades, tente resolve-los, fica a dica, problema de outro é seu problema também huehueh. ;)
  7. claro que você consegue, saber html vai ser de ajuda para o que você quer, siga adiante. Boa escolha de linguagem, depois de aprender C++ nenhum outro linguagem vai ser um problema para vc, de um passo por vez, primeiro domine c++, depois disso sockets e busque informação sobre parseadores, os parseadores até podem ser programados por você mesmo, porem já existem muitos já prontos, em programação temos por regra "não reinventar a roda" >_< . ;) Se precisar de ajuda conte conosco.
  8. você está em um fórum de C/C++/C#, tudo o que eu mencionar aqui vai ligado com algum de esses 3 linguagens, mesmo por que eu só sei C/C++. Sockets é uma de tantas formas de comunicar 2 programas, já seja por internet o inclusive dentro do seu mesmo computador, porem sockets se usa mas para comunicar 2 programas por internet, por exemplo você pode criar um chat, você pode ler e enviar correios eletrônicos, abrir paginas web etc. Eu diria que praticamente todos os programas que se comunicam por internet usam sockets, ao menos em C e C++, se você souber C ou C++ leia sobre sockets. Já o parseador é uma complemento que serve para extrair informação de uma pagina determinada, existem muitos tipos de parseadores, alguns são XML, HTML, arquivos INI... por mencionar exemplos, existem muitos tipos, o linguagem html vai fechado entre tag tipo <head></head>, então um parseador poderia ser uma informação que tivesse dentro desse tag, o parser facilita você encontrar informação em qualquer parte de um código html e guardar ele em uma variável do seu programa para logo fazer o que quiser com ela, como abrir uma pagina ligada a um id por exemplo, em um hipotético caso de que existisse un tag tipo <id>123123</id> você poderia fazer algo como string id = lerId("id");, depois disso a variável id teria armazenada "123123" no qual é a informação que hipoteticamente falando, é a que você precisa para abrir uma pagina ligada a um usuário, claro está que é muito mais complexo que isso, mas seria algo parecido, você teria que que dominar linguagem html, xml, c ou c++, e também estar familiarizado com as bibliotecas para manejo de sockets, parseador de html, e certamente algumas outras bibliotecas. Isso tudo parece ser muito complicado assim falando, o primeiro que você deve saber é dominar algum linguagem de programação como C, ou C++, ou java, python etc, logo depois de dominar essa linguagem, você precisa saber como comunicar 2 programas, em C/C++ chama-se sockets, sockets é uma ampliação do linguagem, uma biblioteca que você adiciona ao linguagem para que ele logre comunicar 2 programas usando protocolos de internet, normalmente é proporcionado pelo fabricante do sistema operativo, em Windows se chama "winsock.h" ou "winsock2.h", em linux é outro diferente, mas é mais ou menos parecido. Por ultimo você deveria aprender sobre parseadores de código html para o linguagem que você esta usando, para você ter uma idéia é só você buscar em google algo como "html parser c++ library" vai sair um montão deles. você precisa ter noções de HTML também, uma pagina web não é mais que um texto, você simplesmente carrega esse texto num buffer e usa o parser para extrair os dados que você quiser. Se não me engano facebook estava feito a maior parte em PHP, então não sei se existe parserpara isso também, ou simplesmente ignoro qual o sistema nesse caso que possa ser utilizado. A coisa é você dominar o linguagem, aprender a comunicar 2 programas e começar a descarregar paginas ao buffer para fazer provas com essa informação, siga passo por passo, pois é um tema complexo como falei, mas se tiver paciência e vontade de aprender é possível sim, e bastante gratificante certamente. Eu não tenho muita experiência com essas coisas, mas estou aprendendo C C++ para criação de jogos, já estive lendo assim superficialmente sobre certos assuntos como sockets para comunicar um jogo multi-jogador por exemplo, também sobre parseadores para a geração de arquivos de guardado, manipulação de xml etc, É você fixar a meta e seguir em frente, espero ter ajudado em algo, use o google e leia sobre o tema, se alguém entender melhor deixe umas indicações aqui que me interessa esse tema também. Sorte
  9. você precisaria usar sockets para comunicar com facebook, precisaria de algum parseador(analizador) de código html para poder extrair as tais ids do código html, logo depois precisaria fazer o resto que realmente seria uma das coisas mais complexas que já vi. >_< O que não entendi é o que você disse sobre "NÃO CLICAVA NO BOTÃO ENVIAR", pois não vejo a lógica de fazer tudo isso e depois não enviar a mensagem. >_<
  10. Trata-se de uma lista encadeada simples, é uma lista dinâmica, para você fazer uma idéia melhor isso é uma espécie de vetor que cresce "infinitamente" conforme a necessidade do programador, cada vez que invocamos a função inserir() a lista cresce. As listas não se parecem em absoluto com os vetores, pois os vetores sabemos que estão na memória de forma consecutiva, um dado atrás do outro, já as listas dinâmicas isso não acontece, um dado pode estar distante de outro, simplesmente invocamos a funçao inserir() e o sistema operativo se encarrega de buscar o primeiro "buraco" na memória disponível para armazenar nossos dados, para não se perder um do outro cada dado aponta ao seguinte da lista dai o que a linha faz com aux = aux->prox; é preparar o próximo dado a ser operado pelo laço, a menos que topamos com que não exista próximos dados, quando isso acontecer aux->prox vai valer null, e aux vai receber esse null por atribuição, que é justo o que se confere no laço while ( aux != NULL ), em outras palavras esse laço pega o aux confere que não seja nulo, isso significaria que chegou no fim da lista, é feito as operações pertinentes com os dados e a linha aux = aux->prox; faz aux apontar ao seguinte dado, depois disso toda a operação se repete como falei até aux valer null. Espero ter servido para tirar sua duvida. você pode ler mais sobre listas aqui: http://br.ccm.net/faq/10263-listas-simplesmente-encadeadas
  11. Em C qualquer estrutura pode conter um ponteiro ao seu mesmo tipo, pois um ponteiro é apenas uma variável que aponta a um lugar da memória, em todo o caso, mais tarde você teria que se encarregar de fazer que essa variável aponte a tal objeto(atribuiçao), uma coisa que você não pode fazer é algo como struct t_no prox;, pois nesse caso realmente não há nenhuma estrutura declarada, isso seria um disparate. XD
  12. No caso double entradasIniciais [4][2] = {{0, 0}, {0, 1}, {1, 0}, {1, 1}};, trata-se de uma matriz(vetor de vetores) tipo C, como expliquei lá em cima, uma matriz não é mais que um conjunto de dados básico, esse tipo de matrizes são provenientes de C, em C não podemos copiar matriz1 = matriz2, pois recorde que em C não existem as classes, uma matriz não é uma classe, se fosse uma classe você poderia ter um construtor de cópia, um exemplo é a classe string, se você declarar um string mais ou menos como string vetor; posteriormente você pode copiar vetor1=vetor2, nesse caso trato o string como vetores para o exemplo mas poderia ser string matriz[10], logo você poderia fazer matriz = outramatriz, claramente sabemos que o tipo string em c++ é uma classe, e também sabemos que as classes são como navalhas suíças, elas tem muitas funções em uma só, nesse caso a classe string está preparada para receber outra string por causa do seu construtor de cópia e justamente esse construtor de cópia faz o trabalho por você se você estiver tratando com objetos da classe string, mas com arrays de C a coisa muda, é você que tem que fazer todo o trabalho: #include <iostream> using namespace std; const int linhas = 4; const int colunas = 2; void printMatriz(double m[linhas][colunas]); int main() { double entradas [linhas][colunas]; double entradasIniciais [linhas][colunas] = {{0, 0}, {0, 1}, {1, 0}, {1, 1}}; //entradas = entradasIniciais; <- Errado nao funciona, entradasIniciais é um conjunto de dados basico, as matrizes sao de C, atribuiçoes devem ser feitas manualmente. //forma correta de copiar uma matriz for ( int i = 0; i < linhas; i++ ) { for ( int x = 0; x < colunas; x++ ) { entradas[i][x] = entradasIniciais[i][x]; } } //comprovamos que se copiou corretamente cout << "entradaInicial="; printMatriz(entradasIniciais); cout << "\nentrada="; printMatriz(entradas); return 0; } void printMatriz(double m[linhas][colunas]){ cout << '{'; for ( int i = 0; i < linhas; i++ ) { cout << '{'; for ( int x = 0; x < colunas; x++ ) { cout << m[i][x] ; if(x==0){ cout << ','; } } if (i != linhas-1){ cout << "},"; cout << ' '; } } cout << "}}"; } Um truque pode ser usando a função memcpy que simplesmente faz copias de um pedaço da memória a outro. Exemplo: #include <iostream> #include <string.h> //<- para poder usar memcpy using namespace std; const int linhas = 4; const int colunas = 2; void printMatriz(double m[linhas][colunas]); int main() { double entradas [linhas][colunas]; double entradasIniciais [linhas][colunas] = {{0, 0}, {0, 1}, {1, 0}, {1, 1}}; //entradas = entradasIniciais; <- Errado nao funciona, entradasIniciais é um conjunto de dados basico, as matrizes sao de C, atribuiçoes devem ser feitas manualmente. //Outraforma de copiar uma matriz é usando memcpy(void * destino, void * fonte, size_t bytes); memcpy(entradas, entradasIniciais, (linhas*colunas)*sizeof(double)); //(linhas*colunas)*sizeof(double) é o tamanho que ocupa a matriz na memoria //comprovamos que se copiou corretamente cout << "entradaInicial="; printMatriz(entradasIniciais); cout << "\nentrada="; printMatriz(entradas); return 0; } void printMatriz(double m[linhas][colunas]){ cout << '{'; for ( int i = 0; i < linhas; i++ ) { cout << '{'; for ( int x = 0; x < colunas; x++ ) { cout << m[i][x] ; if(x==0){ cout << ','; } } if (i != linhas-1){ cout << "},"; cout << ' '; } } cout << "}}"; } O problema é que com memória dinâmica e outros casos particulares você tem que tomar muito cuidado com essa função, pois alguns programadores costumam obter o tamanho da matriz usando sizeof(matriz) para logo passar esse tamanho para memcpy, isso funciona bem se declaramos a matriz como por exemplo double matriz[10][10] e logo depois passamos isso a memcpy memcpy(...,...,sizeof(matriz)), dentro da mesma função, mas quando passamos a matriz a outra função sizeof(matriz) já não funciona, pois em vez de devolver o tamanho da matriz o sizeof retorna o tamanho do ponteiro duplo, isso a causa por que em C++ sempre passamos ponteiros de forma implícita, faça provas, passe uma matriz a uma função, faça o o cout sizeof em ambas funções e veja o que acontece. Outra forma que falha memcpy é usando new, quando você usa new para reservar a memória para a matriz como te expliquei no inicio, ao tentar fazer sizeof da matriz você vai obter o tamanho do ponteiro e não da matriz, por isso pode falhar memcpy, então tome cuidado, para não ter problema, use memcpy dentro da mesma função onde a matriz foi declarada para obter o tamanho da matriz correto, se passar a matriz a outra função e tentar usar sizeof dentro dessa outra função pode dar erro, e se for alocar memória para a matriz com new, nem dentro de mesma função vai funcionar pois você só vai obter o tamanho do ponteiro, e não vai servir para indicar a memcpy o tamanho do tramo a ser copiado, por isso prefiro fazer (linha*coluna)*sizeof(tipo_do_dado) do que sizeof(matriz), pois com (linha*coluna)*sizeof(tipo_do_dado) você sempre vai obter o tamanho das matriz corretamente. Ah! Lembre sempre que uma matriz tenha tamanho suficiente para conter a outra. para poder fazer matriz1 = matriz2 você deveria usar a biblioteca STL com seus respectivos containers, mais concretamente o tal STL vector: http://www.cplusplus.com/reference/vector/vector/operator=/, esse container possui o tal operador de cópia que te permite você fazer matrix1=matriz2, porem stl vector é um vetor, ele é criado de tal forma que para declarar ele você faria tal como stl::vector<double> vetor; más isso seria apenas um vetor, porem como falei, uma matriz trata-se de vetor de vetores, então a parada ficaria mais ou menos tal como stl::vector<stl::vector<double>> matriz;, algo complicado porem como falei, nesse caso stl vector trata-se de uma classe, você poderia aproveitar de todas as funções que incluem a classe vetctor, é uma ferramenta potente, pois imagine que nesse vector você usa push_back e o vetor poderia crescer "infinitamente" dependendo da sua RAM claro. Te aconselho usar containars para trabalhos importantes, eles podem te diminuir e muito o tempo de programaçao, pois você não teria que se preucupar por coisas como espaço, copiar uma matriz a outra, etc, você simplesmente se centraria em criar sua aplicação, tudo são facilidades, para os estudos melhor usar arrays, pois as STL se baseiam sobre arrays, matrizes, memória dinâmica..., então se você chegar a dominar tais temas, certamente você poderá dominar os containers. Espero ter sido de ajuda. Sorte. Esqueci de adjuntar a imagem que ilustra o que é realmente uma matriz anteriormente, deixo ela aqui: Como você pode apreciar double **M; aponta a primeira posição do vetor m[0] depois cada posição desse vetor contem a direção dos outros vetores, por isso tenha sempre presente na sua mente, pensou em matriz é pensar em vetor de vetores. Quando vamos usar new para reservar a memória você pode apreciar bem o processo, pois ele é bem transparente, o que acontece é que quando vamos declarar uma matriz dentro de main, o linguagem é bem amigável e te permite você fazer coisas como int m[10][10] para declarar uma matriz, porem com memória dinâmica, você precisa trabalhar com ponteiros, chegado esse momento é quando você se da conta como é a mecânica interna do programa e a memória. Certamente você sabe que em qualquer escopo você pode fazer int n; mas se o n for dinâmico você precisa primeiro de um ponteiro int *ponteiro_a_n = new int;, esse é o mesmo caso das matrizes, em main ela é bonitinha tal como int matriz[y][x], mas com memória dinâmica isso se transforma nesse bicho aqui-> saidas = new double*[row]; for ( int i = 0; i < row; i++ ) saidas = new double[col]; por botar um exemplo, tudo são facilidades do linguagem como falei, java oculta muito isso ao programador. hehe XDD
  13. você está cometendo muitos erros. Uma matriz não é mais que um vetor de vetores, na seguinte imagem você pode ver bem ilustrado o que é uma matriz. Primeiro você deve saber que é um vetor, certamente você sabe que é um vetor, mas mesmo assim vamos fazer um repasso... Um vetor nada mais é que um conjunto de variáveis alojadas na memoria RAM de forma consecutiva, e que seu primeiro elemento é apontado por um ponteiro, um vetor pode guardar dados de qualquer tipo básico ou complexo, com básico me refiro a int, char, etc, e com complexo me refiro a structs, classes, etc, incluindo outros vetores(matriz) e por suposto um vetor pode alojar direções de memoria. Para que isso fique mais claro, imaginamos que podemos fazer hipoteticamente falando, algo como isso: int vetor1[10]; int vetor2[10]; int vetor3[10]; int *matriz[3]; E agora podemos fazer algo como isso: matriz[0] = &vetor1[0]; matriz[1] = &vetor2[0]; matriz[2] = &vetor3[0]; Pois justamente esse é o conceito de uma matriz... um vetor de ponteiros no qual cada casinha desse vetor guarda a direção dos primeiros elementos de outros vetores, que nada mais são que ponteiros. A Essa altura você deve se estar perguntando por que estou te contando tudo isso, e é bem por que você esta tratando uma matriz como se de um vetor se tratara. Na linha 63 por exemplo, mais ou menos, você deu a ordem de reservar um vetor de ponteiros pesos1 = new double*[row]; , esse vetor deveria guardar tantos outros vetores como filas existam em cada uma de suas casinhas, não obstante você está tratando esse vetor de ponteiros como se fosse um simples ponteiro, e não é um ponteiro se não um vetor, por isso mostra uma e outra vez o mesmo erro em todas as instruções que você tenta reservar memoria dinâmica no seu programa(...cannot convert 'double*' to 'double**' in assignment|), o erro diz que não é possivel converter um ponteiro a ponteiro duplo, veja abaixo o erro: No seu código você aloca memoria tal qual: for ( int i = 0; i < row; i++ ) pesos1 = new double[col]; Porem deveria ser: for ( int i = 0; i < row; i++ ) pesos1[i] = new double[col]; Se não qual o sentido que teria usar um loop? Pense nisso >_<, você está sobre escrevendo o mesmo ponteiro com cada new se fosse possível fazer o que você está fazendo, por isso o erro. Sobre o construtor, ele deve estar contido na parte publica, porem não tem inconvenientes você declará-lo na parte privada da classe, pois se isso for feito você não poderá invocá-lo, isso pode ser feito com construtores também, um exemplo pode ser o tal padrão singleton no qual tanto destrutores como os construtores são declarados como privados impossibilitando que o usuário crie objetos de essa classe, pois somente pode haver uma instancia de esta classe, de aí vem o nome single+ton(padrão single). Leia mais sobre o padrão singleton em google, é muito interessante. ;)
  14. Por que não nos descreves os passos que você está seguindo para instalar a biblioteca juntamente com a versão de SO 32/64bits, versão do mingw, versão do IDE etcetc.
  15. #include <iostream> #include <iomanip> using namespace std; class IArt { // Classe base - Inteligencia Artificial. private: long semente; double beta, alfa; int numTraining, ciclos, cicloatual, numOutputs, numInputs; double* bias1; double* net1; double* fnet1; double* deltabs1; double** pesos1; double** deltapesos1; int _row, _col; public: void set_Semente ( long num ) { semente = num; } long get_Semente() { return semente; } void set_Beta ( double num ) { beta = num; } double get_Beta() { return beta; } void set_Alfa ( double num ) { alfa = num; } double get_Alfa() { return alfa; } void set_NumTraining ( int num ) { numTraining = num; } int get_NumTraining() { return numTraining; } void set_Ciclos ( int num ) { ciclos = num; } int get_Ciclos() { return ciclos; } void set_CicloAtual ( int num ) { cicloatual = num; } int get_CicloAtual() { return cicloatual; } void set_NumOutputs ( int num ) { numOutputs = num; bias1 = new double[numOutputs]; net1 = new double[numOutputs]; fnet1 = new double[numOutputs]; deltabs1 = new double[numOutputs]; } int get_NumOutputs() { return numOutputs; } void set_NumInputs ( int num ) { numInputs = num; } int get_NumInputs() { return numInputs; } void set_Bias1 ( int index, double value ) { bias1[index] = value; } int get_Bias1 ( int index ) { return bias1[index]; } void set_Net1 ( int index, double value ) { net1[index] = value; } int get_Net1 ( int index ) { return net1[index]; } void set_Fnet1 ( int index, double value ) { fnet1[index] = value; } int get_Fnet1 ( int index ) { return fnet1[index]; } void set_Deltabs1 ( int index, double value ) { deltabs1[index] = value; } int get_Deltabs1 ( int index ) { return deltabs1[index]; } void set_Pesos1 ( int row, int col, double value ) { pesos1[row][col] = value; } double get_Pesos1 ( int row, int col ) { return pesos1[row][col]; } void Init_Pesos1 ( int row, int col ) { _col = col; _row = row; pesos1 = new double*[_row]; for ( int i; i < _col; i++ ) { pesos1[i] = new double[_col]; } } //destrutor... muito importante para liberar a memoria dinamica ~IArt(){ std::cout << "Leberando recursos..." << endl; //liberando a matriz for ( int i; i < _col; i++ ) { delete[] pesos1[i]; } delete[] pesos1; } }; class Preceptron : public IArt { // Define classe Preceptron. public: void mostrar(); }; void Preceptron::mostrar() { cout << "semente: " << get_Semente() << "\n"; cout << "beta: " << get_Beta() << "\n"; cout << "alfa: " << get_Alfa() << "\n"; cout << "numTraining: " << get_NumTraining() << "\n"; cout << "ciclos: " << get_Ciclos() << "\n"; cout << "ciclo atual : " << get_CicloAtual() << "\n"; cout << "numOutputs : " << get_NumOutputs() << "\n"; cout << "numInputs : " << get_NumInputs() << "\n"; } int main() { Preceptron p1, p2; p1.set_Semente ( 13 ); p1.set_Beta ( 0.0 ); p1.set_Alfa ( 1.0 ); p1.set_NumTraining ( 4 ); p1.set_Ciclos ( 2 ); p1.set_CicloAtual ( 0 ); p1.set_NumOutputs ( 1 ); p1.set_NumInputs ( 2 ); p1.Init_Pesos1 ( p1.get_NumOutputs(), p1.get_NumInputs() ); p1.mostrar(); cout << "\n"; return 0; }
  16. pode ser por causa de que você esta pondo ponto e virgula depois de while.... "while(*string++);<--AQUI!!", e nos ifs, etc.
  17. Por que você reviveu um tema com mais de 10 anos? O cara pode até estar morto huehuehueh
  18. int i, v[5]; for (i=0; i<5; i++){ scanf("%d", v); } int maior = 0; for (i=0; i<5; i++){ if (v > maior ){ maior = v; } } printf ("Maior = %d\n",m); return 0;
  19. não coloquei tanta coisa assim heuhueh, claro que posso ajudar.... Que você não entendeu?
  20. Ok Rafaela Nogueira XD, aqui está: http://codepad.org/dBUVM25Y
  21. A única diferença é que a global será vista por todas as funções, porem a local será vista internamente na mesma função, ambas tem uma duração durante toda a vida do programa. Tudo depende do que você quer fazer.
  22. Isso é tema de muita confusão pois existem vários casos onde podem ser usados a palavra static, tanto em C como em C++, dependendo de um caso ou outro tem diferentes efeitos. No seu caso a variável global estática quer dizer que ela só será visível para funções que estejam no mesmo arquivo, si você tiver vários arquivos com funções, somente as funções que estiverem dentro desse mesmo arquivo conseguem enxergar essa variável, em outros arquivos ela é como si ela não existisse, em outras palavras, uma variável global estática é o contrario de uma variável global externa(extern). Em C as variáveis já são estáticas por default, por isso você não precisa por static nas globais, porem como falei antes, a questão é o âmbito de visão entre arquivos, é diferente das static que estão dentro das funções, pois essas são reservadas estaticamente em uma parte da memoria especial da memoria, preparada para variáveis estáticas, elas nunca estarão na pilha da função.
  23. a ver... Se poderia dizer que sim é necessário. Porem não obrigatório, Por que é necessário? Por que si não você tem que perguntar 23 vezes a idade de um a um, eu recomendaria você usar uma variável que fosse acumulando dentro de um laço for, ou while, porem acho que dentro de um for ficaria melhor, pois while se costuma usar quando não sabemos o numero de vezes que algo deva se repetir, e for no caso quando sim você sabe o numero de repetições que é de 23, mas como falei não é obrigado, mas sim muito melhor, pois não sei se vai gostar seu professor de ver um código com 40 e tantas linhas só para perguntar as idades, coisa que com 3 você pode fazer tudo. >_< int acumulador = 0, n=0, i; for ( i=0; i<23; i++){ printf("Edade jogador %d: ", i+); scanf("%d*c", &n); acumulador = acumulador + n; } //media é acumulador dividido por 23
×
×
  • Criar Novo...