Ir ao conteúdo
  • Cadastre-se

codigo rapido

Membro Pleno
  • Posts

    275
  • Cadastrado em

  • Última visita

Tudo que codigo rapido postou

  1. existe uma pequena falha ai, fica de exercicio pra você melhorar, mas no geral é isso ai: #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int numero; // semente pra não serem os mesmos numeros sempre: srand ( time(NULL) ); int escolhi=rand()%9; escolhi+=1; // porque não vale zero... //printf("%d\n", escolhi); printf("\nVamos jogar... Descubra que numero estou pensando de 1 a 10."); do { printf("\nDigite: \n"); scanf ("%d", &numero); if(numero>escolhi) printf("\nÉ menor\n"); if(numero<escolhi) printf("\nÉ maior\n"); } while(escolhi!=numero); printf("\nAcertou!\nMinha vez...\n"); printf("\nVamos jogar... Escolha um numero de 1 a 10..."); printf("\nPronto? Digite 1 para sim:\n"); while(numero!=1){ scanf ("%d", &numero); } int limiteMenor=1; int limiteMaior=10; int chute = 5; int c; do { printf("eu chuto que é: %i\n" "É menor? digite 1\n" "Acertei? Digite 2\n" "É maior? Digite 3\n\n", chute); scanf ("%i", &c); if(c==3) { limiteMenor=chute; } else if(c==1) { limiteMaior=chute; } else if(c==2) break; chute = limiteMaior-limiteMenor; chute= (rand()%chute)+1;// pra não ser zero chute+=limiteMenor; }while(c==1 || c==3); return 0; }
  2. #include <stdio.h> #include <stdlib.h> int main() { int i, j, a=60, total, parcial, dependentes,invalido; int *idade; int EmesmoMenorComCerteza =0; printf("\nInforme o numero de dependendes menores de 18: "); scanf ("%d", &dependentes); // para cada malloc, deve ter um free idade = malloc(dependentes*sizeof(int)); for (j=0; j<dependentes; j++) { printf("\nIdade do dependente: "); scanf("%d", &idade[j]); if ((0<idade[j])&&(idade[j]<19)) { EmesmoMenorComCerteza++; printf("\nA receber de auxilio por dependente: RS %d,00", a); } } total= a*EmesmoMenorComCerteza; printf("\nO total a receber de auxilio e de: RS %d\n", total); // um free aqui free(idade); return 0; } Esses enunciados desses professores atualmente são estranhos... Mas tá ai como poderia funcionar.
  3. Ok... é certo que é esse... tem como eu usar isso que já tem instalado chamando dos meus programas?
  4. como chegaram primeiro, apenas deixo uma dica pra agilizar sua vida. use testes pra você não precisar ficar digitando na mão. lembre-se que o resultado dos problemas depende da ordem em que entram os dados. Pra ver tudo isso e fazer mais rápido tente usar testes assim: #include <stdio.h> int main() { // ordem de entrada: char *nomes[3] = {"huguinho", "zezinho" , "luisinho"}; // teste que representa a ordem das idades dadas // se a primeira coluna for h, segunda z, e terceira l: int array[6][3] = { {0, 1, 2}, {0, 2, 1}, {1, 0, 2}, {1, 2, 0}, {2, 0, 1}, {2, 1, 0} }; int h; int z; int l; for (int i=0; i<6; i++) { h = array[i][0]; z = array[i][1]; l = array[i][2]; if( (h<z && z<l) || (l<z && z<h) ) { printf("%s\n", nomes[1]); } else if( (h<l && l<z) || (z<l && l<h) ) { printf("%s\n", nomes[2]); } else if( (z<h && h<l) || (l<h && h<z) ) { printf("%s\n", nomes[0]); } } return 0; } Ou como preferir...
  5. eu acho que já fiz esse joguinho, mas faz um 25 anos... esses exemplos bem simples podem dar uma ajuda pra você começar: https://tivideotutoriais.blogspot.com/2020/03/exercicios-antigos-em-linguagem-c.html tem muitos anos que fiz esses exemplo e achei a uns poucos e postei ai. você mesmo tem que dar o começo. você cria o espaço dos sorteios de 1 a 100 por exemplo... você tem que escolher aleatoriamente um valor e esperar o chute do usuário... no caso quando é o computador quem está jogando, ele faz algo mais ou menos assim: ele joga de cara 50. o programa retorna se é maior ou menor. no caso, fazendo de conta que é menor, ele vai chutar 25. Se a resposta for maior, então você sabe que é um numero que está entre 25 e 50. Isso se faz ate que se encontre o numero.
  6. nossa... faz tempo que não uso windows, mas ja tive um problema parecido com esse e eu resolvi ele jogando essas libs dentro do direitorio de libs do windows de forma que o programa a encontrava. Talvez precise indicar o caminho dessas libs nas variaveis de ambiente. Já pesquisou sobre isso? DLLs e variaveis de ambiente do windows
  7. Olá pessoal, Estou utilizando o Ubunto... Existe alguma forma de se utilizar a interface gráfica nativa do SO em C? como vcs fazem isso? por exemplo uma janela? Se eu precisar baixar novas libs, acho que será melhor fazer um layout web e usar sockets pra fazer isso sem depender de lib nenhuma. Meu medo é usar alguma lib agora e na hora ir em algum usuário que tem outro sistema e ele tentar fazer atualização pra essa lib e dar erros. Eu já passei por constrangimento por causa de falhas nessas libs de interfaces gráficas e estou com receio de passar de novo. São muitas libs e muitas versões que podem dar conflito. printf("Obrigado pela atenção, pessoal!");
  8. Olá pessoal, vcs podem indicar links de bons exemplos sobre mutex? encontrei o seguinte exemplo e achei bem legal: #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #define NUM_THREADS 4 int shared = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; void *func3(void* param) { pthread_mutex_lock(&mutex); printf("Incrementing the shared variable...\n"); for (int i = 0; i < 10000; ++i) { shared += 1; } pthread_mutex_unlock(&mutex); return 0; } int main() { pthread_t threads[NUM_THREADS]; for (int i = 0; i < NUM_THREADS; ++i) { pthread_create(&threads[i], NULL, func3, NULL); } for (int i = 0; i < NUM_THREADS; ++i) { pthread_join(threads[i], NULL); } printf("%d\n", shared); return 0; } estou desenvolvendo um programinha que vai receber conexoes via socket. Poucos computadores, então não vou utilizar banco de dados. Será simples. Mas a questão é que a concorrencia certamente acontecerá na hora de escrever nos arquivos. Como é tudo manual, mesmo o servidor e o banco de dados, o que acham disso? a ideia é que pra listar e editar eu não precisarei me preocupar, pois farei lock otimista. No caso da edição, se encontrar um timestamp alterado, envia mensagem para quem estiver editando que o dado já foi alterado por outro usuário e ele precisara fazer reload dos dados. E na listagem... não existe preocupação porque não vai alterar nada nos arquivos, posso utilizar tudo o que já estiver alocado na memoria naquele momento e enviar pro usuário sem medo. Nos outros casos, usarei mutex para segurar os que chegarem depois. As minhas duvidas, como nunca trabalhei dessa forma, são com os possiveis tipos de problemas que irei ter com a concorrencia de theads na leitura e gravação dos arquivos.
  9. Obrigado, Lucca! Eu sei que não existem recursos como reflection em C, mas como a linguagem é bem conhecida e relevante imagino que algo semelhante ou uma construção dinâmica seja feita pelos mais experientes. Sua sugestão já ajuda bastante. Obrigado! Em em se tratando de umas 200 variaveis, eu terei que encontrar uma forma mais organizada e fácil de contornar minhas falhas nesse ponto.
  10. char buffer[tamanho]; snprintf(buffer, tamanho, "%lli\t%i\t%s\t%... grande a lista...", a, b, c, d, e... muitas variaveis); Eu tenho muitas variaveis que eu queria colocar numa string chamada buffer. So que esses parametros como %s, %i, %lli e etc não seguem um padrão, mas eles são necessários, pelo menos para o comando snprintf. O fwrite também tem essa obrigação? Parece que sim, e isso pra mim é um convite ao erro.... e eu sou mané... tenho aceitado o convite toda hora... Isso é algo que pode dificultar a manutenção se o programa crescer e necessitar de uma variavel em uma posição. No meio desse tanto de letrinha tá complicado pra mim que só uso o GEdit e o gcc em linha de comando. Existe algum comando que torne esses "%XXX" em algo "%generico" pra colocar tudo na string? provavelmente vcs mais evoluidos que eu na linguagem utiliza algum comando ou recurso além do meu conhecimento. Obrigado pela atenção de todos
  11. Eu quem agradeço. Eu não lembrava disso. Usei essa lib pra fazer joguinhos. Mas acho que a resposta do if é mais simples e elegante. Serviu pra mim adquirir conhecimento. Sucesso ao senhor.
  12. Eu usava uma biblioteca chamada Allegro. Talvez possa te ajudar.
  13. Eu percebi que ele quer é alem do que postamos. É palavra. E não apenas string o que ele quer. Midori foi muito bom observador. As vezes eu pego a questão e coisas assim me passam desapercebidas.
  14. você pode usar o comando strleng assim: int tm = strleng(suastring) Ou simplesmente fazer um laço for: int i=0; for(; suastring[i]!='\0'; i++) { } o i é o resultado que busca Sucesso pra você Desculpa... ficou parecendo que eu copiei de você. Não tinha o post na hora que eu postei vi que o seu já tinha entrado.
  15. Não percebe que se você já fez um laço for pra usar esses fgets não vai mais precisar de fseek?
  16. você não sabe o que um fseek faz? moço, você mesmo quem passou um codigo com isso pra mim. E sem eu te pedir... e de novo... eu fui especifico que eu procuro um comando equivalente ao fseek, mas que me permita parar o cursor apenas sobre o enézimo '\n' dado... Não tem como melhorar isso. O uso de fseek para posicionar o leitor em um ponto do arquivo permite que esse método seja mais rápido do que eu ficar passando a toda hora por todas as linhas anteriores a uma x linha dada. Então se eu falei de fseek é porque eu quero algo que funcione de forma equivalente. Algo que vá direto ao ponto. Em quê isso se assemelha a um fgets? Nada! E isso tem até logica: O fseek, alem de parar num ponto especifico dado, ele não testa caracteres. Ele simplesmente os pula para o ponto dado. Qualquer outro comando, mesmo que seja para parar exatamente sobre o '\n' dado terá que testar caractere por caractere, até encontrar o desejado, mesmo que seja para mapea-lo em algum momento, como eu mesmo sugeri que poderia ser criado comando assim. Não tem nada a ver com o que eu perguntei. E sua resposta só mostra uma coisa: As coisas foram definidas assim em C por um motivo... E isso faz diferença sim, principalmente no que se refere a utilidade. isso vai influenciar na escolha dos comandos que irá utilizar. Ou você vai querer utilizar um printf de qualquer parte de dentro de arquivo binário pro usuário? se você falar que sim porque não faz diferença entre arquivo texto de binario... Então podia ser o bin compilado ou o .txt ou .c fonte... se isso for relevante, como é para as coisas que eu perguntei, você falaria que era o binario ou o fonte... Mas veja... não foi o que eu perguntei. Mas mesmo assim vou te dar a dica, aprende: todo o arquivo texto é binário, mas nem todo arquivo binario é texto. Por isso não faz sentido falar de certos comandos de tratamento de texto para arquivos que são binarios. Então não venha com baboseiras genéricas porque eu não to fazendo outra linguagem. Eu to estudando C. Não é Java, não é C++, não é assembly... É C e ponto! Então aceite que para a linguagem faz direfença sim cada um desses detalhes que você inciste em discutir.
  17. Obrigado a todos pelas respostas! Mas pelo que eu li, infelizmente isso que estou querendo não é possivel em C. Não existe como o cursor, como um fseek, parar sobre um "\n" especifico. Eu seria obrigado a ter mapeado todas as quebras de linha. A solução para mim é fazer como o convencional do fseek e tratar os dados de outro modo.
  18. o que você já fez pra pelo menos mostrar cada char da string de cada vez? Sabe o que é um scanf? sabe o que é um printf e como usar? sabe fazer um loop no array da string? subi no onibus
  19. Mas ele tá lá, cadastrado? porque se for isso, então é mesmo o tamanho do seu array que tá errado. Faz um print no momento que você cadastra pra tentar puxar e ver. As vezes eu erro isso também. Pra arrumar isso talvez vai ter que colocar um "+1" ou "-1" em algum lugar... usa breakpoint no final dos metodos (loops) que interagem com essa variavel. Ai você vai descobrir se tem que subtrair ou adicionar 1
  20. para ler: fscanf(arquivo , " %*[^\n]"); para gravar: answer = fscanf(arquivo , " %[^\n]" , &buff[0]); Não sei se isso funciona com fseek... O fseek posiciona o cursor pra leitura e gravação num ponto no arquivo. veja: fseek(file, (registro - 1) * LENGTH_LINE, SEEK_SET); No caso, todas as linhas são obrigatoriamente do mesmo tamanho LENGTH_LINE. Supondo que o ponto em que o cursor para é = (registro - 1) * LENGTH_LINE a posição em que o cursor pula é de 'LENGTH_LINE' em 'LENGTH_LINE'. Isso acelera muito as leituras e gravacões. O comando para posicionar o cursor sobre o primeiro caractere logo após o 3º '\n' é qual? O fseek também é capaz de posicionar o cursor apos, por exemplo, o 3º '\n'? Então eu queria saber se de alguma forma o fseek ou outro comando faça o equivalente, mas com o 'passo' dependendo da posição de cada '\n'. Exemplo: fseek(file, registro_Numero_x_depois_de_barra_n, SEEK_SET);
  21. tenho a seguinte linha para ler um txt: fseek(file, (registro - 1) * LENGTH_LINE, SEEK_SET); fseek é para ler conjuntos de bytes de tamanho LENGTH_LINE. Onde o inicio do proximo se dá de acordo com (registro - 1) * LENGTH_LINE. Existe algum comando que mova o cursor, equivalente ao fseek, que leia os dados entre cada '\n' ?
  22. você usa breakpoint? Ou pelo menos coloca print pra procurar em que momento isso está acontecendo? Isso acontece comigo quando eu uso um ponteiro de forma errada ou algum ponteiro para um array está sendo lido além do tamanho dele.
  23. obrigado! não consigo escrever uma resposta melhor porque o site parece com problemas. Obrigado! É isso mesmo! Na verdade não pretendo fazer isso. Eu estou fazendo um servidor bem simples com base no tiny.c que encontrei e me veio essa preocupação. A preocupação pra mim então é só com o sql injection. Isso pra mim é fácil. Muito obrigado pelas dicas!
  24. Olha isso: #include <stdio.h> int main() { float matriz[4][3]; //char *s = (float *) malloc(10*3*sizeof(float)); // se não usar malloc: char s[255]; printf("Cole os valores:\n"); gets(s); printf("\n"); //cole os dados: //62.0 66.0 2.1, 59.0 113.2 1.3, 47.0 94.2 1.7, 21.0 85.2 2.0 sscanf(s, "%f %f %f, %f %f %f, %f %f %f, %f %f %f", &matriz[0][0],&matriz[0][1],&matriz[0][2], &matriz[1][0],&matriz[1][1],&matriz[1][2], &matriz[2][0],&matriz[2][1],&matriz[2][2], &matriz[3][0],&matriz[3][1],&matriz[3][2] ); for(int i=0; i<4; i++) { for(int j=0; j<3; j++) { if(j==0) printf("%0.0f ", matriz[i][j]); else printf("%0.1f ", matriz[i][j]); } printf("\n"); } //free(s); // se usar malloc return 0; } Não tá completo, não é exatamente como definiu, mas é só adaptar o exemplo para o que quer.

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!