Ir ao conteúdo

kgin

Membro Pleno
  • Posts

    386
  • Cadastrado em

  • Última visita

Tudo que kgin postou

  1. @Lipeco Eu recomendo você começar fazendo tudo no arquivo principal, pra só depois migrar o código para um arquivo externo. exemplo #include <stdio.h> #include <stdlib.h> typedef struct icone { short int **pixels; // matriz representando imagem do ícone int tamanho; // número de linhas e colunas da matriz da imagem }Icone; Icone * icone_cria(int tam); void icone_imprime(Icone *ic); int main(void) { Icone *p = icone_cria(10); if (p == NULL) { perror("Erro não foi possível reservar memoria"); exit(EXIT_FAILURE); } p->pixels[0][0] = 0; icone_imprime(p); return 0; } Icone *icone_cria(int tam) { int linhas, colunas; Icone *objeto = malloc(sizeof(Icone)); if (objeto != NULL) { /* Cria as linhas */ objeto->pixels = malloc(sizeof(short int*)*tam); if (objeto->pixels != NULL) { /* Cria as colunas */ for (linhas = 0; linhas < tam; linhas++) { objeto->pixels[linhas] = malloc(sizeof(short int)*tam); if (objeto->pixels[linhas] == NULL) { free(objeto->pixels); free(objeto); return(NULL); } } /* Limpa os ponteiros */ for (linhas = 0; linhas < tam; linhas++) { for (colunas = 0; colunas < tam; colunas++) { objeto->pixels[linhas][colunas] = 1; } } objeto->tamanho = tam; return(objeto); } else { free(objeto); } } return(NULL); } void icone_imprime(Icone *ic) { int linhas, colunas; for(linhas=0; linhas < ic->tamanho; linhas++) { for(colunas=0; colunas < ic->tamanho; colunas++) { if (ic->pixels[linhas][colunas] == 1) { printf(" "); } else { printf("@"); } } printf("\n"); } } dessa maneira fica mais simples de testar. De nomes mais significativos para as variáveis. se você conseguir adicione essa flag de compilação no codeblocks para identificar vazamentos de memoria mais rapidamente -fsanitize=address Se você poder fazer tudo com um bloco só de memoria fica mais fácil de procurar por erros exemplo
  2. O processador tem como fazer oveclocking, mas pelo fato dessa placa que você postou ser feita com restos de placas mãe de servidor. É praticamente impossível saber se dá pra fazer oveclock com esse conjunto, mas a maioria dessas placas vão rodar o processador em clock base. Então resumindo nada de overclock. Se vai comprar mesmo, então pesquise mais um pouco e tente achar um kit que alguém já comprou que tenha como fazer overclock. Já passou várias dessas placas na minha mão e a maioria das x99 que peguei não tem essa opção, mas já muitas x79 que tem (fora que memória DDR3 está "barata").
  3. @Vinicius Deroma Depende do que você já tem. esses kits são bons pra quem já tem um pc e esta precisando de um upgrade barato, mas se você vai começar do zero de preferência a uma plataforma nova (principalmente se você vai jogar). Esses xeons são muito bons para trabalhar, renderizar, trabalhar com geometria e produção musical. Mas a maioria dos jogos eles tem problema de multi-core.
  4. kgin

    Java Jogo Da Velha em Java

    @Nozdog Faça o seguinte Crie um vetor e guarde todas as posições possíveis. Embaralhe o vetor com o algoritmo fisher yates. Percorra o vetor para buscando uma jogada possível. Para achar uma jogada possível divida o valor do vetor pela quantidade de linhas, com o quociente em mão você vai ter a linha da jogada. Faça o mesmo processo para achar a coluna da jogada, mas só que dessa vez você utiliza o resto da operação. Exemplo int linha = locais[contador]/3; int coluna = locais[contador]%3; Exemplo de simulação em C #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <time.h> /* Constantes */ #define Q_LINHAS 3 #define Q_COLUNAS 3 /* Valores dos objetos no jogo */ enum t_objetos { VAZIO, CRUZ, BOLA, VELHA }; void limpaTabuleiro(enum t_objetos t[][Q_COLUNAS]); int validaJogada(enum t_objetos t[][Q_COLUNAS], int linha, int coluna); enum t_objetos verificaVitoria(enum t_objetos t[][Q_COLUNAS]); int main(void) { enum t_objetos tabuleiro[Q_LINHAS][Q_COLUNAS], vez = CRUZ; int locais[Q_LINHAS*Q_COLUNAS], contador, linhas, colunas; char opcao; /* Inicia o gerador de numeros aleatorios */ srand(time(NULL)); do { /* Limpa o tabuleiro */ limpaTabuleiro(tabuleiro); /* * Inicia o local das jogadas * Coloca todos os locais das jogadas em sequencia */ for (contador = 0; contador < Q_LINHAS*Q_COLUNAS; contador++) { locais[contador] = contador; } /* * Embaralha o local das jogadas * Com o algoritmo Fisher Yates */ for (contador = 0; contador < Q_LINHAS*Q_COLUNAS; contador++) { int indice = rand()%(Q_LINHAS*Q_COLUNAS); int temporario = locais[contador]; locais[contador] = locais[indice]; locais[indice] = temporario; } /* Faz as jogadas */ do { contador = 0; while (contador < (Q_LINHAS*Q_COLUNAS)) { if (validaJogada(tabuleiro, locais[contador]/Q_LINHAS, locais[contador]%Q_COLUNAS)) { /* Coloca a jogada no tabuleiro */ tabuleiro[locais[contador]/Q_LINHAS][locais[contador]%Q_COLUNAS] = vez; if (vez == CRUZ) { vez = BOLA; } else { vez = CRUZ; } break; } contador++; } } while (verificaVitoria(tabuleiro) == VAZIO); /* Mostra o tabuleiro */ for (linhas = 0; linhas < Q_LINHAS; linhas++) { for (colunas = 0; colunas < Q_COLUNAS; colunas++) { switch (tabuleiro[linhas][colunas]) { case VAZIO: if (linhas < Q_LINHAS-1) { printf("_"); } else { printf(" "); } break; case CRUZ: printf("X"); break; case BOLA: printf("O"); break; } if (colunas < Q_COLUNAS-1) { printf("|"); } } printf("\n"); } switch (verificaVitoria(tabuleiro)) { case CRUZ: printf("Vitoria da cruz!\n"); break; case BOLA: printf("Vitoria da bola!\n"); break; case VELHA: printf("Ninguem ganhou!\n"); } printf("\n"); printf("Rodar a simulacao novamente\nS|N:"); scanf("%c%*c", &opcao); } while (toupper(opcao) == 'S'); return(0); } void limpaTabuleiro(enum t_objetos t[][Q_COLUNAS]) { int linhas, colunas; for (linhas = 0; linhas < Q_LINHAS; linhas++) { for (colunas = 0; colunas < Q_COLUNAS; colunas++) { t[linhas][colunas] = VAZIO; } } } int validaJogada(enum t_objetos t[][Q_COLUNAS], int linha, int coluna) { if (t[linha][coluna] == VAZIO) { return(1); } return(0); } enum t_objetos verificaVitoria(enum t_objetos t[][Q_COLUNAS]) { int linhas, colunas, contador; enum t_objetos objeto; /* Verifica as linhas */ for (linhas = 0; linhas < Q_LINHAS; linhas++) { objeto = t[linhas][0]; contador = 1; for (colunas = 1; colunas < Q_COLUNAS; colunas++) { if (objeto == t[linhas][colunas]) { contador++; } } if (contador >= Q_LINHAS) { if (objeto != VAZIO) { return(objeto); } } } /* Verifica as colunas */ for (colunas = 0; colunas < Q_COLUNAS; colunas++) { objeto = t[0][colunas]; contador = 1; for (linhas = 1; linhas < Q_LINHAS; linhas++) { if (objeto == t[linhas][colunas]) { contador++; } } if (contador >= Q_LINHAS) { if (objeto != VAZIO) { return(objeto); } } } /* Verifica diagona esquerda */ objeto = t[0][0]; contador = 1; for (linhas = 1, colunas = 1; linhas < Q_LINHAS||colunas < Q_COLUNAS; linhas++, colunas++) { if (objeto == t[linhas][colunas]) { contador++; } } if (contador >= Q_LINHAS) { if (objeto != VAZIO) { return(objeto); } } /* Verifica diagona direita */ objeto = t[Q_LINHAS-1][0]; contador = 1; for (linhas = Q_LINHAS-2, colunas = 1; linhas > 0||colunas < Q_COLUNAS; linhas--, colunas++) { if (objeto == t[linhas][colunas]) { contador++; } } if (contador >= Q_LINHAS) { if (objeto != VAZIO) { return(objeto); } } /* Verifica velha */ contador = 0; for (linhas = 0; linhas < Q_LINHAS; linhas++) { for (colunas = 0; colunas < Q_COLUNAS; colunas++) { if (t[linhas][colunas] != VAZIO) { contador++; } } } if (contador == (Q_LINHAS*Q_COLUNAS)) { return(VELHA); } return(VAZIO); } você pode testar o programa no link abaixo https://onlinegdb.com/U-lTNT4xF Infelizmente eu não sei java
  5. Eu recomendaria você fazer em uma linguagem de programação (ou em powershell), porque batch e uma tristeza no conceito organização. O meu exemplo que eu postei estava errado Na linha que cria a pasta eu coloque um comando linux (eh costume). Aqui está o exemplo final exemplo.zip testei no windows Xp dessa vez.
  6. @Johny1711 O nome do que você está procurando se chama mysys2 (eu acho que o chocolatey faz a mesma coisa), mas provavelmente não vai funcionar com o DevC++
  7. Poste o enunciado para ficar mais fácil de entender o que você está tentando fazer.
  8. @Swalls Na minha mente (insana) ficaria melhor assim :: Inicia o script @echo off :: Ativa os recursos do batch setlocal EnableDelayedExpansion :: Variaveis globais set "N_PASTA_ARQUIVOS=Tralhas_que_eu_nao_uso" :: Chama a função principal call :_main goto :eof :: Função principal :_main setlocal :: Checa se a pasta dos arquivos existe if not exist %N_PASTA_ARQUIVOS% ( mkdir %N_PASTA_ARQUIVOS% ) :: Encontra todos os arquivos na pasta call :buscaArquivosExtensao png.txt,png,quantidade :: Move para a nova pasta if quantidade gtr 0 ( for /F "delims=" %%a in (png.txt) do ( move %%a "%N_PASTA_ARQUIVOS%\" ) echo %quantidade% arquivos movidos para %N_PASTA_ARQUIVOS% :: Apaga o arquivo temporario com os nomes dos arquivos del /F /Q png.txt ) else ( echo Nenhum arquivo com a extensão png foi encontrado ) endlocal exit /B 0 :: Fim da função principal :: Passe o nome do arquivo e a extensão dos arquivos a ser procurado :: O terceiro parametro da função passa a quantidade de arquivos :: encontrados. :buscaArquivosExtensao :: Cria o arquivos com os nomes de todos os arquivos encontrados if exist %~1 ( exit /B 0 ) type nul>%~1 :: Usado na contagem dos arquivos set /A contador=0 :: Busca os arquivos por extensão for %%a in (*) do ( :: Coloca os nomes dos arquivos no arquivo com os nomes if "%%~xa"==".%~2" ( echo %%a>>%~1 set /A contador+=1 ) ) set /A "%~3=!contador!" exit /B 0 não testei no windows para ver se funciona (na real eu abandonei o windows já faz tempo) só tenho maquinas com linux, mas eu tenho quase certeza que funciona. Para adaptar para um banco de dados (CSV) seria a mesma ideia que eu fiz percorrendo o arquivo temporario. Mas aí essa parte eu já não sei, talvez uma ajudinha do @ricardo_br faça a magica acontecer
  9. @Lichh Oi, seria melhor você fazer um record para salvar as informações do produto exemplo type t_produto=record nome:string; preco:real; quantidade:integer end; e depois criar um array para todos os produtos var produtos:array [1..4] of t_produto; bastando assim só atribuir cada produto no array { Inicia os produtos } produtos[1].nome:= 'Agua'; produtos[1].preco:= 1.50; produtos[1].quantidade:= 2; produtos[2].nome:= 'Suco'; produtos[2].preco:= 2.50; produtos[2].quantidade:= 5; produtos[3].nome:= 'Cola'; produtos[3].preco:= 2; produtos[3].quantidade:= 5; produtos[4].nome:= 'Achocolatado'; produtos[4].preco:= 1.70; produtos[4].quantidade:= 5; exemplo completo program Hell_lol; uses crt; const QUANTIDADE_PRODUTOS=4; type t_produto=record nome:string; preco:real; quantidade:integer; end; var produtos:array [1..QUANTIDADE_PRODUTOS] of t_produto; contador:integer; begin { Inicia os produtos } produtos[1].nome:= 'Agua'; produtos[1].preco:= 1.50; produtos[1].quantidade:= 2; produtos[2].nome:= 'Suco'; produtos[2].preco:= 2.50; produtos[2].quantidade:= 5; produtos[3].nome:= 'Cola'; produtos[3].preco:= 2; produtos[3].quantidade:= 5; produtos[4].nome:= 'Achocolatado'; produtos[4].preco:= 1.70; produtos[4].quantidade:= 5; writeln('Produtos no sistema'); for contador:=1 to QUANTIDADE_PRODUTOS do begin if produtos[contador]. quantidade >= 1 then begin writeln(contador, '-', produtos[contador].nome,' R$', produtos[contador].preco:2:2, ' restam ', produtos[contador].quantidade, ' produtos'); end else begin writeln(contador, '-', produtos[contador].nome,' R$', produtos[contador].preco:2:2, ' Este produto esta em falta'); end; end; writeln('Pressione enter para finalizar o programa'); readln; end.
  10. Na linha 7 onde você declarou a variável resposta você deveria usar o tipo cadeia ao invés do tipo caractere (que foi escrito errado). e nas linhas 12, 15, 21, 30, 39, 57 e 66, você escreveu o comando escreva errado, e também utilizou a maior parte dos comandos senão de forma errada.
  11. @JonasM1 Recomendo você utilizar um vetores para guardar as informações de cada carro, porque dessa maneira você vai repetir as mesmas informações pelo programa todo Um exemplo de como fazer com vetores algoritmo "SisCompraVenda" var carros:vetor [1..10] de caractere precos:vetor [1..10] de real quantidade_carros:inteiro opcao, contador:inteiro auxiliar:caractere inicio // Constantes do programa // Quantidade de carros no sistema quantidade_carros <- 10 // Nome dos carros carros[1] <- "Hilux" carros[2] <- "BMW" carros[3] <- "Celta" carros[4] <- "Onix" carros[5] <- "Camaro" carros[6] <- "Gol" carros[7] <- "Corolla" carros[8] <- "Panamera" carros[9] <- "Porsche 911" carros[10] <- "Porsche Macan" // Preço dos carros precos[1] <- 300000 precos[2] <- 350000 precos[3] <- 8000 precos[4] <- 200000 precos[5] <- 350000 precos[6] <- 10000 precos[7] <- 450000 precos[8] <- 500000 precos[9] <- 440000 precos[10] <- 230000 // Programa Principal repita // Menu principal repita escreval("1-Cadastrar senha") escreval("2-Entrar no sistema") escreval("3-Sair do programa") leia(opcao) se (opcao < 1) ou (opcao > 3) entao escreval("Opção invalida!") fimSe ate não ((opcao < 1) ou (opcao > 3)) escolha opcao caso 1 escreval("ainda não temos essa opcao") escreval("Pressione enter para continuar") leia(auxiliar) caso 2 // Menu do sistema de compras repita repita escreval("Seja bem vindo ao sistema de compra de veiculos") escreval("1-Comprar") escreval("2-Consultar") escreval("3-Voltar ao menu anterior") leia(opcao) se (opcao < 1) ou (opcao > 3) entao escreval("Opcao invalida") fimSe ate não ((opcao < 1) ou (opcao > 3)) escolha opcao // Compra do carro caso 1 escreval("Carros disponiveis no sistema") para contador de 1 ate quantidade_carros faca escreval("Codigo do carro[", contador, "]", carros[contador],":R$",precos[contador]) fimPara escreval("Ainda não estão a venda") escreval("Pressione enter para continuar...") leia(auxiliar) // Carros disponiveis no sistema caso 2 escreval("Carros disponiveis no sistema") para contador de 1 ate quantidade_carros faca escreval(carros[contador]) fimPara escreval("Pressione enter para continuar...") leia(auxiliar) caso 3 escreval("Voltando para o menu anterior...") fimEscolha ate opcao = 3 // impede o programa de terminar opcao <- 0 caso 3 escreval("Saindo do programa") fimEscolha ate opcao = 3 fimAlgoritmo As informações foram inseridas uma única vez no programa sem precisar repetir novamente. Outra mudança que seria interessante para o seu algoritmo seria utilizar o comando de seleção múltipla escolha para ficar um pouco mais organizado e dinâmico.
  12. @Luiz Campos Uma maneira melhor seria usando funções mesmo. exemplo algoritmo "nada" var listaPessoas:vetor [1..2] de caractere opcao:inteiro contador:inteiro tmp:caractere procedimento mostraLinha(tam:inteiro; car:caractere) var contador:inteiro; inicio para contador de 1 ate tam faca escreva(car) fimPara escreval("") fimProcedimento funcao menuPrincipal:inteiro var opcao:inteiro tmp:caractere inicio repita limpaTela mostraLinha(40, "-") escreval("Escolha uma das opções abaixo") mostraLinha(40, "-") escreval("1-mostrar nomes das pessoas no sistema") escreval("2-colocar o seu nome no sistema") escreval("3-Sair") mostraLinha(40, "-") leia(opcao) se (opcao < 1) ou (opcao > 3) entao escreval("Opcao invalida!") escreval("Pressione enter para continuar") leia(tmp) fimSe ate não((opcao < 1) ou (opcao > 3)) retorne opcao fimFuncao inicio listaPessoas[1] <- "Jose durval" listaPessoas[2] <- "Mario Bros" repita opcao <- menuPrincipal escolha opcao caso 1 mostraLinha(40, "#") limpaTela para contador de 1 ate 2 faca escreval("[", contador, "]-", listaPessoas[contador]) fimPara mostraLinha(40, "#") escreval("Pressione enter para continuar") leia(tmp) caso 2 mostraLinha(40, ">") escreval("Digite o seu nome") mostraLinha(40, "<") leia(listaPessoas[2]) caso 3 mostraLinha(40, "#") escreval("Tchau") mostraLinha(40, "#") fimEscolha ate opcao=3 escreval("Pressione enter para continuar") leia(tmp) FimAlgoritmo
  13. Pelo que eu vejo não é só isso, você teria que mostrar o tempo decorrido na tela. para mostrar o tempo decorrido @Thmpv você pode fazer algo assim. #include <stdio.h> #include <time.h> int main(void) { clock_t tempo_decorrido = clock(); printf("Pressione enter para ver o tempo decorrido desde que o programa foi iniciado\n"); getchar(); tempo_decorrido = clock()-tempo_decorrido; printf("O tempo decorrido em segundos foi %f\n", ((float)tempo_decorrido)/CLOCKS_PER_SEC); printf("Pressione enter para continar.\n"); getchar(); return(0); } link para testar
  14. Ele está assim porque você errou na hora de utilizar o comando escolha, ele em varias partes do seu algoritmo foi utilizado como o comado se..então.
  15. @Gabrielbxs Comece pelo simples, tente pegar as informações do livro e mostrar na tela. exemplo #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> /* Tamanho dos campos de dados */ #define TAMANHO_TITULO 255 #define TAMANHO_ISBN 20 /* Estrutura para guardar as informações do livro */ struct informacoes_livro { char titulo[TAMANHO_TITULO]; char isbn[TAMANHO_ISBN]; float preco; }; void mostraLivro(struct informacoes_livro livro); /* * Mostra as informações do livro. */ int pegaLivro(struct informacoes_livro *livro); /* * Pega as informações do livro via teclado. */ int main(void) { struct informacoes_livro livro; if (pegaLivro(&livro) == 0) { printf("Livro pego do usuario\n"); mostraLivro(livro); } else { printf("O usuario não cadastrou nenhum livro\n"); } printf("Pressione enter para continuar\n"); getchar(); return(0); } void mostraLivro(struct informacoes_livro livro) { printf("\tInformacoes do livro\n"); printf("Nome:%s\n", livro.titulo); printf("Isbn:%s\n", livro.isbn); printf("Preco:%.2f\n", livro.preco); } int pegaLivro(struct informacoes_livro *livro) { struct informacoes_livro temporario = {0}; char opcao = '\0'; do { /* Pega o titulo do livro */ printf("\tCadastro de livros\n"); printf("Digite o nome do livro:"); fgets(temporario.titulo, TAMANHO_TITULO-1, stdin); temporario.titulo[strlen(temporario.titulo)-1] = '\0'; /* Pega o isbn do livro */ printf("Digite o isbn do livro:"); fgets(temporario.isbn, TAMANHO_ISBN-1, stdin); temporario.isbn[strlen(temporario.isbn)-1] = '\0'; /* Pega o preço do livro */ printf("Digite o preco do livro:"); scanf("%f%*c", &temporario.preco); mostraLivro(temporario); /* Pergunta ao usuario se as informações estão corretas */ printf("As informações do livro estão corretas?\n"); printf("[S/N]:"); scanf("%c%*c", &opcao); if (toupper(opcao) == 'N') { printf("Deseja digitar as informações novamente?\n"); printf("[S/N]:"); scanf("%c%*c", &opcao); /* Sinaliza que não foi pego nenhum livro */ if (toupper(opcao) == 'N') { return(1); } else { opcao = '\0'; } } } while (toupper(opcao) != 'S'); *livro = temporario; return(0); }
  16. @rubiksHappy Isso era um bug na IDE, mas já foi resolvido a quase um mês atrás. Já tentou reinstalar o IDE? Sempre tem o lazarus-ide caso você estiver fazendo um projeto pessoal.
  17. @Ilanez Santos Recomendo você começar novamente tem muitos erros que não dá para ignorar por hora. um exemplo de como você pode estar fazendo. exemplo.zip
  18. Eu pensei que não deveria reescrever o algoritmo dele todo, então tentei manter o mais fiel possível.
  19. algoritmo "Exercicio 56" // Função : // Autor : // Data : 04/03/2022 // Seção de Declarações var contador, idade, homens, maior, mulher_jovem:inteiro resposta, sexo:caractere soma, media:real procedimento topo() inicio escreval("---------------------------") escreval(" IBGE ") ESCREVAL("---------------------------") fimprocedimento inicio contador<-0 resposta<- "sim" homens<-0 mulher_jovem <- 99 soma<-0 media<-0 enquanto (resposta = "sim") faca topo() escreval("Qual o seu sexo? [M] MASCULINO, [F] FEMININO:") leia(sexo) escreval("Qual a sua idade?") leia(idade) se idade > maior entao maior <- idade fimse se sexo = "m" entao homens <- homens+1 media <- media+idade senao se mulher_jovem > idade entao mulher_jovem <- idade fimse fimse contador<- contador + 1 Escreval("deseja continuar?") leia(resposta) limpatela fimenquanto escreval("Total de pessoas no sistema:", contador) se homens > 0 entao media <- media/homens escreval("tem ", Homens," homens") escreval("A media da idade dos homens:", Media) senao escreval("não foi registrado homens no sistema") fimse escreval("Maior idade lida:", maior) se mulher_jovem < 99 entao escreval("A mulher mais jovem:", mulher_jovem) senao escreval("não foi registrado mulheres no sistema") fimse fimalgoritmo
  20. @Leucosia Utilize o algoritmo de bubble sort para organizar o vetor, e depois imprimi-lo. Exemplo #include <stdio.h> #define QUANTIDADE 10 int numeros[QUANTIDADE] = { 43, 55, 4, 21, 68, 53, 14, 32, 11, 10 }; void bolha(int *n, int q_numeros); int main(void) { int contador; printf("Numeros sem organizacao\n"); for (contador = 0; contador < QUANTIDADE; contador++) { printf("%i, ", numeros[contador]); } putchar('\n'); bolha(numeros, QUANTIDADE); printf("Numeros organizados com o bubbleSort\n"); for (contador = 0; contador < QUANTIDADE; contador++) { printf("%i, ", numeros[contador]); } putchar('\n'); getchar(); return(0); } void bolha(int *n, int q_numeros) { int contador, troca; do { troca = 0; for (contador = 0; contador < q_numeros-1; contador++) { if (n[contador] > n[contador+1]) { int tmp = n[contador]; n[contador] = n[contador+1]; n[contador+1] = tmp; troca++; } } } while (troca); }
  21. Não funciona assim magicamente, principalmente se estiver usando o windows e um editor de texto de respeito. Para funcionar no windows tem que mudar a codificação para windows-1252, em qualquer sistema unix-like e só salvar o arquivo como utf-8 e nem precisa colocar o setlocale, porque a maioria dos terminais já funcionam nessa codificação.
  22. perceba que quando você faz int NUM(int n); Você só está passando o valor da variável para a função, para você recuperar o valor que está dentro da função você tem que usar um ponteiro. exemplo int NUM(int *n) { int i; for(i = 1; i <= 3; i++) { printf("Informe um numero:\n"); scanf("%d", n); } } Quando o ultimo valor for informado, ele vai estar na variável num na função principal. Porque a função está usando o endereço da variável num. seu algoritmo usando ponteiros. #include <stdio.h> int NUM(int *n); int DOBRO(int *valor); int main(void) { int num; NUM(&num); printf("\n"); DOBRO(&num); return 0; } int NUM(int *n) { int i; for(i = 1; i <= 3; i++) { printf("Informe um numero:\n"); scanf("%d%*c", n); } } int DOBRO(int *valor) { int i, res; for(i = 1; i <= 3; i++) { res = 2 * (*valor); printf("O resultado eh = %d\n", res); } return res; }
  23. kgin

    C como fazer GUI em C

    @b.0463 Para utilizar guis em C eu recomendo GTK para projetos grades e Nuklear para projetos pequenos. Como você está começando em C eu recomendo SDL com Nuklear. repositorio github Nuklear
  24. @Pietra Ester Na parte de converter os números do cpf para decimais você pode usar a função atoi() ou subtrair 48 do caractere que vai te dar o numero correspondente ao caractere. Exemplo #include <stdio.h> int main(void) { char caractere = '\0'; printf("Digite um numero na faixa de 0..9:"); scanf("%c%*c", &caractere); if (caractere >= '0' && caractere <= '9') { /* Subtrair o caractere '0' e a mesma coisa de subtrair por 48 da tabela ascii */ printf("O numero que voce digitou foi:%d\n", caractere-'0'); } else { printf("voce digitou um caractere!\n"); } getchar(); return(0); } de uma olhada na tabela ascii wikipedia ASCII
  25. Esse problema e por causa que você está deixando a tecla enter no buffer do teclado. Quando você faz um scanf("%d", &reg[i].cod); a tecla enter vai ficar no buffer, aí quando você fizer outro scanf ele vai pular porque ele já pegou alguma informação do buffer. Para contornar o problema por hora adicione um "%*c" no scanf dessa maneira. scanf("%d%*c", &minha_variavel); e pare de usar gets ele não é mais recomendado, utilize fgets() ao invés de gets. exemplo de como pegar as informações com fgets(). #include <stdio.h> #include <stdlib.h> #define TAMANHO_NOME 120 #define TAMANHO_CPF 14 #define QUANTIDADE_NOTAS 4 #define QUANTIDADE_ALUNOS 2 struct aluno { int id; char nome[TAMANHO_NOME]; char cpf[TAMANHO_CPF]; float notas[QUANTIDADE_NOTAS]; }; void pegaAluno(struct aluno *aluno); void mostraAluno(struct aluno *aluno); int main(void) { struct aluno alunos[QUANTIDADE_ALUNOS]; int contador; /* Pega os alunos */ for (contador = 0; contador < QUANTIDADE_ALUNOS; contador++) { pegaAluno(&alunos[contador]); } /* Mostra os alunos */ for (contador = 0; contador < QUANTIDADE_ALUNOS; contador++) { mostraAluno(&alunos[contador]); } return(0); } void pegaAluno(struct aluno *aluno) { int contador; /* Pega o codigo do aluno */ printf("Digite o codigo do aluno:"); scanf("%d%*c", &aluno->id); /* Pega o nome do aluno */ printf("Digite o nome do aluno:"); fgets(aluno->nome, TAMANHO_NOME-1, stdin); /* Pega o cpf do aluno */ printf("Digite o cpf do aluno:"); fgets(aluno->cpf, TAMANHO_CPF-1, stdin); /* Pega as notas do aluno */ for (contador = 0; contador < QUANTIDADE_NOTAS; contador++) { printf("Digite a nota %d do aluno %s", contador+1, aluno->nome); scanf("%f%*c", &aluno->notas[contador]); } } void mostraAluno(struct aluno *aluno) { int contador; printf("Codigo:%d\n", aluno->id); printf("Nome:%s", aluno->nome); printf("Cpf:%s", aluno->cpf); printf("Notas do a luno\n"); for (contador = 0; contador < QUANTIDADE_NOTAS; contador++) { printf("[%d]-Nota:%.2f\n", contador+1, aluno->notas[contador]); } } Para validar o cpf e bem simples, segue o link com um tutorial Algoritmo de Validação do CPF

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!