Ir para conteúdo
Fórum Script Brasil

vangodp

Membros
  • Total de itens

    884
  • Registro em

  • Última visita

Tudo que vangodp postou

  1. Um programador conforme a wikipedia: Em computação, programador, desenvolvedor, codificador ou engenheiro de software é alguém que faz programação de computadores e escreve, desenvolve ou faz manutenção de software em um grande sistema ou alguém que desenvolve software para uso em computadores pessoais.[1]
  2. ...Daí eu pensei se eu aprender C/C++ primeiro eu terei mais facilidade em aprender Java?... Cara certamente sim! Vou lhe contar minha experiência. e logo depois minha opinião. Levo aprendendo C/C++ a mais de 3 anos. Um dia me deu a loca de provar Java quando um amigo me pediu ajuda nessa linguagem. Quando entrei em contato com Java a minha primeira impressão foi tipo "Ehhhh donde estou? Que tenho que fazer?" kkkk. O primeiro que fiz foi buscar tutoriais lógico, como falo español encontrei rapidamente bons vídeos sobre o tema. Depois de ver uns quantos vídeos já estava programando em Java, claro que com muitas deficiências, pois era um linguagem que tinha pegado faz apenas dois dias, mas já era capaz de usar classes, utilizar OO etc. Realmente me pareceu muito fácil programar em Java, é como se tivesse aprendido Java em uma semana. Decidi não continuar, porque não gosto do tal Java sabe, não faço isso(programar) de maneira profissional, programar é apenas um hobby para mim, achei C++ muito mais potente por isso fico com ele, mais admito que Java tem muitas coisinhas interessantes. Resumindo... sim é facil mudar de C/C++ para muitos linguagens que sejam baseados nesses mesmos linguagens, Java, phyton, C# objetiveC, etc. você teria que aprender coisas novas claro, mas nada comparado com aprender uma nova linguagem desde zero por primeira vez. sobre:"...Ou eu viajei na maionese ou poderia ter aprendido Java logo de cara? " Depende muito o que você quer fazer. Se você quer programar aplicações para celulares então acho que você tá perdendo tempo em aprender C/C++, você pode ir diretamente para essa linguagem pois o tempo de aprendizagem vai ser o mesmo em C++ que em Java. Por outro lado se o que você quer é aprender profundamente o que é programar e não lhe importa o tempo que vai levar isso, então você tá no lugar certo, C/C++ são sem duvida os linguagens mais potentes que você vai encontrar. E como você mesmo falou... aprender outro linguagem é questão de uns meses em aprender a nova syntax do linguagem, é um tempo de adaptação muito menor que o tempo de aprendizagem. Até lhe sugiro você fazer uns programas básicos em Java também para ver as diferenças.
  3. Por muito espaço que economize procure sempre praticar o código de forma descomplicada e mais entendível possível. Bom programador não é aquele que complica o código, bom programador é aquele que faz o código legível para outros companheiros. Com o tempo você entenderá o que digo... se recordar claro. >_<
  4. A diferencia é que ocupa menos linhas, somente essa... trata-se da declaração de 3 variáveis igualmente, só que de uma forma diferente. Não são as únicas formas, essa é outra por exemplo.... int num1, num2, num3; Mas todas fazem o mesmo.
  5. Podia ser porque você tem um nobre programa em C dentro de "musicas churras" mas.... é brincadeira! >_< Basicamente o que o programa ta dizendo é que você tem 2 main no mesmo programa. Pela imagem não da para apreciar, mas ao parecer você deve ter criado um projeto, e dentro desse projeto você criou 2 arquivos diferentes que contêm ao parecer duas funções main, o programa lhe esta indicando onde ele encontrou a primeira. Feche o projeto ou crie outro. Se não for isso de um pouco mais de detalhes, mostre a janela completa e os outros códigos que tiver aberto ao mesmo tempo.
  6. vangodp

    Instalando o codeblocks

    essa versão já ta antiga, melhor você baixar a 16.01, e lembre que tem versão que não traz o compilador, você vai notar isso pelo peso, uma pode pesar 33 sem o compilador e a outra pesar 80 megas. Busque a versão codeblocks-16.01mingw-setup.exe ou descarregue o compilador a parte, isso implica maior trabalho para configura-lo.
  7. tenho skype porem não entro muito, só quando tenho que trocar arquivos e escrever muito tempo, é mais cômodo acho La me chamo igual, vangodp vamp
  8. void edit_eve ( eventos_atm *est ) { int i; printf ( "Qual dia a ser editado:\nEntre 1 e 2.\n" ); scanf ( "%d", &i ); printf ( "Dia %d\n", i ); if ( i > 0 && i < 8 ) { ler_eve ( &est[i-1] ); } else{ printf ( "O valor está fora do intervalo permitido." ); } } Pensei que você iria arrumar o resto >_<, mas parece que você nem tentou.
  9. ///Obrigado! #include <stdio.h> #include <stdlib.h> #include <string.h> #define TRUE 1 #define FALSE 0 #define TTT 2 typedef struct { float temp, press; int chuva, mm_prec, edi; char nome[200]; } eventos_atm; void ler_eve ( eventos_atm *est ) { printf ( "Digite o nome do Coletor:\n" ); fflush ( stdin ); gets ( est->nome ); printf ( "Qual a temperatura:\n" ); scanf ( "%f", &est->temp ); printf ( "Qual a pressao atmosferica:\n" ); scanf ( "%f", &est-> press ); printf ( "Houve chuva?\n1 para sim e 0 para não.\n" ); scanf ( "%d", &est->chuva ); if ( est->chuva == TRUE ) { printf ( "Quantos mm de precipitacao:\n" ); scanf ( "%d", &est->mm_prec ); } else if ( est->chuva >= '3' ) { printf ( "Valor invalido...\nEditar conteudo com o valor correto.\n\n" ); } } void edit_eve ( eventos_atm *est ) { int i; printf ( "Qual dia a ser editado:\nEntre 1 e 2.\n" ); scanf ( "%d", &i ); printf ( "Dia %i", i ); ler_eve ( est ); } void exi_eve ( eventos_atm est ) { printf ( "nome: %s\n", est.nome ); printf ( "temperatura: %.2f\n", est.temp ); printf ( "pressao: %.2f\n", est.press ); printf ( "mm_prec: %d\n", est.mm_prec ); printf ( "\n" ); } int main() { eventos_atm vetor[TTT]; int i, valor; for ( i = 0; i < TTT; i++ ) { printf ( "Dia %i\n\n", i + 1 ); ler_eve ( &vetor[i] ); } do { printf ( "Escolha uma das opcoes: \n" ); printf ( "1 - Editar dia\n" ); printf ( "2 - Exibir dia\n" ); printf ( "3 - Exibir mm precipit\n" ); printf ( "4 - Sair\n" ); scanf ( "%d", &valor ); printf ( "\n" ); switch ( valor ) { case 1 : edit_eve ( &vetor[0] ); break; case 2 : printf ( "Qual dia para exibir? [1-7]\n" ); scanf ( "%d", &i ); printf ( "Dia %d\n", i ); if ( i > 0 && i < 8 ){ exi_eve ( vetor[i - 1] ); }else{ printf("O valor está fora do intervalo permitido."); } break; case 3 : printf ( "Qual dia para ver quantidade de mm de precipitacao? [1-7]\n" ); scanf ( "%d", &i ); printf ( "Dia %d\n", i ); printf ( "A precipitacao no dia %d foi de %d", i, vetor[i].mm_prec ); printf ( "\n" ); break; case 4 : printf ( "******************* Obrigado!!!*******************\n\n" ); break; default : printf ( "Valor invalido!\n" ); } } while ( valor != 4 ); } Se tiver alguma duvida pergunte
  10. Não há problema algum você fazer algo mal uma vez, o problema está em você continuar insistindo em fazer mal. Para ilustrar o que digo pense no caso do getch vs getchar. Se em algum livro você viu lá que o cara usa getch para ler uma letra você certamente não sabe nesse momento se é bom ou não é, o uso de getch, dai você vai usar, é normal, nós sempre estamos acostumados a achar que aquele carinha que escreveu o livro é um mega programador, porem nem sempre isso é certo. O que acontece se ele passar por alto o padrão de C? Que você vai estar aprendendo algo que só funciona em windows por exemplo! Depende do entorno que ele usa, ele provavelmente nunca usou outro sistema operativo, e só lhe convém explicar coisas em windows. Cabe a você determinar se quer ser livre como um pássaro ou viver atado em um sistema operativo na hora de fazer seu programa, e lhe aconselho você ter isso claro antes de começar, pois depois já pode ser tarde e você ou ter terminado o programa com mil getch que não funcionarão em linux, ou já ter avançado uma boa parte até descobrir que não queria usar funções não portáveis. De todas as formas você precisa aprender getch também, pois como você vai saber se algo é bom ou mal se não a usou? Não se assuste por se aprender uma função não padrão, você terá que aprender muitas ao largo da sua vida, porque as vezes existem casos que você não vai poder fazer de outra forma. Por exemplo limpar a tela no sistema operativo é uma coisa que depende da chamada a uma função chamada system(), a essa função você passa o parâmetro "cls" de forma que fique system("cls"), para usar system você tem 2 formas, uma é incluir windows.h já que se trata de uma função do sistema operativo, o problema é que windows.h só funciona em sistema operativos windows. Porem C possui a mesma função system que está incluída em uma biblioteca padrão, essa biblioteca se chama stdlib.h em C, em C++ cstdlib, essa biblioteca sim funciona no linux porem tem um problema, o comando "cls" não é um comando valido do linux, para limpar a tela no linux se não me engano é "Clean". Existem mecanismos para contornar esse problema. Esse é um deles: #include <stdlib.h> //Se o sistema é windows de 32 bits #ifdef WIN32 void limpartela(){ system("cls"); } //Se o sistema é linux #endif #ifdef __linux__ void limpartela(){ system("Clean"); } #endif Um exemplo completo é esse: #include <stdio.h> #include <stdlib.h> //Se o sistema é windows de 32 bits #ifdef WIN32 void limparTela(){ system("cls"); } //Se o sistema é linux #endif #ifdef __linux__ void limparTela(){ system("Clean"); } #endif int main () { printf("Isso é uma frase que vai desaparecer quando você pulsar qualquer tecla.\n\n"); getchar(); limparTela(); return 0; } Em vez de você chamar a system("cls") que só funciona no windows, ou system("Clean") que só funciona no linux, você chama "limparTela()" que funciona em ambos, pois só se ativará o seu "limparTela" correto dependendo do sistema que você estiver, por isso não se aflija, continue seus estudos, passo a passo, as perguntas vão vir surgindo dia a dia, não adianta você se desesperar e querer saber coisas que você terá que aprender mais adiante, vença uma batalha por vez e você vencerá a guerra, não tenha medo a errar, errar é aprender. A Thomas Edison na hora de patentear seu invento(Lâmpada elétrica de filamento.) tinha tentado cria-la e lhe custou 10mil tentativas sem sucesso. Sabe que respondeu quando lhe perguntaram por que "errou" tantas vezes? Sua resposta foi, “Eu não falhei, encontrei 10 mil soluções que não davam certo”. Ele já tinha errado tanto que não poderia errar mais, aprenda a aprender dos seus erros, busque as respostas. Onde? Nos fóruns de programação, é o único lugar que você pode trocar idéia com outros programadores, porem essa não é a finalidade de um fórum, um fórum é mais que isso, um fórum é um compêndio de informação. já tentou ir lendo todos os temas do fórum? você simplesmente entra, olha o titulo a titulo das duvidas que tem os usuários, e se lhe parecer interessante entra e lê. E mais importante ainda é entrar a diário ler perguntas e tentar responde-las, isso é o que mais me obrigou a aprender, as duvidas de outros programadores não é só deles, é minha também, e se você tiver uma duvida eu também preciso saber o por quê. Se você achar que vai aprender a programar com um ou 2 livros vou lhe dizer que não vai ser assim, os livros não explicam "tudo", ninguém sabe tudo, todos temos duvidas, mas você certamente sabe algo que eu ignoro, e eu sei coisas que você não, por isso amigo, fóruns são passo obrigatório para o programador. Faça-se usuário ativo de todos os fóruns que sejam também ativos dentro de um minimo, tem alguns que só recebem 1 pergunta ao ano >_<, não recomendo esses. Esse fórum de aqui recebe em media de 2 a a perguntas diárias, as vezes más porem as vezes menos, é um bom numero de perguntas, outros fóruns é o club do hardware e o imaster, esse ultimo não participo, mas é um bom fórum também, certamente existem outros, tenho a sorte de falar español e participar em alguns que considero os melhores entre os linguagens que sei falar, sem contar os de inglês que são realmente os que "fervem", forunelHacker.net, forunsdelweb.com, y lawebdelprogramador.com. O resto é muito estudo. Pratique muito muito muito... while(1){printf("muito");} >_<
  11. Essa pagina é mais focada no C++, porem serve para C também. Se você entrar nesse link aqui você vai ver um quadro do lado esquerdo chamado "Reference", uma das opções que você pode escolher é "C library" se você clickar no +, você vai ver coisas como: <cassert> (assert.h) <cctype> (ctype.h) <cerrno> (errno.h) <cfenv> (fenv.h) ... na esquerda você pode ver <cctype> por exemplo, esse é o nome que teria essa biblioteca em C++, porem na direita, você vê o nome que teria essa mesma biblioteca em C(ctype.h). Basicamente trata-se de tirar o .h de ctype.h da versão em C e adicionar uma letra 'c' a mais adiante, ficando cctype para c++, dai você pode distinguir qual é a versão do C(stdio.h) do C++(cstdio), cctypeé a versão de ctype.h de C. Porem se você entrar nesse link, você vai ver que tem uma só pagina para ambas linguagens, isso é assim porque C é compatível com c++, c++ é um C aumentado, por isso C mais ++ igual a C aumentado(c++). C++ está mais preparado para trabalhar com programação orientada a objetos que é o que se usa mais hoje em dia, as funções são praticamente as mesmas, as mudanças são internas nesses funções, na maioria dos casos você nem vai notar a diferença, porque não há lógica você muda-la e chama-la do mesmo nome, printf é a mesma coisa em C como em C++, scanf igual, você não vai notar diferenças, a única diferença que tem é que em C você inclui <stdio.h> para usar printf/scanf, e em C++ você inclui o <cstdio>. Quanto a essa pagina ser em ingles suponho que se você não sabe nada nada de inglês sim possa ser um impedimento, mas você pode usar o google tradutor para traduzir o que não entender. Tem outra pagina que permite você traduzir diretamente, mais saiba que as vezes a tradução falha: http://en.cppreference.com/w/ No pé da pagina você pode ver a palavra "portugues", se você apertar esse link a pagina fica traduzida, a maioria das coisas você pode ver bem traduzido, mais outras coisas pode que não. http://pt.cppreference.com/w/ Como você pode notar é mudar o "en." por "pt." antes de cppreference.com/w/. Mas acho que se você pode estudar um pouco de inglês você verá muito maior campo. Essas paginas não são paginas de tutoriais não ok, elas são paginas de referencia, elas explicam coisas como que tipo de dados recebem uma determinada função, para que serve essa função, valores retornados, etc, tudo isso é muito bom para lembrar rapidamente como funciona algo. Valeu? >_< Fui!
  12. Ser padrão o único que garante é que seu programa será portável, não sinônimo de de qualidade. Essa função getch... compare com getchar que é a padrão, diga em que difere uma da outra. Acha que são iguais? Fazem a mesma coisa? Prove as duas e diga aqui o que você acha. Certamente uma é mais interessante que outra en algum aspecto, a ver se descobre. >_< Dicas existem muitas, porem cada uma tem sua hora, todas elas você irá vendo conforme avançar nos seus estudos diários. Meu conselho é... aprenda pelo menos algo novo todos os dias, não durma sem aprender alguma coisa nova sobre seu linguagem. Ah! E guarde tudo o que for fazendo a modo de consulta, faça uma pasta chamada C, dentro ponha coisas tipo outra pasta e a chame de "saída padrão", dentro ponha tudo sobre printf, especificadores de formato, etc, logo "entrada padrão", faça o mesmo com scanf, "tipos de dados", ponha dentro como fazer declarações, atribuições, etc, operadores... Assim você irá criando uma boa coleção de códigos ao que você poderá fazer consultas rapidamente, e dentro de uns anos você irá rir muito dos primeiros códigos que você fez. >_< =)
  13. Cara! Sou totalmente contra qualquer livro que inclua getch no seu conteúdo. Mas admito que você tenha que aprender o que é... para nunca mais usa-lo. >_< Procure sempre usar funções da biblioteca padrão. Razões? Simples! Se funciona no windows, não vai funcionar no linux, se funciona no linux, não funciona no windows.... tudo o que não for padrão faz com que você seja "prisioneiro" de um só sistema operativo. você já se perguntou se um dia seu programa tiver umas... sei lá, 20 mil linhas ou mais, e tiver vários getch no meio, dai esse programa vai rodar só no windows, por que getch não é padrão. E se você quiser usar seu programa no Linux? Toca repassar as 20 mil linhas para substituir getch por getchar, já que getchar faz parte do C padrão, e getch não. Sem contar outras muitas funções que você pode usar por "conveniência" que en realidade te encadeiam a um só sistema operativo. Quer um conselho? Esqueça conio.h! Aprenda se quiser... para saber do que se trata, mas não faça muito esforço por usar. Posso lhe dizer que programadores de nível elevado são todos contra o uso de bibliotecas não padrão. O que você quer ser? Um programador mequetrefe? Ou um autentico programador que domine o linguagem? Nem vou passar do conio para abaixo, se no inicio explica que getch é mais amplamente usado no windows, imagina as besteiras que vai dizer mais embaixo >_<. Certamente você aprenderá muita coisa útil, mas como tudo, tem coisas que sim, e coisas que não deveria usar. Como você deverá já ter visto, C/C++ são linguagens muito antigos, dai que você programa no console, você tem a saída e entrada padrão por console, etc. C/C++ são linguagens de programadores realmente monstros, não é javinha não >_<, no java você erra algo e o programa vai logo avisando, em C você erra e você fode o computador kkk. Tá... to exagerando, mais não espere que o compilador te resolva todos os erros, o único que o compilador vai te dar é "pistas" sobre o erro. Pense em uma bicicleta... java é uma bicicleta com rodinhas, C++ é isso: Se você erra sua mãe não vai tar lá pra te consolar kkkk. Bom... continuando. C/C++ foram amadurecendo tambem com o passo dos anos, algumas coisas já não se deveriam usar, como por exemplo "goto", o fato de que se mantenha no linguagem é para dar uma "retro compatibilidade". Que passaria se o criador do linguagem eliminara alguns códigos que já não o considerasse necessários? Pois que não poderia se continuar dando suporte a programas antigos. (ºoº) Por esse motivo se tenta não eliminar partes da linguagem, porem algumas vezes você verá a palavra "deprecated" que quer dizer "não recomendado", outras vezes não verás nada, quando isso acontecer um dos motivos pode ser que a comunidade de programadores já não o considera útil, mas aí o que acontece é que não todos estão de acordo em algo, alguns vão lhe dizer que use e outros que não use, sinceramente eu perguntaria por quê, e o fato do por quê de não usar o getch é a "portabilidade". você considera importante a portabilidade? você gostaria que seu programa funcionasse em todos os sistemas operativos, ou só no windows? Pense nisso antes de usar algo não padrão. Mas como digo sempre.... errar também é aprender. Recomendaria você buscar no google "por quê não usar getch" ou melhor ainda "por quê não usar conio.h" Esse post por exemplo não fala sobre getch, porem getch não é a unica coisa que andam ensinando mal, tem muitas outras coisas que ensinam fatal. Tem esse link... te vai ser muito util: http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/ Para aprender bem lhe recomendo você ser um "rato de fóruns", roer as duvidas que tem outros usuários te fazem mais forte. Pense que minha duvida é sua duvida. A diário se apresentam perguntas de novatos, aí é onde mais se aprende, porque você pode ver as soluções de programadores mais experimentados. Eu por exemplo sou usuário ativo de mais de 10 fóruns, e não é fazendo perguntas não, se não respondendo. Quando um usuário tem um problema, muitas vezes eu nem sei a resposta, más se eu achar conveniente, ainda que o problema não seja meu, eu vou ao google e busco uma resposta pra ensinar o usuário. Sabe por quê? Porque eu aprendo! tem gente que acha que vai ler um livro e já tá... tudo beleza. Eu já voltei a aprender a mesma coisa umas 10 vezes ou mais. Constantemente volto para ler coisas como printf, scanf e coisas que aprendi nos primeiros dias já faz mais de 4 anos. Primeiro que não tenho um servidor na cabeça, esqueço com relativa facilidade das coisas, algumas funções são complicadas de usar, por muito pro que você seja você precisa ir a paginas como cplusplis.com a diário, para ver como funciona, que valores recebe, que valores retorna, etc. Não tema ler um livro e esse livro ser uma "autentica merda", porque você terá que ler muitos livros, você terá que ver vídeos sobre printf de vários youtubers, porque cada um deles explica algo que outro não explicou. Em definitiva... se quiser ser programador, você irá aprender C/C++ até o dia da sua morte, pode estar certo disso. Para aprender a ser um bom programador use os foruns. Certamente você não conhece as perguntas corretas para ser um bom programador, mas os noobs sim as conhecem, e os pros conhecem as respostas, o único lugar para vc "trocar" experiências é nos fóruns. Assim que recorde isso: while ( programador != morreu ){ Programador = pdfs+videos+foruns+cplusplus.com+google; experiencia++; } ;) Compare o aprendido com outras fontes. Assim você saberá se o que está aprendendo é bom ou não.
  14. imagine que você tem uma lista com os valores: lista->10->20->30->40->50->60->70->80->90-100->NULL Dai você envia a essa função a lista e o numero 50 Lista *novaLista = separa( lista, 50); O que você deverá fazer nessa função é buscar o nó que contem o número 50 que é o nó desejado que recebeu por parâmetro. você devera fazer um laço utilizando um nóAtual para ir buscando o 50 nele, quando if (nóAtual->valor == n) que recebeu por valor você tem que fazer duas coisas. 1º é atribuir o nóAtual->seguinte a um ponteiro temporal tipo Lista: Lista *temp = nóAtual->seguinte; //o atual é o 50 e o seguinte é o 60 Agora já temos a direção do segundo pedaço da lista, falta parti-la, para isso fazemos: 2º nóAtual->seguinte = NULL; //Nesse ponto a lista fica interrompida, você já tem 2 listas... Agora só falta retornar a nova lista: return temp; Não sei se deu para entender.
  15. Outro dia encontrei esse daqui: http://www.inf.ufpr.br/lesoliveira/download/c-completo-total.pdf Porem não sei se é bom. Certamente você aprenderá bastante dele, talvez algumas coisas estejam desatualizadas, mas se acompanhar fóruns de programação rapidamente você se dará conta. Prove vídeos conjuntamente por youtube. La tem bons canais.
  16. O fato é que você pode começar diretamente com o linguagem que mais gostar. Eu mesmo comecei por C++ e de forma autodidata. Busque um bom livro de C e melhor ainda veja vídeos... vários deles. Agora se quiser aprender lógica primeiro é coisa sua. ;)
  17. Forma de se usar if if(){ //if }else{ //else } as chaves servem para agrupar instruçoes. Se tenho uma só instrução faço: if() //1º instrução if else //1º instrução else caso tenha 2 ou mais instruçoes uso as chaves para agrupar: if(){ //1º instrução if //2º instruçao if }else{ //1º instrução else //2º instruçao else }
  18. Tudo isso é uma grande estupidez. Vamos falar a nível técnico... por muitas dimensões que acharem que tem um array a memória sempre será "unidimensional". Não há nada mais fácil que fazer: int linhas = 10; int colunas = 10; int **matrix = (int**)malloc( sizeof int * linhas * colunas ); Como podem ver são poucas linhas, não há necessidade de usar funções estúpidas para esse trabalho >_<. Mas se querem continuar por esse caminho existem varias formas de faze-lo: Como disse O comentário anterior sim devemos usar ponteiro triplo, isso adiciona uma capa de complexidade maior: int matrixAlloc ( int ***matrix, int nlinhas, int nColunas ) { int i; int estado; //Metodo de reserva classica *matrix = malloc ( nlinhas * sizeof ( int ) ); if ( matrix != NULL ) { i = 0; while ( i < nlinhas ) { ( *matrix ) [i] = malloc ( nColunas * sizeof ( int ) ); if ( ( *matrix ) [i] != NULL ) estado = 1; else estado = 0; i++; } } else estado = 0; return estado; } Porem como falei usar laços para reservar memória o único que você ganha é um "pedaço de memória fragmentado", porem se usar a forma descrita ao principio, todas as casas ficam adjacentes, que traduzido ao bom PT BR se traduz em eficiência. Então acho bem melhor usar int **matrix = (int**)malloc( sizeof int * linhas * colunas ), mas se quiser outras formas: void* matrixAlloc2 ( int nlinhas, int nColunas ) { return malloc ( sizeof ( int[nlinhas][nColunas] ) ); } Na qual você pode usar da seguinte forma dentro de main: int ( *m2 ) [y] = matrixAlloc2 ( x, y ); A vantagem de usar o malloc hackeado para criar todas as casinhas de forma adjacentes é que você pode usar um simples free(m2) como se de um array se tratasse pois todas as casas como falei estão adjuntas uma a outra, não há necessidade nem de usar laços para liberar essa porção de memória. Por isso a linha... matrix = (void **) malloc( rows * sizeof(void *) ); que diz @Marcelo Utikawa da Fonseca estava da forma: matrix = ( void** ) malloc ( size * rows * cols ); porque tinha copiado essa linha de outra linha semelhante ao sistema que mostrei ao principio. trata-se de fazer uma função genérica para reserva de memória, porem pouco viável conforme meu parecer. Sobre a função levar um ponteiro triplo é correto, já adicionei ela ai para quem quer usar. é só invocar ela ai tipo: int matrixAlloc ( int ***matrix, int nlinhas, int nColunas ) { int i; int estado; //Metodo de reserva classica *matrix = malloc ( nlinhas * sizeof ( int ) ); if ( matrix != NULL ) { i = 0; while ( i < nlinhas ) { ( *matrix ) [i] = malloc ( nColunas * sizeof ( int ) ); if ( ( *matrix ) [i] != NULL ) estado = 1; else estado = 0; i++; } } else estado = 0; return estado; } int main(){ int **m1 = NULL; int x = 3, y = 3; matrixAlloc ( &m1, x, y ); ... Acho que é tudo. Ou sei lá... sou meio doido mesmo.
  19. O corretor se chama SpellChecker, é um plugin. settings/Editor... dai na barra esquerda você desliza ela ate o fim até encontrar SpellChecker.
  20. Em C não existe suporte para abrir multi janelas como você está explicando, ao menos não de forma padrão, para isso você deverá buscar alguma API, porem sinceramente não saberia te dizer qual. Existem muitas APIs, porem alguma que te permite abrir varios cmds não sei, todas elas trabalham de forma gráfica.
  21. não entendi nada vei. Como assim abrir outra tela? O que costumamos fazer é limpar a tela e mostrar outra mensagem Não ligue muito para a janela do prompt. você só usará a janela do prompt um certo tempo. Ou vai ficar fazendo aplicações de linha de comandos toda a vida? >_<. Ela é util por enquanto estudamos, mas com o tempo a tendência é você imigrar para uma interface gráfica.
  22. Sim claro, você esta passando um ponteiro duplo, a função malloc reserva o espaço no heap e faz com que esse ponteiro aponte a esse espaço, e você deverá liberar antes de sair de main ou haverá fuga de memória. Porem eu faria algo como isso: #include <stdio.h> #include <stdlib.h> void** callstore ( unsigned int rows, unsigned int cols, unsigned int size ) { unsigned int i; void** matrix = NULL; matrix = ( void** ) malloc ( size * rows * cols ); for ( i = 0; i < rows; i++ ) { * ( matrix + i ) = ( void* ) malloc ( size * cols ); } return matrix; } void freeMemory ( int** matrix, int linhas ) { int i; for ( i = 0; i < linhas; i++ ) { free ( * ( matrix + i ) ); } free ( matrix ); } int main (){ unsigned int N = 10; //reserva int** matriz = (int**)callstore( N, N, sizeof(int) ); //função generica de reserva de memoria. Reserva N*N para inteiros matriz[0][0] = 10; matriz[9][9] = 20; printf("%d\n", matriz[0][0]); printf("%d\n", matriz[9][9]); //libera freeMemory( matriz, N); getchar(); return 0; }
  23. talvez tenha dlls diferentes para debug e released.
  24. Nesse caso tem o mesmo efeito pois para que teste = 1; todos os casos tem que chegar a ser verdadeiros.
  25. em vez de void construirMatriz(int tabuleiro[][], int n) use void construirMatriz(int **tabuleiro, int n) tanto no prototipo como na implementação. Não se esqueça de liberar a memória. no final de antes de sair de main.
×
×
  • Criar Novo...