
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
-
@Nevski7 Perceba que as informações são correlacionadas e a mesma coisa as duas estruturas. você pode fazer uma só #include <stdio.h> #include <string.h> #define T_MARCA 30 #define T_MODELO 30 #define T_CAMBIO 20 #define T_COR 20 #define Q_CARROS 5 #define Q_MOTAS 5 enum tipo_veiculo { CARRO = 1, MOTA }; struct contentor_data { int mes, dia, ano; }; struct contentor_veiculo { int tipo; int id; char marca[T_MARCA]; char modelo[T_MODELO]; int peso; char cambio[T_CAMBIO]; int cilindrada; int potencia; char cor[T_COR]; int lotacao; struct contentor_data data; }; void inicializa(struct contentor_veiculo *carros, struct contentor_veiculo *motas) { struct contentor_veiculo in_carros[Q_CARROS] = { { CARRO, 1, "Volkswagen", "Gol quadrado", 1300, "Manual", 1984, 120, "Branco", 5, { 5, 3, 1994 } }, { CARRO, 2, "Volkswagen", "Gol quadrado gti", 1300, "Manual", 1984, 120, "Branco", 5, { 8, 2, 1996 } } }; carros[0] = in_carros[0]; carros[1] = in_carros[1]; } void lista_veiculo(struct contentor_veiculo *veiculos) { int contador; for (contador = 0; contador < Q_CARROS; contador++) { printf("Tipo de veiculo:"); if (veiculos[contador].tipo == CARRO) { printf("Carro\n"); } else { printf("Mota\n"); } printf("id:%i\n", veiculos[contador].id); printf("modelo:%s\n", veiculos[contador].modelo); printf("peso:%i\n", veiculos[contador].peso); printf("tipo de cambio:%s\n", veiculos[contador].cambio); printf("cilindradas:%i\n", veiculos[contador].cilindrada); printf("potencia:%i\n", veiculos[contador].potencia); printf("cor:%s\n", veiculos[contador].cor); printf("lotacao:%i\n", veiculos[contador].lotacao); printf("Ano:%i\\%i\\%i\n", veiculos[contador].data.mes, veiculos[contador].data.dia, veiculos[contador].data.ano); printf("\n"); } } int main(void) { struct contentor_veiculo carros[Q_CARROS] = {0}, motas[Q_MOTAS] = {0}; inicializa(carros, motas); lista_veiculo(carros); return(0); }
-
@Nevski7 Utilize o botão code <> na barra de ferramentas do fórum para postar o código.
-
@Lim4 recomendo dar uma olhada nessa outras também #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define T_BUFFER 124 int verifica_hex(char *numero); int main(void) { char buffer[T_BUFFER]; printf("Digite um numero hexadecimal:"); fgets(buffer, T_BUFFER, stdin); /* retira o newline */ buffer[strlen(buffer)-1] = '\0'; if (verifica_hex(buffer)) { printf("O numero e um hexadecimal valido!\n"); printf("%s convertido para decimal e %li\n", buffer, strtol(buffer, NULL, 16)); } else { printf("%s não e um numero hexadecimal valido!\n", buffer); } printf("Pressione enter para encerrar o programa!\n"); getchar(); return(0); } int verifica_hex(char *numero) { int quantidade_chars = 0, contador; for (contador = 0; numero[contador]; contador++) { if (isxdigit(numero[contador])) { quantidade_chars++; } } if (quantidade_chars == strlen(numero)) { return(quantidade_chars); } return(0); } Visite o site cplusplus.com lá tem vários exemplos. se você for fazer uma macro desse tipo eu não recomendo ser dependente de uma função externa exemplo #define _UP(x) (((x >= 'a') && (x <= 'z')?x-32:x)) #define _IS_HEX(x) ((x >= '0' && x <= '9') || (_UP(x) >= 'A' && _UP(x) <= 'F')) Deixo como exercício final você descobrir o que essa maçaroca de macros vai ser quando passar no pré-processador, Já deixo avisado que não vai ser bonito
-
@Lim4 Eu acho que uma melhoria seria usar uma função, e também não ficar comparando um por um. Exemplo #include <stdio.h> #include <ctype.h> int is_digit(char digito) { return((digito >= '0' && digito <= '9') || (toupper(digito) >= 'A' && toupper(digito) <= 'F')); } int main() { char digit; printf("Insert the digit: "); scanf("%c", &digit); printf("Is it a hexa digit? "); if (is_digit(digit)) { printf("yes\n"); } else { printf("no\n"); } return 0; } Macros tendem a ser difíceis de debugging pelo fato que eles acontecem antes de compilar o código.
-
Quase todos os compiladores fazem, mas isso depende das bibliotecas que você está usando. para fazer isso no GCC basta fazer isso. $ gcc -c testes.c $ objcopy -O binary -j .text testes.o binfile esse comando vai pegar só o conteúdo executável do binário. Se você quer entrar nessa empreitada de fazer um sistema operacional eu recomendo aprender assembly, mas mais precisamente assembly do x86 16-bits. Alguns links úteis. Tutorial de assmebly do Adam hyde em português PC-GPE (PC Game Programmer's Encyclopedia) Baixe o dosbox, tasm e turbo C e crie um ambiente de programação em dos para brincar um pouco. Depois tente algo mais serio como fazer um bootloader. minimal bootloader Esse vídeo explica bem os passos mínimos para construir um sistema operacional. E mais uma porrada de links que valem dar uma olhada. Boot sector games AquilaOS sistema operacional feito em C e assembly GhostOS sistema operacional feito em C, C++ e assembly. ToaruOS 2.0 Sortix Barebone OS Writing an Operating System from Scratch: From Assembly to C Eh eu recomendo você aprender a usar o qemu para rodar seus testes ao invés de uma maquina real.
-
Você tem que colocar na estrutura se o filme já foi alugado ou não. struct cadastroF { char nomeFilme[50]; char generoFilme[50]; int codigoFilme; int disponivel; }; Depois é só fazer um loop e salvar a posição do filme no vetor e se ele foi encontrado. Exemplo /* Busca o filme */ contador2 = filme_encontrado = 0; do { if (codigo == filmes[contador2].codigo) { filme_encontrado = 1; /* Marca que o filme foi encontrado */ local_filme = contador2; /* Salva a posição em que o filme esta */ } contador2++; } while (contador2 < Q_FILMES && filme_encontrado == 0); /* Verifica se o filme foi encontrado */ if (filme_encontrado == 1) { printf("%s filme com o codigo %i encontrado\n", filmes[local_filme].nome, filmes[local_filme].codigo); printf("1\\sim 2\\não:"); scanf("%i%*c", &opcao); if (opcao == 1) { filmes[local_filme].disponivel = 0; printf("Filme alugado!\n"); } else { printf("filme não encontrado\n"); } printf("Pressione enter para continuar\n"); getchar(); } Exemplo completo #include <stdio.h> #include <stdlib.h> #define T_NOME 60 #define T_GENERO 90 #define Q_FILMES 3 struct container_filme { char nome[T_NOME]; char genero[T_GENERO]; int codigo; int disponivel; }; void inicia_filmes(struct container_filme *f) { sprintf(f[0].nome, "Tubarao"); sprintf(f[0].genero, "Terror, acao, suspense"); f[0].codigo = 302; f[0].disponivel = 1; sprintf(f[1].nome, "A casa de vidro"); sprintf(f[1].genero, "Terror, acao, suspense"); f[1].codigo = 343; f[1].disponivel = 1; sprintf(f[2].nome, "Beverly Hills Cop"); sprintf(f[2].genero, "Acao, comedia"); f[2].codigo = 375; f[2].disponivel = 1; } int main(void) { int opcao, contador1, contador2, codigo, filme_encontrado, local_filme; struct container_filme filmes[Q_FILMES]; inicia_filmes(filmes); do { printf("Digite uma das opções abaixo\n"); printf("1-Listar filmes no sistema\n"); printf("2-Aluga filme\n"); printf("3-Sair\n"); scanf("%i%*c", &opcao); switch (opcao) { case 1: for (contador1 = 0; contador1 < Q_FILMES; contador1++) { printf("informações do filme\n"); printf("Nome:%s\n", filmes[contador1].nome); printf("Genero:%s\n", filmes[contador1].genero); printf("Codigo:%i\n", filmes[contador1].codigo); if (filmes[contador1].disponivel) { printf("Esta disponivel para alugar!\n"); } else { printf("não esta disponivel para alugar!\n"); } printf("\n"); } break; case 2: for (contador1 = 0; contador1 < Q_FILMES; contador1++) { printf("informações do filme\n"); printf("Nome:%s\n", filmes[contador1].nome); printf("Genero:%s\n", filmes[contador1].genero); printf("Codigo:%i\n", filmes[contador1].codigo); if (filmes[contador1].disponivel) { printf("Esta disponivel para alugar!\n"); } else { printf("não esta disponivel para alugar!\n"); } printf("\n"); } printf("Digite o codigo do filme que voce deseja alugar\n"); scanf("%i%*c", &codigo); /* Busca o filme */ contador2 = filme_encontrado = 0; do { if (codigo == filmes[contador2].codigo) { filme_encontrado = 1; local_filme = contador2; } contador2++; } while (contador2 < Q_FILMES && filme_encontrado == 0); /* Verifica se o filme foi encontrado */ if (filme_encontrado == 1) { printf("%s filme com o codigo %i encontrado\n", filmes[local_filme].nome, filmes[local_filme].codigo); printf("1\\sim 2\\não:"); scanf("%i%*c", &opcao); if (opcao == 1) { filmes[local_filme].disponivel = 0; printf("Filme alugado!\n"); } else { printf("filme não encontrado\n"); } printf("Pressione enter para continuar\n"); getchar(); } break; } } while (opcao != 3); return(0); }
-
VisualG Exercício usando procedimento e usando chamada válida
kgin respondeu ao tópico de AlexandreCalanca em Programação - iniciantes
sim está errado, você teria que usar parâmetros nas funções. exemplo procedimento gerador(msg:caractere; repeticao, borda_tipo:inteiro) var contador:inteiro inicio escolha (borda_tipo) caso 1 escreval("+-------=======------+") caso 2 escreval("~~~~~~~~:::::::~~~~~~~") caso 3 escreval("<<<<<<<<------->>>>>>>") fimEscolha para contador de 1 ate repeticao faca escreval(msg) fimPara escolha (borda_tipo) caso 1 escreval("+-------=======------+") caso 2 escreval("~~~~~~~~:::::::~~~~~~~") caso 3 escreval("<<<<<<<<------->>>>>>>") fimEscolha fimProcedimento Mas eu prefiro dessa maneira. Algoritmo "bordas" const BORDA1 = 1 BORDA2 = 2 BORDA3 = 3 var opcao, contador, quantidade:inteiro msg:caractere procedimento borda(borda_tipo:inteiro) inicio escolha (borda_tipo) caso BORDA1 escreval("+-------=======------+") caso BORDA2 escreval("~~~~~~~~:::::::~~~~~~~") caso BORDA3 escreval("<<<<<<<<------->>>>>>>") fimEscolha fimProcedimento procedimento gerador(msg:caractere; repeticao, borda_tipo:inteiro) var contador:inteiro inicio borda(borda_tipo) para contador de 1 ate repeticao faca escreval(msg) fimPara borda(borda_tipo) fimProcedimento inicio escreval("Escolha entre uma dessas bordas") para contador de BORDA1 ate BORDA3 faca escreva("Borda ", contador,"|") borda(contador) fimPara leia(opcao) escreval("Digite uma mensagem para aparecer na borda") leia(msg) escreval("Digite a quantidade de vezes que voce quer que a mensgaem se repita") leia(quantidade) gerador(msg, quantidade, opcao) fimAlgoritmo -
@Pietra Ester Eu acho melhor você reescrever porque tem muita coisa errada aí. Veja que aqui você declarou o ponteiro para a variável vet e nunca usou você ignora o vetor criado no main era pra ser algo como vet = cria_vet(tamanho_vetor); E você declarou vet como vetor sendo que era para declarar como ponteiro. Errado! Correto! float *vet = NULL; Tome um exemplo de como fazer para criar o vetor. #include <stdio.h> #include <stdlib.h> #include <time.h> #define NOME_ARQUIVO "teste.txt" float *vetor_cria(int tamanho) { /* Cria um vetor do tamanho dado pela variavel tamanho */ float *vetor = malloc(sizeof(*vetor)*tamanho); /* Checa se foi possível criar o vetor */ if (vetor != NULL) { /* Devolve o vetor para a função que o chamou */ return(vetor); } /* Retorna NULL caso não for possível reservar a memória para o vetor */ return(NULL); } void vetor_apaga(float **vetor) { /* Verifica se o ponteiro é valido */ if (*vetor != NULL) { /* Libera a memória reservada */ free(*vetor); } /* Invalida o ponteiro */ *vetor = NULL; } /* * Coloca numeros aleatorios de 0 a 100 no vetor */ void vetor_inicializa_aleatorios(float *vetor, int tamanho) { int contador; /* Passa a hora e a data do sistema como semente para o gerador de numeros */ srand(time(NULL)); /* Coloca os numeros no vetor */ for (contador = 0; contador < tamanho; contador++) { vetor[contador] = rand()%100; } } void vetor_inicializa_usuario(float *vetor, int tamanho) { int contador; printf("Por favor digite %i numeros para o vetor\n", tamanho); for (contador = 0; contador < tamanho; contador++) { printf("[%i]:", contador+1); scanf("%f%*c", &vetor[contador]); } } float vetor_soma_elementos(float *vetor, int tamanho) { float soma = 0; int contador; for (contador = 0; contador < tamanho; contador++) { soma+=vetor[contador]; } return(soma); } float vetor_maior_elemento(float *vetor, int tamanho, float menor_elemento) { int contador; float maior = menor_elemento; for (contador = 0; contador < tamanho; contador++) { if (vetor[contador] > maior) { maior = vetor[contador]; } } return(maior); } float vetor_menor_elemento(float *vetor, int tamanho, float maior_elemento) { int contador; float menor = maior_elemento; for (contador = 0; contador < tamanho; contador++) { if (vetor[contador] < menor) { menor = vetor[contador]; } } return(menor); } void vetor_mostra(float *vetor, int tamanho) { int contador; for (contador = 0; contador < tamanho; contador++) { printf("[%i]:%.2f\n", contador+1, vetor[contador]); } } int main(void) { /* Variaveis para guardar os valores retornados */ float soma = 0, maior = 0, menor = 0, diferenca = 0; /* Nosso vetor dinamico */ float *vetor = NULL; /* tamanho do vetor */ int vetor_tamanho = 0; char opcao; /* Pergunta o tamanho do vetor */ printf("Digite o tamanho do vetor:"); scanf("%i%*c", &vetor_tamanho); /* Cria o vetor */ vetor = vetor_cria(vetor_tamanho); /* Checa se foi possível criar o vetor */ if (vetor == NULL) { perror("Erro: não foi possível reservar memória!"); exit(EXIT_FAILURE); } /* Inicia o vetor */ vetor_inicializa_aleatorios(vetor, vetor_tamanho); /* Mostra o vetor */ printf("Vetor gerado!\n"); vetor_mostra(vetor, vetor_tamanho); /* Pega o maior elemento do vetor */ maior = vetor_maior_elemento(vetor, vetor_tamanho, 0); /* Pega o menor elemento do vetor */ menor = vetor_menor_elemento(vetor, vetor_tamanho, maior); printf("O maior elemento do vetor e %.2f e o menor e %.2f\n", maior, menor); /* Mostra a diferenca */ diferenca = maior-menor; printf("E a diferenca e %.2f\n", diferenca); /* Libera o vetor */ vetor_apaga(&vetor); getchar(); /* Espera a tecla enter */ return(0); } Exemplo online!
-
você está retornado eles na função diferenca() e soma_elementos(). Eu coloquei como pegar aqui
-
@Pietra Ester Perceba que no main você não pegou as variáveis soma e dif. //BIBLIOTECAS #include <stdio.h> #include <stdlib.h> #define ARQ_LOCAL "info.txt" //VARÁVEL GLOBAL PARA O TAMANHO DO VETOR int tam_v; //CRIA VETOR int *cria_vet(int n) { int *vet; int i; printf("\nDigite o tamanho do vetor: "); scanf("%d%*c", &tam_v); //cria um vetor de n posições vet = (int *) malloc (tam_v*sizeof(int)); return vet; } //PREENCHE O VETOR void inicializa(float *vet, int tam_v) { int i; //Preenche o vetor for(i=0; i<tam_v; i++) { printf("Elemento %d: ", i);//valores digitados pelo usuario scanf("%f%*c", &vet[i]);//lê os valores } } //MOSTRA float mostra(float *vet, int tam_v) { int i; printf("\nVetor gerado:\n"); for (i=0; i<tam_v; i++) printf("%.2f ", vet[i]); return vet[tam_v];//retorna o vetor } //CALCULA A DIFERENÇA float diferenca(float *vet, int tam_v) { int i; float dif, menor, maior; //encontra o maior maior = vet[0]; for(i=1; i<tam_v; i++) { if (vet[i] > maior) maior = vet[i]; } printf("\n\nMaior = %.2f\n", maior); //encontra o menor menor = vet[0]; for(i=1; i<tam_v; i++) { if (vet[i] < maior) menor = vet[i]; } printf("Menor = %.2f\n", menor); //calcula a diferença dif = maior - menor; //mostra a diferença printf("Diferenca = %.2f \n\n", dif); return dif; } //CALCULA A SOMA DOS ELEMENTOS float soma_elementos(float *vet, int tam_v) { int i; float soma=0; for(i=0; i<tam_v; i++) { soma = soma + vet[i]; } printf("Soma dos elementos = %.2f\n\n", soma); return soma; } //ARMAZENA EM DISCO float salva_le(float *vet, int tam_v, float soma, float dif) { FILE *fp; //Modo W de write (escrita) fp = fopen(ARQ_LOCAL, "w"); if(fp == NULL) { printf("Sem memória!\n");//verifica se existe o arquivo } else { fprintf(fp, "Soma = %f", soma); fprintf(fp, " Dif = %f", dif); printf("Soma e diferenca gravados com sucesso!\n"); fclose(fp);//fecha o arquivo } //LÊ EM DISCO FILE *le; le = fopen(ARQ_LOCAL, "r");//Modo R de Read (leitura) if(le == NULL) //verifica se existe o arquivo { printf("\nErro ao abrir o arquivo.\n\n"); } else { fscanf(le, "Soma = %.2f\n", &soma); fscanf(le, "Dif = %.2f", &dif); printf("Soma = %.2f\nDiferenca = %.2f\n", &soma, &dif); fclose(fp);//fecha o arquivo } /* system ("pause"); Chega a ser engraça do :b *///pausa na tela, somente para Windows getchar(); } int main() { //VARIÁVEIS int n; float vet[tam_v], soma, dif; //CABEÇALHO printf("---> Avaliacao de Algoritmo\n"); printf("---> 2o Semestre\n"); printf("---------------------------------------\n"); //FUNÇÃO QUE CRIA O VETOR cria_vet(n); //FUNÇÃO QUE INICIALIZA O VETOR inicializa(vet, tam_v); //FUNÇÃO QUE IMPRIME O VETOR mostra(vet, tam_v); //FUNÇÃO QUE CALCULA A DIFERENÇA dif = diferenca(vet, tam_v); //FUNÇÃO SOMA soma = soma_elementos(vet, tam_v); //FUNÇÃO QUE ARMAZENA EM DISCO FAZ A LEITURA salva_le(vet, tam_v, soma, dif); return 0; } E esse seu código tem um vazamento de memória.
-
@Fídias Torres Não recomendo ficar misturando C e C++, ou você faz em um ou no outro. Seria essa a sua ideia? usando apenas C. #include <stdio.h> #include <stdlib.h> #include <string.h> #define T_STR 80 void apagaTela(void) { int cont; for (cont = 0; cont < 40; cont++) printf("\n"); } int main(void) { int q_linhas, q_colunas, linhas, colunas, opcao; apagaTela(); /* Pega a quantidade de linhas */ do { printf("Digite a quantidade de linhas da matriz:"); scanf("%i%*c", &q_linhas); if (q_linhas < 1) { printf("Valor invalido!\nDigite novamente\n"); } } while (q_linhas < 1); apagaTela(); /* Pega a quantidade de colunas */ do { printf("Digite a quantidade de colunas da matriz:"); scanf("%i%*c", &q_colunas); if (q_colunas < 1) { printf("Valor invalido!\nDigite novamente\n"); } } while (q_colunas < 1); apagaTela(); char matriz[q_linhas][q_colunas][T_STR]; /* Pega a matriz */ for (linhas = 0; linhas < q_linhas; linhas++) { for (colunas = 0; colunas < q_colunas; colunas++) { printf("Digite o nome da linha e coluna [%i][%i]:", linhas, colunas); fgets(matriz[linhas][colunas], T_STR, stdin); /* Retira o caractere de nova linha da string */ matriz[linhas][colunas][strlen(matriz[linhas][colunas])-1] = '\0'; } } do { printf("Deseja visualizar a matriz 1\\sim 0\\não:"); scanf("%i%*c", &opcao); switch (opcao) { case 1: /* Mostra a matriz */ for (linhas = 0; linhas < q_linhas; linhas++) { for (colunas = 0; colunas < q_colunas; colunas++) { printf("%s, ", matriz[linhas][colunas]); } printf("\n"); /* Salta uma linha */ } break; case 0: printf("Operacao finalizada!\n"); break; default: printf("Opcao invalida!\n"); } } while (opcao != 0); return(0); } exemplo online
-
Meu PC não usa quase nada dos componentes e trava nas edições de vídeo
kgin respondeu ao tópico de maxdrafs em Problemas de desempenho
Se você tem essa configuração, então não é problema de hardware (poderia ser se caso o computador congela-se do nada), verificar o HD e SSD sempre e bom. Recomendo você usar o ffmpeg para fazer um benchmark da cpu e gpu renderizando um vídeo para 2k ou 4k. se não souber usar, use o kdenlive para fazer o teste. o ffmpeg e muito bom para denunciar algum problema de software. -
C++ Aumentar o tamanho da matriz sem deixar o Código imenso
kgin respondeu ao tópico de Fídias Torres em C/C#/C++
Você pode fazer uma matriz só para os nomes da matriz e uma matriz só para os valores. int valores[linhas][colunas]; char nomes[linhas][colunas][64]; eh minha praia e outra, tô mais pra programação de jogos e embarcados -
Meu PC não usa quase nada dos componentes e trava nas edições de vídeo
kgin respondeu ao tópico de maxdrafs em Problemas de desempenho
Qual é a especificação do sistema? Pode ser uma gama de fatores como resolução muito alta, o programa tentando usar a GPU ao invés da CPU ou produto pirata. Uma solução se caso for a resolução muito alta seria usar proxys para editar em uma resolução baixa, e só depois desativar para renderizar em uma resolução alta. -
C++ Aumentar o tamanho da matriz sem deixar o Código imenso
kgin respondeu ao tópico de Fídias Torres em C/C#/C++
@Fídias Torres Poder ajudar eu até posso, mas eu literalmente não estou entendendo quase nada do seu algoritmo. isso seria simples dependendo do compilador que você está usando, você poderia usar VLAs. Exemplo #include <stdio.h> int main() { /* Pega o tamanho da matriz */ int q_linhas, q_colunas; printf("Digite o quantidade de linhas da matriz:"); scanf("%d%*c", &q_linhas); printf("Digite o quantidade de colunas da matriz:"); scanf("%d%*c", &q_colunas); /* Declara a matriz */ int matriz_quadrados[q_linhas][q_colunas]; int linhas, colunas; for (linhas = 0; linhas < q_linhas; linhas++) { for (colunas = 0; colunas < q_colunas; colunas++) { matriz_quadrados[linhas][colunas] = (linhas+1)*(colunas+1); } } printf("Quadrados da matriz\n"); for (linhas = 0; linhas < q_linhas; linhas++) { for (colunas = 0; colunas < q_colunas; colunas++) { printf("%d, ", matriz_quadrados[linhas][colunas]); } printf("\n"); } return(0); } Veja no navegador! Ou usar alocação dinâmica de memória. -
C++ Aumentar o tamanho da matriz sem deixar o Código imenso
kgin respondeu ao tópico de Fídias Torres em C/C#/C++
@Fídias Torres Isso funciona? as informações do seu programa estão muito espalhadas, coisas como você poderia declarar assim float som[10]; e acessar assim som[0] = 33.0f; som[1] = 13.49f Usar estruturas (structs) ajudaria também para organizar o código. -
Veja que aqui você usou a vírgula "," sendo que o certo seria o ponto "." Em C a vírgula e um operador e um separador. Saiba mais em Operador de vírgula: ,
-
Mas você quer fazer para o windows 10? No windows 10 você tem que chamar uma função do sistema, mas no msdos que foi o que você fez você chamaria uma interrupção da BIOS. Exemplo em dos ; Declarações DOSSEG .MODEL SMALL .STACK 200h .DATA .CODE START: ; Codigo mov dx,OFFSET mensagem mov ax,SEG mensagem mov ds,ax mov ah,9h int 21h ; Encerra o programa mov ax,4c00h int 21h mensagem db "Hell world!$" END START Eu tenho quase certeza que funciona no dos com o TASM (utilize o dosbox para testar).
-
@Vitor0244 qual é a plataforma?
-
@gcrestudante Meu matematiquês tá meio ruim, mas eu acho que seria algo assim #include <stdio.h> int main(void) { int numero, maiorQ, quadrado = 0; /* Escreva um algoritmo que leia um número inteiro, positivo N */ do { printf("Informe N\n"); scanf("%i%*c", &numero); if (numero < 0) { printf("Digite um numero positivo!\n"); } } while (numero < 0); /* calcule e mostre o maior quadrado menor ou igual a N */ maiorQ = 0; while (maiorQ < numero) { maiorQ = quadrado*quadrado; printf("%i=%i*%i\n", maiorQ, quadrado, quadrado); if (maiorQ < numero) { quadrado++; } else if ( maiorQ > numero) { quadrado--; } } printf("O maior quadrado calculavel é %i\n", quadrado); printf("%i=%i*%i\n", quadrado*quadrado, quadrado, quadrado); return(0); }
-
@gcrestudante Qual seria a sua duvida exatamente? Seu algoritmo cumprindo alguns critérios do enunciado. #include <stdio.h> #define TAM 10 int main () { int vet[TAM], contador, numero, impares = 0; /* Elabore um algoritmo que leia um vetor de 10 posições */ for (contador = 0; contador < TAM; contador++) { printf("Digite um numero para a posicao %i do vetor:", contador); scanf("%i%*c", &vet[contador]); } /* e em seguida um valor X qualquer */ printf("Informe X:"); scanf("%i", &numero); /* Seu algoritmo deverá dizer qual a quantidade de números ímpares maiores que X */ //conta impares for (contador = 0; contador < TAM; contador++) { if (vet[contador]%2 == 1) { //testa se impar impares++; } } printf ("Quantidade de impares:%i\n", impares); return(0); } Utilize o botão code <> para postar no fórum.
-
Poste o que você já fez.
-
C Armazenar valor de variável em uma posicao vetor
kgin respondeu ao tópico de Vitor Nata Zanetta Santos em C/C#/C++
Você pode colocar na terceira posição da matriz. exemplo for (i = 0; i < 15; i++) { mat[i][2] = mat[i][0]/mat[i][1]; } Mas eu daria preferência para criar constantes ao invés de digitar as posições. exemplo #include <stdio.h> #include <stdlib.h> #define QUANTIDADE_PESSOAS 15 #define QUANTIDADE_MEDIDAS 3 #define PESO 0 #define ALTURA 1 #define IMC 2 int main(int argc, char *argv[]) { float informacao_pessoas[QUANTIDADE_PESSOAS][QUANTIDADE_MEDIDAS]; int linhas, colunas; /* Pega o peso e a altura */ for(linhas = 0;linhas < QUANTIDADE_PESSOAS; linhas++) { for (colunas = 0; colunas < QUANTIDADE_MEDIDAS-1; colunas++) { switch (colunas) { case PESO: printf("Digite o peso da pessoa %i em Kilos:", linhas+1); scanf("%f%*c", &informacao_pessoas[linhas][colunas]); break; case ALTURA: printf("Digite a altura da pessoa %i em metros:", linhas+1); scanf("%f%*c", &informacao_pessoas[linhas][colunas]); break; } } } /* Calcula o IMC */ for (linhas = 0; linhas < QUANTIDADE_PESSOAS; linhas++) { informacao_pessoas[linhas][IMC] = informacao_pessoas[linhas][PESO]/informacao_pessoas[linhas][ALTURA]; } /* Mostra o IMC de cada pessoa */ for (linhas = 0; linhas < QUANTIDADE_PESSOAS; linhas++) { printf("O imc da pessoa %i e de %.2f\n", linhas+1, informacao_pessoas[linhas][IMC]); } printf("Pressione enter para continuar....\n"); getchar(); return 0; } -
VisualG Gostaria de saber se há uma forma de melhorar o meu código!
kgin respondeu ao tópico de Robs156 em Programação - iniciantes
@Robs156 Não tem muito o que melhorar, a sua lógica está muito boa. você deveria usar constantes e evitar usar letras soltas. exemplo algoritmo "semnome" const QUANTIDADE_PESSOAS = 3 var idade: vetor [1..QUANTIDADE_PESSOAS] de inteiro contador, maior, posicao_maior: inteiro soma_idades: real inicio maior <- 0 Para contador <- 1 ate QUANTIDADE_PESSOAS faca EscrevaL("Digite sua idade: ") Leia(idade[contador]) soma_idades <- soma_idades + idade[contador] Se (idade[contador] > maior) entao maior <- idade[contador] posicao_maior <- contador Fimse FimPara EscrevaL("A média de idade foi: ", soma_idades/QUANTIDADE_PESSOAS) EscrevaL("A maior idade digitada foi: ", maior) EscrevaL("Temos pessoas com mais de 25 anos nas posições: ") Para contador <- 1 ate QUANTIDADE_PESSOAS faca Se (idade[contador] > 25) entao EscrevaL("Posição: ",contador) FimSe FimPara EscrevaL("A maior idade foi digitada na posição: ", posicao_maior) fimalgoritmo Indentação é sempre importante também! -
E possível fazer isso, mas isso depende de varias coisas (principalmente do sistema operacional). O caminha mais fácil seria utilizar ncurses ou pdcurses.
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