
kgin
Membro Pleno-
Posts
386 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que kgin postou
-
Arquivo de música mudando de formato sozinho no linux mint!
kgin respondeu ao tópico de Albert Vinícius Maia em Linux
Esse é o tipo de usuário mais perigoso. Depende, mas eu recomendo passar ele nos arquivos afetados para saber o que está afetando a maquina. Uma maneira de "varrer a sujeira pra debaixo do tapete" seria só criar outra conta de usuário e apagar a antiga. Mas eu acho melhor verificar a causa do problema e fazer uma reinstalação completa do sistema. Em ultimo caso poderia ser também o HD que estaria estragando, aí só trocando mesmo. -
@b.0463 Para instalar o TDM-GCC você tem que remover o minGW completamente para não causar conflito entre as versões do gcc.
-
O certo não seria subtrair o gasto_total de lucro_brut? dessa maneira #include<stdio.h> int main(){ float km_inicial,km_final,km_traba,gasola_gasta, gasto_total,preco_gasola=7.02,lucro_brut,lucro_liq,media_consu; printf("\nInforme a quilometragem inicial: "); scanf("%f%*c",&km_inicial); printf("\nInforme a quilometragem final: "); scanf("%f%*c",&km_final); printf("\nInfomre a quantidade de litros de combustivel gasto: "); scanf("%f%*c",&gasola_gasta); printf("\nValor da gasolina: %.2f\n",preco_gasola); printf("\nInforme o valor total (R$) recebido: "); scanf("%f%*c",&lucro_brut); km_traba = km_final - km_inicial; media_consu = km_traba / gasola_gasta; gasto_total = gasola_gasta * preco_gasola; lucro_liq = lucro_brut - gasto_total; printf("\nMedia de consumo gasto: %.2f", media_consu); printf("\nValor gasto com combustivel: %.2f",gasto_total); printf("\nLucro do dia: %.2f", lucro_liq); return 0; } e no enunciado está errado. preste atenção Como o lucro do dia seria R$63,50?
-
VisualG Mostrar o mesmo valor inserido no comando Leia.
kgin respondeu ao tópico de Mr. Ariel em Programação - iniciantes
@Mr. Ariel Seria isso que você queria fazer? Algoritmo "retanguloCalc" Var base,altura : real Inicio Escreva("Insira valor para base: ") Leia (base) Escreva ("Insira valor para altura: ") Leia (altura) Escreval("Você digitou para a base e ", base," para a altura. Seu retângulo possui uma área de", base*altura) Fimalgoritmo -
Não sei ao certo, mas no windows não seria gcc \src\* -o \bin\NOME_DO_EXECUTAVEL na pasta principal. pra mim que no windows usa barra invertida (\). Se você estiver tendo problemas com o mingw você pode tentar instalar esse aqui TDM-GCC Ou utilizar um desses online replit OnlineGDB
-
Arquivo de música mudando de formato sozinho no linux mint!
kgin respondeu ao tópico de Albert Vinícius Maia em Linux
Pode ser duas coisas, você pegou um malware (quase que improvável). Ou você pegou um vírus de windows no seu servidor winehq (se é que você tem o wine) -
VisualG Looping em estrutura de repetição no visualg
kgin respondeu ao tópico de DGFEAR em Programação - iniciantes
você declara outra variável para salvar o nome do aluno na hora que você testar se é maior. exemplo algoritmo "notas" var nome_aluno, nome_maior_nota, nome_menor_nota:caractere maior_nota, menor_nota, nota_atual:inteiro quantidade_alunos, contador:inteiro inicio // Pega a quantidade de alunos escreval("Digite a quantidade de alunos") leia(quantidade_alunos) // Pega as notas e os nomes dos alunos contador <- 0 maior_nota <- 0 enquanto contador < quantidade_alunos faca escreval("Digite o nome do aluno") leia(nome_aluno) escreval("Digite a nota do aluno ", nome_aluno) leia(nota_atual) // Verifica a maior nota se nota_atual > maior_nota entao nome_maior_nota <- nome_aluno maior_nota <- nota_atual fimSe contador <- contador+1 fimEnquanto // Mostra o nome e a maior nota entre os alunos escreval("A maior nota e ", maior_nota," do aluno ", nome_maior_nota) fimAlgoritmo -
VisualG Looping em estrutura de repetição no visualg
kgin respondeu ao tópico de DGFEAR em Programação - iniciantes
@DGFEAR mas você prestou atenção que você está fazendo a comparação de alunos >= 10? O certo seria comparar a variável cont enquanto ela for menor que a variável alunos para satisfazer a condição do loop. -
VisualG Looping em estrutura de repetição no visualg
kgin respondeu ao tópico de DGFEAR em Programação - iniciantes
você reparou que essa linha não faz sentido? Enquanto (alunos < 10) e (alunos > 0) faca Você está comparando com a quantidade de alunos que você tem que pegar, é não com a quantidade atual já pega. o loop se torna infinito. Seu algoritmo arrumado algoritmo "Ex_notas" var alunos, cont, Nota : inteiro Nome : caractere inicio escreva(" quantos alunos tem? ") Leia(alunos) escreval("--------------------------------------") cont <- 0 Enquanto (cont < alunos) faca escreval("Aluno ",cont) cont <- (cont + 1) escreva("Nome: ") Leia(Nome) escreva("Nota de ",Nome,": ") Leia(Nota) escreval("--------------------------------------") FimEnquanto fimalgoritmo para testar se a quantidade de alunos satisfaz o mínimo você poderia colocar um repita<..>até exemplo algoritmo "Ex_notas" var alunos, cont, Nota : inteiro Nome : caractere inicio alunos <- 0 repita escreva(" quantos alunos tem? ") Leia(alunos) se alunos <= 0 entao escreval("Quantidade de alunos invalida!") fimse ate alunos > 0 escreval("--------------------------------------") cont <- 0 Enquanto (cont < alunos) faca escreval("Aluno ",cont) cont <- (cont + 1) escreva("Nome: ") Leia(Nome) escreva("Nota de ",Nome,": ") Leia(Nota) escreval("--------------------------------------") FimEnquanto fimalgoritmo -
@immoraesz O maior problema do seu algorítimo e a entrada, você não está pegado as informações corretamente. faça algo básico para você ver a entrada e a saída das informações. exemplo #include <stdio.h> #include <stdlib.h> #define TAMANHO_NOME 80 #define MAXIMO_ESTOQUE 3 #define QUNATIDADE_FILIAIS 2 struct informacoes_filial { char nome[TAMANHO_NOME]; int capacidade_estoque; int estoque_produtos[MAXIMO_ESTOQUE]; }; int main(void) { int contadador1, contadador2; struct informacoes_filial filiais[QUNATIDADE_FILIAIS]; /* Pega o nome e a quantidade de cada produto */ for (contadador1 = 0; contadador1 < QUNATIDADE_FILIAIS; contadador1++) { printf("Digite o nome da filia:%i\n", contadador1); fgets(filiais[contadador1].nome, TAMANHO_NOME, stdin); printf("Digite a quantidade de cada produto no estoque\n"); for (contadador2 = 0; contadador2 < MAXIMO_ESTOQUE; contadador2++) { printf("Digite a quantidade de produtos para o produto:%i\n", contadador2); scanf("%d%*c", &filiais[contadador1].estoque_produtos[contadador2]); } } printf("\n\n"); /* Mostra todas as filiais e a quantidade de cada produto */ for (contadador1 = 0; contadador1 < QUNATIDADE_FILIAIS; contadador1++) { printf("Nome da filia:%s", filiais[contadador1].nome); printf("Quantidade de cada produto no estoque\n"); for (contadador2 = 0; contadador2 < MAXIMO_ESTOQUE; contadador2++) { printf("produto %i tem %i produtos\n", contadador2, filiais[contadador1].estoque_produtos[contadador2]); } } return(0); } De nomes mais significativos para as variáveis, colocar letras soltas fica difícil seguir o seu próprio código. de uma olhada nesse tópico que o autor estava com o mesmo problema de pegar os valores das variáveis via teclado. Dificuldade com Variável Booleana
-
@Lipeco Tente pensa nas posições das peças em si, e não nas posições que ela ocupa no tabuleiro. assim movimentá-las será mais fácil. exemplo #include <stdio.h> #include <stdlib.h> #include <time.h> #define T_NOME 40 #define Q_JOGADORES 2 #define Q_PECAS 16 #define TABULEIRO_LARGURA 8 #define TABULEIRO_ALTURA TABULEIRO_LARGURA enum jogadores { JOGADOR1 = 0, JOGADOR2 }; struct local { unsigned short linha, coluna; }; struct peca_xadres { char nome[T_NOME]; struct local local; }; const struct peca_xadres LOCAL_PECAS[] = { "Torre", 0, 0, "Cavalo", 0, 1, "Bispo", 0, 2, "Rei", 0, 3, "Rainha", 0, 4, "Bispo", 0, 5, "Cavalo", 0, 6, "Torre", 0, 7, "Peao", 1, 0, "Peao", 1, 1, "Peao", 1, 2, "Peao", 1, 3, "Peao", 1, 4, "Peao", 1, 5, "Peao", 1, 6, "Peao", 1, 7 }; void iniciaPecas(struct peca_xadres *pecas, enum jogadores jogador); int main(void) { int linha, coluna, contador1, contador2, contador3; char tabuleiro[TABULEIRO_LARGURA][TABULEIRO_ALTURA]; int posicoes_tabuleiro[TABULEIRO_LARGURA*TABULEIRO_ALTURA] = {0}; struct peca_xadres pecas[Q_JOGADORES][Q_PECAS]; /* Inicia as peças do tabuleiro */ for (contador1 = 0; contador1 < Q_JOGADORES; contador1++) { iniciaPecas(pecas[contador1], contador1); } /* Limpa o tabuleiro */ for (coluna = 0; coluna < TABULEIRO_LARGURA; coluna++) { for (linha = 0; linha < TABULEIRO_ALTURA; linha++) { tabuleiro[coluna][linha] = ' '; } } /* Coloca as peças no tabuleiro */ for (contador1 = 0; contador1 < 2; contador1++) { for (contador2 = 0; contador2 < Q_PECAS; contador2++) { tabuleiro[pecas[contador1][contador2].local.coluna][pecas[contador1][contador2].local.linha] = pecas[contador1][contador2].nome[0]; } } /* Mostra o tabuleiro */ for (coluna = 0; coluna < TABULEIRO_LARGURA; coluna++) { for (linha = 0; linha < TABULEIRO_ALTURA; linha++) { printf("%c|", tabuleiro[coluna][linha]); } putchar('\n'); } /* Quantidade de posições posiveis de se visitar */ for (contador1 = 0; contador1 < TABULEIRO_LARGURA*TABULEIRO_ALTURA; contador1++) { posicoes_tabuleiro[contador1] = contador1; } /* Embaralha as posições */ srand(time(NULL)); for (contador1 = 0; contador1 < TABULEIRO_LARGURA*TABULEIRO_ALTURA; contador1++) { int tmp = posicoes_tabuleiro[contador1], local = rand()%(TABULEIRO_ALTURA*TABULEIRO_LARGURA); posicoes_tabuleiro[contador1] = posicoes_tabuleiro[local]; posicoes_tabuleiro[local] = tmp; } /* Move uma peça para uma posição aleatoria */ for (contador1 = 0; contador1 < TABULEIRO_ALTURA*TABULEIRO_LARGURA; contador1++) { int quantidade_pecas = 0; for (contador2 = 0; contador2 < Q_JOGADORES; contador2++) { for (contador3 = 0; contador3 < Q_PECAS; contador3++) { if (posicoes_tabuleiro[contador1]/TABULEIRO_ALTURA == pecas[contador2][contador3].local.coluna&& posicoes_tabuleiro[contador1]%TABULEIRO_LARGURA == pecas[contador2][contador3].local.linha) { quantidade_pecas++; } } } /* Checa se a posição está vaga */ if (quantidade_pecas == 0) { pecas[JOGADOR1][4].local.coluna = posicoes_tabuleiro[contador1]/TABULEIRO_ALTURA; pecas[JOGADOR1][4].local.linha = posicoes_tabuleiro[contador1]%TABULEIRO_LARGURA; break; } } /* Limpa o tabuleiro */ for (coluna = 0; coluna < TABULEIRO_LARGURA; coluna++) { for (linha = 0; linha < TABULEIRO_ALTURA; linha++) { tabuleiro[coluna][linha] = ' '; } } /* Coloca as peças no tabuleiro */ for (contador1 = 0; contador1 < 2; contador1++) { for (contador2 = 0; contador2 < Q_PECAS; contador2++) { tabuleiro[pecas[contador1][contador2].local.coluna][pecas[contador1][contador2].local.linha] = pecas[contador1][contador2].nome[0]; } } printf("\n"); /* Mostra o tabuleiro */ for (coluna = 0; coluna < TABULEIRO_LARGURA; coluna++) { for (linha = 0; linha < TABULEIRO_ALTURA; linha++) { printf("%c|", tabuleiro[coluna][linha]); } putchar('\n'); } printf("%s foi movido para %i, %i\n", pecas[JOGADOR1][4].nome, pecas[JOGADOR1][4].local.linha, pecas[JOGADOR1][4].local.coluna); printf("Pressione enter para encerrar o programa\n"); getchar(); return(0); } void iniciaPecas(struct peca_xadres *pecas, enum jogadores jogador) { int contador; for (contador = 0; contador < Q_PECAS; contador++) { pecas[contador] = LOCAL_PECAS[contador]; } if (jogador == JOGADOR2) { for (contador = 0; contador < Q_PECAS; contador++) { if (contador < 8) { pecas[contador].local.linha = 7; } else { pecas[contador].local.linha = 6; } } } } Eu fiz o código meio na pressa, mas eu acho que da pra pegar a ideia.
-
@iTzCrazy Seu problema não é com a stdbool e sim com a entrada padrão. toda vez que você entra com alguma coisa via teclado, e tecla enter o scanf só pega os dados que você pediu. então quando você faz um scanf("%i", &valor); ele vai pegar um inteiro sem sinal e deixar a tecla enter (carrier return, codigo 0xDh=13 na tabela ascii). o "jeito certo" seria pegar as informações com o fgets, mas já que você é iniciante só coloque um "%*c" no scanf para ignorar a tecla. exemplo: scanf("%i%*c", &valor); Seu algoritmo funcionando #include <stdio.h> #include <stdlib.h> #include <stdbool.h> // biblioteca ultilizada para adc variáveis booleanas ou seja variáveis do tipo lógico int main(void) { //definindo variáveis int a; float b; char c; bool d; char tecla = '\0'; //passar os valores a = 5; b = 2.5; c = 'c'; d = true; //imprimindo na tela printf("\nO valor de a = %d", a); printf("\nO valor de b = %.2f", b); //se adicionar um ponto e um número entre % e o f, podemos definir a formatação do float ao imprirmir printf("\nO valor de c = %c", c); printf("\nO valor de d = %d\n", d); //lendo valores na tela scanf("%d%*c", &a); scanf("%f%*c", &b); scanf("%c%*c", &c); //em linguagem C quando se lê um carctere, coloca se espaço entre as aspas duplas e o símbolo de c scanf("%c%*c", &tecla); if (tecla == 'T' || tecla == 't') { d = true; } else { d = false; } //reescrevendo o valor na tela printf("\n O valor de a = %d", a); printf("\n O valor de b = %.1f", b); printf("\n O valor de c = %c", c); printf("\n O valor de d = %d\n", d); //pausando getchar(); return(0); }
-
sim, vai funcionar como qualquer android instalado de fabrica (só posso dizer isso do lineageOs). sim e não apps de bancos provavelmente não vão funcionar sem instalar o playService e a playStore, mas isso e bem fácil de resolver (depende do seu entendimento técnico ¯\_(ツ)_/¯) Não vai (pode ser que ele só não ligue mais ). Eu acho bem mais seguro do que a própria rom do google, pelo fato de receber patchs de segurança bem mais rápidos e frequentes. Como você vai instalar sem root?
-
Bat Editar arquivo csv pelo batch
kgin respondeu ao tópico de Giovanni Uchoa em Programação - outros
a ideia seria criar um novo arquivo passando o antigo no comando for e salvando os cadastros que você não quer editar, então quando chegar a vez do que você quer editar ou apagar você edita e salva no arquivo e deixa o comando for terminar. por fim seria só apagar o arquivo velho e renomear o novo para o mesmo nome do antigo. Eu gostaria de dar um exemplo, mas já faz uns 10 anos que não mexo com batch. -
Bat Editar arquivo csv pelo batch
kgin respondeu ao tópico de Giovanni Uchoa em Programação - outros
se me lembro bem você tem que usar o comando for com opção de file parsing e de string parsing. Microsoft docs comando for Eu recomendaria você aprender alguma linguagem de programação como C ou javascrip, porque fazer isso em batch não é muito vantajoso. fora que em batch você tem um limite de quão grande um arquivo pode ser analisado mais precisamente seria 65535 linhas, enquanto em C o mínimo e 4 gigabytes. -
@IzeraXD Eu ainda não entendi claramente o que o seu programa tem que fazer. era só um exemplo, você tem que carregar os nomes em algum lugar temporário que foi isso que eu fiz. arquivos texto (ou não binários) tem o acesso sequencial, significa que você não pode ir em X linha sem ler o arquivo todo, que foi isso que eu fiz.
-
@IzeraXD Seria isso que você está tentando fazer? /* Copia a string para uma array */ printf("Mostra o nome letra por letra\n"); for (contador1 = 0; texto[0][contador1] != '\n' && texto[0][contador1] != '\0'; contador1++) { personagem[contador1] = texto[0][contador1]; printf("%c ", personagem[contador1]); } /* Coloca o sinalizador de final da string */ personagem[contador1] = '\0'; código fonte completo codigo_fonte.zip
-
Poste o enunciado (o que você esta tentando fazer) para ficar mais fácil de entender. Porque pra mim o que você está fazendo é só complicar o que parece fácil.
-
VisualG Logica de programação baisca
kgin respondeu ao tópico de Marechal Barros em Programação - iniciantes
Poste o enunciado, e tente rodar na plataforma que você está programando para ver o resultado. igual eu fiz aqui Exemplo -
@xidori Se você quer mesmo seguir com essa ideia eu recomendo ler no livro c completo e total sobre "declarando uma lista de parâmetros de extensão variável" na pagina 175. Mas ao meu ver já que você é um aprendiz (não só de C, mas de tudo) eu recomendo você instalar uma VM com alguma distro leve (xubuntu ou linux mint) e fácil de usar, é usar a biblioteca origina. https://github.com/cs50/libcs50 É só seguir os passos direitinho que da certo.
-
C Colocar os pontos lado direito do triângulo
kgin respondeu ao tópico de carolineandresa em C/C#/C++
@carolineandresa Seria bom você colocar o enunciado, porque se for só para fazer um triangulo com as letras há varias formas de fazer. Exemplo #include <stdio.h> #include <ctype.h> const char sinal = '_'; int main(void) { unsigned short q_pontos = 0, q_linhas = 0, q_letras = 0, pontos, linhas, letras; char letra = 0; /* Lẽ um caractere entre A a Z do úsuario */ do { printf("Digite uma letra de A a Z\n"); scanf("%c%*c", &letra); if (toupper(letra) < 'A' || toupper(letra) > 'Z') { printf("O caractere %c não e valido!\n", letra); } } while (toupper(letra) < 'A' || toupper(letra) > 'Z'); q_pontos = q_linhas = (toupper(letra)-'A')+1; q_letras = 1; for (linhas = 0; linhas < q_linhas; linhas++) { /* Mostra os pontos */ for (pontos = 0; pontos < q_pontos; pontos++) { putchar(sinal); } /* Mostra as letras em ordem normal */ for (letras = 'A'; letras < (q_letras+'A'); letras++) { printf("%c", letras); } /* Mostra as letras em ordem reversa se a quantidade de letras for maior que 1*/ if (q_letras > 1) { for (letras = (q_letras+'A')-2; letras >= 'A'; letras--) { printf("%c", letras); } } /* Mostra os pontos */ for (pontos = 0; pontos < q_pontos; pontos++) { putchar(sinal); } /* Salta uma linha */ putchar('\n'); q_pontos--; q_letras++; } return(0); } -
Pascal Auxilio com Estruturas de Repetição e Contadores
kgin respondeu ao tópico de Pedroso90 em Programação - outros
De uma estudada em logica de programação O seu algoritmo está incompleto. Eu fiz este para demonstrar program Estruturas_de_repeticao; uses crt; const Q_PESSOAS = 10; var pessoas_90_150, pessoas_10_30_190, contador : integer; peso, altura : real; idade : byte; begin { Inicia as variaveis } pessoas_10_30_190:= 0; pessoas_90_150:= 0; for contador:= 1 to Q_PESSOAS do begin clrscr; writeln('Digite a idade da pessoa'); readln(idade); writeln('Digite a altura da pessoa'); readln(altura); writeln('Digite o peso da pessoa'); readln(peso); if (peso > 90) AND (altura < 1.50) then inc(pessoas_90_150); if (idade >= 10) AND (idade <= 30) AND (altura >= 1.90) then inc(pessoas_10_30_190); end; writeln('A quantidade de pessoas obesas morbidas menores que 1,50 e:', pessoas_90_150); writeln('A porcentagem de de pessoas entre 10 e 30 anos e que medem mais de 1,90 e:', (pessoas_10_30_190/Q_PESSOAS)*100:2:0,'%'); readkey; end. De uma estudada nele -
Eu não posso afirmar com certeza (mesmo porque eu nunca estudei C), mas quando você declara char *str = "Uma string!"; você só está criando um ponteiro chamado *str que aponta para um local do código (no formato elf provavelmente vai ser na secessão .text ou .data) que não pode ser modificada. Mas quando você declara char str[] = "Uma string!"; você está pedindo para o compilador reservar memoria para o vetor na parte baixa da memoria e logo em seguida copiar o conteúdo do vetor para a memoria. Isso vai depender do compilador e tipo de formato do executável, mas no geral é sempre assim. Resumindo. Assim você só pode modificar o ponteiro char *str = "Uma string!"; char outra_str[] = "Outra string!"; str = outra_str; str[3] = 'a'; É assim você só pode modificar o conteúdo. char str[] = "Uma string!"; str[0] = ' '; /* OK */ str = NULL; /* Vai dar erro! */ Pense na primeira como sendo uma constante que você não pode modificar.
-
@codigo rápido Eu acho que seria melhor usar o mesmo espaço que foi passado para voltar a string. Dessa maneira que você fez você deixou um vazamento de memoria (mem leak) passar na hora que você reservou a memoria e não a liberou. Uma alternativa melhor seria #include <stdio.h> #define T_FRASE 60 char *inverteString(char *str); /* * Em caso de sucesso devolve a string invertida, ou NULL em caso de falha. */ int main(void) { char frase[T_FRASE]; puts("Digite uma frase para ser invertida"); fgets(frase, T_FRASE, stdin); /* Retira o newline */ { int contador; for (contador = 0; frase[contador]; contador++); frase[contador-1] = '\0'; } if (inverteString(frase) == NULL) { puts("Erro ao inverter a frase!"); } else { puts("Frase invertida"); puts(frase); } puts("Pressione enter para continuar..."); getchar(); return(0); } char *inverteString(char *str) { int contador1, contador2, tamanho_string = 0; /* Verifica o tamanho da string */ if (str != NULL) { for (contador1 = 0; str[contador1]; contador1++); tamanho_string = contador1-1; if (tamanho_string > 0) { char temporario[tamanho_string+1]; contador2 = tamanho_string; /* Inverte a string */ for (contador1 = 0; contador1 < tamanho_string+1; contador1++) { temporario[contador1] = str[contador2]; contador2--; } temporario[contador1] = '\0'; /* Copia a string de volta */ for (contador1 = 0; temporario[contador1]; contador1++) { str[contador1] = temporario[contador1]; } /* retorna a string */ return(str); } } /* Erro */ return(NULL); }
-
C Socket: Como pegar variaveis de um POST após um accept?
kgin respondeu ao tópico de codigo rapido em C/C#/C++
Olá a sua pergunta está meio ambígua. Você quer pegar o conteúdo da variável mandada por um método post ou você quer uma maneira de processar um cabeçalho HTTPS que tem um método post?
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