Ir ao conteúdo
  • Cadastre-se

codigo rapido

Membro Pleno
  • Posts

    275
  • Cadastrado em

  • Última visita

Tudo que codigo rapido postou

  1. Não esquece de pesquisar pela função close dos seus tipos FILE.
  2. Nossa moço, eu li. Eu to só te ajudando... Eu sugiro também que o senhor procure um curso de interpretação de texto. Tá cheio desse jargão seu por ai que o usuário iniciante não vai entender que relação tem com seus códigos. É bom, né? A gente vem pra ajudar e o cara acha tudo ruim... Pra mim é sempre um prazer ajudar alguém. Infelizmente esses dias está um pouco complicado pra mim. Gostariad e ter ajudado mais.
  3. Muito bom! Mas se me permite, deixe-me lhe dar uma dica... tava vendo seu fonte e percebi que tem um while a mais do que seria necessário no seu buscar. Não precisava. Segue como ficou o meu abaixo. Eu não sei explicar porque o a minha função DeleteValueInNode não está deletando os nós repetidos. No meu entendimento era pra estar retirando todos de forma recursiva. Isso eu vou deixar pra você ou outro que quiser ajudar. Desejo sucesso pra você nos seus estudos. #include<stdio.h> #include<stdlib.h> typedef struct No { int dado; struct No *next; struct No *before; }No; No *createNode(int val) { No *newNode = malloc(sizeof(No)); newNode->dado = val; newNode->next = NULL; newNode->before = NULL; return newNode; } No *insertInitNode(int num, No *Node) { No *novo = malloc(sizeof(No)); novo->before = NULL; novo->next=Node; novo->dado=num; return novo; } No *insertEndNode(int num, No *Node) { No *aux = Node; No *novo; novo = malloc(sizeof(No)); novo->dado=num; novo->next=NULL; while(aux->next!=NULL) { aux=aux->next; if(aux->next==NULL) { novo->before=aux; } } aux->next=novo; return Node; } void findInNode(int busca, No *Node) { int contador=1; No *aux; aux = Node; while (aux->next!=NULL && aux->dado!=busca) { aux = aux->next; contador=contador+1; } if(aux->dado==busca) { printf("O valor procurado está na posição %d\n",contador); } else { printf("O valor procurado não foi encontrado\n"); } } void findAllInNodes(int busca, No *Node) { int contador=1; No *aux; aux = Node; while (aux->next!=NULL) { aux = aux->next; contador=contador+1; if(aux->dado==busca) { printf("O valor procurado está na posição %d\n",contador); } } } No *EditValueNode(int target, int target2, No *Node) { No *aux; aux = Node; while (aux->next!=NULL && aux->dado!=target) { aux = aux->next; if (aux!=NULL && aux->dado==target) { aux->dado=target2; } } return Node; } No *EditNode(int target, int value, No *Node) { int contador=1; No *aux; aux = Node; while (aux->next!=NULL && contador!=target) { aux = aux->next; contador=contador+1; } if(contador==target) { aux->dado=value; } else { printf("No não encontrado\n"); } return Node; } No *deleteValueInNode(int target, No *Node) { No *aux; aux=Node; if(Node->dado==target) { if(Node->next!=NULL) { aux=Node->next; free(Node); Node->dado=aux->dado; Node->next=aux->next; } else { aux=Node->before; free(Node); Node->dado=aux->dado; Node->next=NULL; } } if(Node->next!=NULL) { deleteValueInNode(target, Node->next); } return Node; } No *deleteAllNodes(No *Node) { No *aux; aux=Node; while(aux->next!=NULL) { aux = Node->next; free(Node); Node=aux; } free(Node); Node=NULL; return Node; } void imprimir(No *Node) { if(Node!=NULL) { if (Node->next!=NULL); { No *novo; novo=Node->next; imprimir(novo); } printf("Dado = %d\n",Node->dado); } } int main() { printf("------------------------ createNode\n"); No *node = createNode(3); imprimir(node); printf("------------------------ insertInitNode\n"); node = insertInitNode(2, node); node = insertInitNode(2, node); node = insertInitNode(1, node); imprimir(node); printf("------------------------ insertEndNode\n"); node = insertEndNode(4, node); imprimir(node); printf("------------------------ findInNode\n"); findInNode(3, node); findInNode(6, node); printf("------------------------ findAllInNodes\n"); findAllInNodes(2, node); printf("------------------------ EditValueNode\n"); node = EditValueNode(2, 3, node); imprimir(node); printf("------------------------ EditNode\n"); node = EditNode(4, 6, node); imprimir(node); printf("------------------------ deleteValueInNode\n"); node = deleteValueInNode(3, node); imprimir(node); printf("------------------------ deleteAllNodes\n"); node = deleteAllNodes(node); imprimir(node); printf("------------------------\n"); return 0; }
  4. Será que seria uma boa eu mostrar como eu faria usando um regex?
  5. Pois é... se você não mostrasse o enunciado... Eu tava imaginando até que o problema era para o caso de usar algo como derivação, uma função inversa, ou uma resolução como o método dos quadrados minimos... O Flávio Pedroza praticamente lhe deu a resposta de como trabalhar com os dados. Parece que o seu maior problema agora é como ler e gravar em arquivos. O que você deve pesquisar é fomo funciona: FILE, fopen, fgets, fputs... As funções que são comuns para arquivos (tipo FILE). começe e mostre nos. Pelo menos o seu portugol.
  6. E onde tá o seu codigo mostrando como começou isso? Sabe pelo menos o que é uma função inversa? porque pelo que estou vendo, acho que você pode precisar desse requisito. Qual a função inversa do seno? sabe como fazer em C? O que tem pronto?
  7. Isso não ajuda o usuário iniciante em nada. Lembre-se: O usuário, principalmente o iniciante, não adivinha o que quer dizer se não for detalhado. Isso ai que está dizendo só um usuário mais avançado vai entender pelo costume do desenvolvimento. O que o AfNeto tá dizendo é que você deve se preocupar menos com menus, janelas e mais com os dados e as funções que irão trabalhar com eles. Pra ser mais especifico, recomendo o usuário dar uma lida nisso: https://pt.wikipedia.org/wiki/MVC Isso vai lhe ajudar a entender que você deve separar seus dados da view e do controller. No inicio é toleravel misturar um pouco as coisas. Não se preocupe se não quiser ler tambem... Apenas continue andando. Observe esse exemplo de como estou trabalhando com nós: https://www.clubedohardware.com.br/forums/topic/1563367-lista-encadeada-erro-de-execução/?tab=comments#comment-8269440 Veja que não utilizei menus... não usei nada. Apenas usuei o main pra fazer alguns testes diretos com as funções que foram criadas. Não se preocupe em ter de mostrar dados a usuário como se já estivesse vendendo o programa. Outro exemplo, não tão bom, mas que tambem exemplifica o que quero dizer quanto ao tempo dos seus testes: https://www.clubedohardware.com.br/forums/topic/1562153-questão-com-condicionais-em-c/ Se você já der uma lista de testes pra popular sua struct, e testar suas funções, você vai poupar tempo nos seus testes.
  8. Lógico que não vai funcionar. É só um exemplo de como se poderia contornar o problema do tamanho dos endereços. Mas será que isso não é lógico nem para os usuários mais iniciais? Eu devo esperar que o usuário queira um sistema inteiro e explicado em 10 linhas? Isso seria doentio. Tanto da parte de quem espera quanto da de quem cobra. Não escrevo sistemas completos de graça. So posso dar exemplos contando que o usuário vá pesquisar mais sobre. Tirando quem está no começo... é assim que vou fazer e é assim que vou continuar fazendo. Isso ai é pra usuários mais avançados ou que queira ir mais longe. Eu não tenho que pensar em tudo ou dar algo de mão beijada. Se o forum é pra aprender, os que quiserem irão aprender por vontadfe propria. Os outros, como deve ter percebido, podem ficar sem resposta ou você responde como já tem feito. O segredo pra mim é o que eu mesmo guardo pra mim: Se vira. Pode ficar despreocupado... aqui no meu está tudo habilitado. O meu objetivo não é perfeição. O meu objetivo foi demonstrar como funciona uma função que recebe ponteiros.
  9. Sim. O tamanho dos segmentos importa. As vezes nem se os tipos de dados dentro das structs importam tanto, já que o cast será realizado de qualquer jeito, não importando o tipo do dado. Mas ai o risco é maior ainda. Pra contornar o problema da diferença entre os tamanhos em bits dos endereços de uma maquina para outra segue exemplo de captura e fonte demonstrando com usar: // por JaredPar e como mostrado por Contango // fonte: // https://stackoverflow.com/questions/1505582/determining-32-vs-64-bit-in-c #if _WIN32 || _WIN64 #if _WIN64 #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif // Check GCC #if __GNUC__ #if __x86_64__ || __ppc64__ #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif Quem trabalha com C e queira extrapolar não pode ser ignorante sobre isso.
  10. Eu cometi um engano ai. Me referi apenas a passagem de ponteiros por parametro, sendo que a questão é sobre a passagem de vetor. Provavelmente porque prefiro usar apenas ponteiros como parametros. Ponteiros, quando quero que os dados sejam modificados e cópia quando não tem necessidade de alterar o dado original. Quando é ponteiros sendo passados... tudo pode acontecer. A função não sabe que tipo de dados é do endereço passado por parametro. O compilador só reclama porque existe o analisador semantico (atualmente e provavelmente nos primeiros Cs não devia ser tão bom assim... não sei... mas). Antes de compilar o analisador semantico tenta encontrar passagens de parametros de tipos diferentes. Mas nada impede de mandar o tipo que quiser para uma função que recebe o ponteiro de qualuqer coisa. Mas existe formas de contornar esse analisador semantico...pra demonstrar, fiz um exemplo que não da erro. Muitas vezes a gente tem problemas de serialização na web porque o analisador semantico não consegue olhar tão profundamente. Podem compilar e executar que vai funcionar sem medo: #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { int A; char B[10]; }A; typedef struct { int A; char B[10]; }B; int lascaTudo(long unsigned int c) { A *a = (A*)c; printf("%i - %s\n", a->A, a->B); return 1; } int main() { A a; a.A=101; strcpy(a.B, "opa!"); lascaTudo((long unsigned int)&a); B b; b.A=100; strcpy(b.B, "eita!"); lascaTudo((long unsigned int)&b); return 0; }
  11. parece que tá ficando bem legal. A uns anos eu fiz algo parecido mas em javaScript. tratamento de choque: http://tivideotutoriais.blogspot.com/2018/03/tratamento-de-choque-para-jogo-em.html
  12. Eu peguei de novo mais cedo, mas ainda não terminei. vou ter que parar de novo pra resolver outras coisas, mas aqui compartilho com vcs. Tireia a variavel global. Mais tarde pego de novo: #include<stdio.h> #include<stdlib.h> typedef struct { int dado; long unsigned int next, before; }No; No *createNode(int val) { No *newNode = malloc(sizeof(No)); newNode->dado = val; newNode->next = 0; return newNode; } No *insertInitNode(int num, No *Node) { No *novo = malloc(sizeof(No)); novo->next=(long unsigned int)Node; novo->dado=num; return novo; } No *insertEndNode(int num, No *Node) { No *aux = Node; No *novo; novo = malloc(sizeof(No)); novo->dado=num; novo->next=0; while(aux->next!=0) { aux=(No*)aux->next; } aux->next=(long unsigned int)novo; return Node; } void findInNode(int busca, No *Node) { int contador=1; No *aux; aux = Node; while (aux->next!=0 && aux->dado!=busca) { aux = (No*)aux->next; contador=contador+1; } if(aux->dado==busca) { printf("O valor procurado está na posição %d\n",contador); } else { printf("O valor não encontrado\n"); } } No *EditValueNode(int target, int target2, No *Node) { No *aux; aux = Node; while (aux->next!=0 && aux->dado!=target) { aux = (No*)aux->next; if (aux!=NULL && aux->dado==target) { aux->dado=target2; } } return Node; } No *EditNode(int target, int value, No *Node) { int contador=1; No *aux; aux = Node; while (aux->next!=0 && contador!=target) { aux = (No*)aux->next; contador=contador+1; } if(contador==target) { aux->dado=value; } else { printf("No não encontrado\n"); } return Node; } No *deleteValueInNode(int target, No *Node) { No *aux = Node; No *novo; int x; // x momentaneo para parar a recursividade while(aux->next!=0 && x<10) { aux=(No*)Node->next; x++; } aux->next=(long unsigned int)novo; return Node; } //=================================== void imprimir(No *Node) { if(Node!=NULL) { if (Node->next!=0); { No *novo; novo=(No*)Node->next; imprimir(novo); } printf("Dado = %d\n",Node->dado); } } int main() { printf("------------------------ createNode\n"); No *node = createNode(3); imprimir(node); printf("------------------------ insertInitNode\n"); node = insertInitNode(2, node); node = insertInitNode(2, node); node = insertInitNode(1, node); imprimir(node); printf("------------------------ insertEndNode\n"); node = insertEndNode(4, node); imprimir(node); printf("------------------------ findInNode\n"); findInNode(2, node); findInNode(6, node); printf("------------------------ EditValueNode\n"); node = EditValueNode(2, 3, node); imprimir(node); printf("------------------------ EditNode\n"); node = EditNode(2, 6, node); imprimir(node); printf("------------------------ deleteValueInNode\n"); node = deleteValueInNode(6, node); imprimir(node); printf("------------------------\n"); return 0; } /* void excluir(int target, struct No*ini){ struct No *p,*q; p=ini; q=ini->prox; if (q->dado==target) while (q != NULL && q->dado != target) { p = q; q = q->prox; } if (q != NULL) { p->prox = q->prox; free (q); } } void excluirtudo(struct No *no) { if(no->prox!= NULL) { excluirtudo(no->prox); } no->prox=NULL; free(no); printf("excluiu...\n"); } */ Parei onde em excluir. Assim que eu voltar pego de novo pra terminar.
  13. #include<stdio.h> #include<stdlib.h> //criação da lista - recebe um inteiro e tem um ponteiro //*ini é o ponteiro inicial (um ponteiro que aponta para outro ponteiro) struct No { int dado; struct No *prox; } *ini=NULL; void inserir_ini(int num){ struct No *novo; // nova estrutura com características de No novo = malloc(sizeof(struct No)); //pegar um espaço de memoria novo->dado=num; //informação de novo agora é num novo->prox=ini; //ponteiro de novo aponta para ini (primeiro da lista) último da lista ini=novo; // ponteiro de ini aponta para novo } void inserir_fim(int num){ struct No *aux =ini, *novo; // novo ponteiro e nova estrutura com características de No novo = malloc(sizeof(struct No)); //pegar um espaço de memoria novo->dado=num; //informação de novo agora é num novo->prox=NULL; //ponteiro de novo aponta para NULL if(aux==NULL){ ini=novo; //se não tinha nada na lista, ini apontava para null, logo aux aponta para null, nesse caso ini vai apontar para o primeiro da lista } else{ while(aux->prox !=NULL){ aux=aux->prox; } aux->prox=novo; //procura o último da lista e conecta o novo nele } } void imprimir(){ struct No*novo; //criou um ponteiro igual ao no if (ini == NULL) { printf("--- fim da lista ---\n\n"); return; } novo = ini; while (novo !=NULL) { printf("Info = %d\n",novo->dado); novo = novo->prox; } printf("--- fim da lista ---\n\n"); } void buscar (int busca, struct No*ini){ int contador=1; struct No *q; q = ini; while (q != NULL && q->dado != busca) { q = q->prox; contador=contador+1; } printf("O valor inserido está na posição %d",contador); } void alterar(int alvo, int alvo2, struct No*ini){ struct No *q; q = ini; while (q != NULL && q->dado != alvo) { q = q->prox; } if (q != NULL) { q->dado=alvo2; } } void excluir(int alvo, struct No*ini){ struct No *p,*q; p=ini; q=ini->prox; if (q->dado==alvo) while (q != NULL && q->dado != alvo) { p = q; q = q->prox; } if (q != NULL) { p->prox = q->prox; free (q); } } void excluirtudo(struct No *no) { if(no->prox!= NULL) { excluirtudo(no->prox); } no->prox=NULL; free(no); printf("excluiu...\n"); } int main(){ int op=1, num, num2,busca; while (op!=0){ printf("\n\nMenu \n1-Insere no inicio; \n2-Insere no fim; \n3-Imprime; \n4-Buscar \n5-Alterar \n6-Excluir um \n7-Excluir tudo \n0-Finaliza \n\n Digite a opcao: "); scanf("%d", &op); switch(op){ case 1: printf("\nInsira um numero: "); scanf("%d",&num); inserir_ini(num); break; case 2: printf("\nInsira um numero: "); scanf("%d",&num); inserir_fim(num); break; case 3: imprimir(); break; case 4: printf("Insira o numero que deseja buscar:"); scanf("%d",&busca); buscar(busca,ini); break; case 5: printf("\nInsira o numero que deseja substituir: "); scanf("%d",&num); printf("\nInsira o novo numero: "); scanf("%d",&num2); alterar(num,num2, ini); break; case 6: printf("\nInsira o numero que deseja excluir: "); scanf("%d",&num); excluir(num, ini); break; case 7: excluirtudo(ini); printf("\nLista deletada."); break; } } } Deu uma melhorada, mas ainda não está bom. Da pra melhor melhorar mais. Por exemplo você deve evitar variaveis globais. Eu até tentei mudar isso, mas começou a aparecer muitos erros e eu não terei tempo pra ver isso agora. Quem sabe outros pegando de onde parei?
  14. você já começou usando sua struct nó como uma variavel global. isso não é muito legal. Eu vou mudar algumas coisas. Isso pode demorar um pouquinho porque tá dando uns erros aqui, mas assim que eu terminar mando. Melhor ir dormir e esperar até de manhã pra ver porque não sei qt tempo vou levar.
  15. aquenta ai que eu vou olhar aqui com mais calma. Que a pouco retorno.
  16. E vai retornar mesmo, porque se você inicializaou o contador como 1, mesmo que não encontre nada, pelo fonte como não alterou o valor de contador, ele continuará sendo 1. você já começou dizendo que if (q->dado==alvo), mas se quer retirar do nó raiz, deveria ter feito algo como if (p->dado==alvo) ? Que tipo de erro? Eu imagino que quando se está trabalhando com nós, na exclusão deve-se começar excluindo os nos folhas e depois ir subindo até o nó raiz. tá estranho isso ai... E olha como você fez um malloc: novo = malloc(sizeof(No())); Não deveria ser assim? novo = malloc(sizeof(No)); parece uma mesma variação da pergunta feita aqui: https://www.clubedohardware.com.br/forums/topic/1562825-erro-ao-abrir-arquivo-txt/?tab=comments#comment-8267504 E a resposta que lhe digo é a mesma que postei ao usuário... primeiro deveria entender os pre-requisitos, como o funcionamento do switch-case. De onde iria tirar os dados depois de pedir pra imprimir? Sabe responder pelo menos isso? Se não...
  17. Essa parecia com aquelas perguntas que eu fazia pra minha mãe quando eu era pequeno... -mãe, porque as girafas tem o pescoço comprido? Parece brincadeira, mas é que quem fez realmente poderia ter escolhido que funcionasse de n outras formas. Mas provavelmente já deve ter lido sobre maquina de turing e como seria difícil pra nos hoje se acontecesse um cataclisma e tivessemos que refazer tudo de novo do zero. então, pensando por esse aspecto, imagina um tempo no passado em que não existia quase nada pra pra inicar... não tinha java, não tinha orientação a objetos... só endereços, pilhas e instruções a se realizar sobre esses enrereços e pilhas... No caso do C ele reflete ainda um pouco dessa realidade. A função quando recebem o ponterio não faz ideia do que está recebendo além de um endereço na memoria. O compilador até dá uma ajuda na hora de compilar evitando que a gente erre dizendo que estamos enviando um ponteiro de tipo errado para uma função. Se declarar a função pra receber um ponteiro de um tipo de dado, ele vai reclamar. Mas mesmo assim, se você quiser não manter a coerencia, pode declarar a função para receber um (valor de enereço como) inteiro no lugar de um ponteiro. A função que recebe um ponteiro recebe um endereço de memoria que é o começo dos dados que está passando por parametro. Não sabe onde termina o dado que deseja trabalhar. Por isso ela não tem nem como fazer essa cópia dentro da função. Mas se você enviar o tamanho junto como parametro a função, se você quiser, a partir desse tamanho, tem como saber onde começa e onde termina o dado que enviou e assim poderia criar uma cópia se quisesse. Mas pense... seria realmente necessário?
  18. Ta dizendo que não existe a função GetInt(); Provavelmente, pelo contexto, ela pode ser algo mais ou menos assim assim: int GetInt() { int inteiro; scanf("digite o inteiro: %d\n", &inteiro); return inteiro; } Coloque ela acima da função main. Se colocar abaixo, main vai passar pela mesma instrução e não vai reconhecer novamente e vai dar a mesma mensagem. toda função deve ser referenciada antes de main. só que esse codigo não vai rodar como devia se não arrumar algumas coisas... por favor, quando postar codigos, use o icone <> do lado da carinha que aparece no editor, pra colocar seu codigo. Olha como o meu post ficou bonitinho: #include <stdio.h> #include <stdlib.h> int GetInt() { int inteiro; scanf("%d", &inteiro); return inteiro; } int main() { printf("me diga quantas garrfas de refri voce consegue beber:\n"); int n1 = GetInt(); if(n1<1) { printf("Desculpe. Tente novamente: %d\n", n1); return (0); } while(n1>1) { printf("%d copos de refri no muro\n",n1); printf("%d copos de refri",n1); n1--; printf("bebo um, jogo no lixo\n"); printf("%d copos de refri no muro\n",n1); } if(n1 == 1) { printf("%d copo de refri no muro\n",n1); printf("%d copo de refri",n1); n1--; printf("bebo um, jogo no lixo\n"); printf("%d copo de refri no muro\n",n1); } if(n1 == 0) { printf("Fim da musica chata\n"); } return (0); }
  19. desculpa, mas posso dar uma dica? você deve tá curioso por causa de criptografia... Mas olha, tenta comecar fazendo isso em base 2, porque ai consegue melhorar a coisa no futuro. Colocando multiplicacao e mesmo logaritmo. A arquitetura do funcionamento da maquina permitira você visualizar outra formar de operar usando >> e << nas multiplicacoes e divisoes por dois de forna mais rapida. pe por causa disso? ai = i >= 0 ? a[i] - '0' : 0; Procura por operadores ternarios
  20. Ué cara! já mudou a linguagem? O forum é livre. Irá receber a ajuda de muita gente. Mas realmente C# não é meu foco a uns 15 anos. Pode mostrar, mas possivelmente não tenho como ajudar. Boa sorte pra você.
  21. vou te mostrar só o começo. O resto é contigo. #include <stdio.h> typedef struct { float preco; char* marca; char* modelo; char* placa; } Carro; int imprimeCarro(Carro *exemplo) { printf("marca:%s \t modelo:%s \t placa: %s \t preço: %.2f \n", exemplo->marca, exemplo->modelo, exemplo->placa, exemplo->preco); return 1; } int main() { // como guardar variaveis no novo tipo de dado que inventou: Carro exemplo; exemplo.preco=35000.0; exemplo.marca="MotoLouca"; exemplo.modelo="1970"; exemplo.placa="ABC-7777/RJ"; //pra imprimir deve colocar os especificadores %s para strings conhecer outros printf("marca:%s \t modelo:%s \t placa: %s \t preço: %.2f \n", exemplo.marca, exemplo.modelo, exemplo.placa, exemplo.preco); // só pra dar uma ideia do que é loop ou laço de repetição e função Carro ex1[2]; ex1[0].preco=25000.0; ex1[0].marca="MotoVeia"; ex1[0].modelo="1960"; ex1[0].placa="ABC-9999/RJ"; ex1[1].preco=15000.0; ex1[1].marca="MotoFoda"; ex1[1].modelo="1990"; ex1[1].placa="ABC-0000/RJ"; int tm = sizeof(ex1)/sizeof(Carro); for(int i=0; i<tm; i++) { imprimeCarro(&ex1[i]); } return 0; }
  22. Entendo. Até acho lógico. Mas em se tratando de custo e beneficio, eu não me importaria de vender mais barato. O que eu quero é evitar problemas na instalação, manutenção... Eu imagino que todo mundo esteja em suas empresas, com computadores super potentes e com todos os recursos maravilhosos. Mas justamente por causa desse tantao de potencia, recursos e opções que estou tendo problemas. Olha esse exemplo... imagina você, tendo vários programas já funcionando direitinho. Ai chega um cara com um programa que foi feito utiizando uma lib que você não tem. Ai você instala. e.... dá ***** porque os outros começam a dar problemas por causa de incompatibilidade das dependencias que o meu programa exigia. Aqui mesmo em casa eu parei de instalar libs novas porque direto elas entram em conflito umas com as outras. Eu poderia fazer usando sockets e web com isso: http://tivideotutoriais.blogspot.com/2014/11/javascript-puro-para-desenvolvimento-de.html http://tivideotutoriais.blogspot.com/2013/07/htmleditor-em-javascript.html mas isso me obrigaria a criar mais coisas... to querendo evitar isso. E usar um tomcat ou outro qualquer para algo simples me tomarira muito tempo. Essas coisas muito robustas são legais de trabalhar, mas quando se está em uma empresa, com uns 4 pra ajudar. No momento estou sozinho e não to pensando em largar esse projeto pra me unir a ninguem. Acho que a ideia que estou tendo tem potencia, mas preciso contornar esse problema da interface grafica de algum modo que não me cause problemas nem que me leve a ficar quebrando cabeça. por isso imagino que outros também devem ter tido essas mesmas sacadas que estou tendo e acho bem possivel que ainda exista gente da velha guarda por ai.
  23. o computador guarda dados de duas formas... Em disco e em memoria. No caso da memória, ela tem endereços. tudo que se salva vai para algum endereço na memoria. Mas quando se faz esses ponteiros, isso significa que nesse momento você tem o interesse em trabalhar com segmentos desses endereços que vão guardar conteudo que deseja. Qualquer variavel possui endereço namemoria, que pode ser obtido colocando um & na grente. Mas quando você coloca * na frente, está dizendo que irá usar uma sequencia desses endereços pra guardar algo. isso é muito util na programação em c porque você consegue ter uma ordem e saber onde estão cada pedaço das variaveis que guardou porque elas estão em sequencia. Quando se faz o ponteiro, quer dizer que vai usar uma sequencia desses endereços pra guardar algo. Esse ponteiro vai te ajudar a trabalhar, por exemplo, com strings... que é um vertor (matriz linear, ou array) de char(caracteres). então, ao fazer algo assim: char *p = "olá!"; você está reservando na memoria um espaço com 4 chars Ou assim, também funciona: tipoDeDado *p; p = malloc(tamanho); você reserva um espaço do tamanho (inteiro) que desejar. OBS: Mas sempre que usar malloc, deve-se lebrar de usar o free antes de terminar o programa, porque se não o espaço vai ficar cheio e sinalizado que não pode ser usado por nenhum outro programa. Esse espaço só vai ser iberado se desligar seu PC e ligar de novo... o que não é muito util. E algo assim, a todo momento, vai fazer o computador ficar mais lento. Agora, esses segmentos podem ser acessados se você souber pegar o endereço desses ponteiros ou de uma variavel qualuqer. Que é utilizando o caractere '&'. Então, para qualquer variavel que criar, mesmo que seja ponteiro, se quiser saber onde está essa variavel no endereço de memoria basta fazer isso: Se quiser, pode fazer endereco++ para pegar o endereço do compartimento seguinte. int endereco = &p; que vai lhe dar o endereço do primeiro compartimento do seguimento que criou em *p, por exemplo. No caso se fizer endereço ++, vai para o endereço do caractere 'l' da string olá!. Bem... é claro que essa é uma explicação muito superficial. Estou certo de que outros podem dar explicações melhores e mais robustas, mas no geral isso funciona pra mim.
  24. Tenho achado muito complicado trabalhar com interface gráfica. Mas estou tentado a usar esses recursos, como nos anos 80. Programas assin ainda tem saida no mercado? Eu penso que se eu for usar algo assim, só perco porque não posso usar a mesma tela para visualização de fotos, mas me parece tão funcional quanto qualquer outro programa. A ideia é a possibilidade de se o cliente quiser ver uma foto, eu fazer o sistema abrir essa foto utilizando o proprio visualizador do so do cliente. alguém ainda faz programas assim e se tem sucesso em suas vendas? Meu objetivo não é beleza, algo que parece ser muito observado ultimamente diante do que encontro nos locais que vou. Pessoalmente acredito na funcionalidade, rapidez de instalação e manutenção e isso pra mim bastaria. Mas como opinião de quem produz não vale, e sim a do mercado, quanto eu perderia em valor de venda (%) trocando a interface gráfica por um software que roda em terminal? alguém ai tem essa experiencia pra compartilhar? // https://en.wikipedia.org/wiki/ANSI_escape_code #include <stdio.h> #include<stdio.h> void gotoxy(int x,int y) { printf("%c[%d;%df",0x1B,y,x); } int main(void) { int i, j, n; for (i = 0; i < 11; i++) { for (j = 0; j < 10; j++) { n = 10*i + j; if (n > 108) break; printf("\033[%dm %3d\033[m", n, n); } printf("\n"); } gotoxy(15,15); //reposition cursor printf("hello world\n"); //display text return 0; }
  25. // https://en.wikipedia.org/wiki/ANSI_escape_code #include <stdio.h> #include<stdio.h> void gotoxy(int x,int y) { printf("%c[%d;%df",0x1B,y,x); } int main(void) { int i, j, n; for (i = 0; i < 11; i++) { for (j = 0; j < 10; j++) { n = 10*i + j; if (n > 108) break; printf("\033[%dm %3d\033[m", n, n); } printf("\n"); } gotoxy(15,15); //reposition cursor printf("hello world\n"); //display text return 0; } Quais as chances de vender um programa com o grafico como os dos anos 80? A vontade é essa, mas ai não poderia imprimir imagens na tela, em casos de mostrar imagens de pessoas ou produtos

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!