Pesquisar na Comunidade
Mostrando resultados para as tags ''binarios''.
Encontrado 4 registros
-
não converte o codigo na hora de ir de binario para hexa ou etc #include <stdio.h> #include <math.h> #include <stdlib.h> #define SIZE 255 #define ALG 17 int number,opcao; // Esta função converte um número decimal para a base 2, 8 ou 16. // Recebe como parâmetro um número decimal (num_dec), e a base (base) cujo número será convertido. void decToBase(int num_dec, int base) { char resto[ALG] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}, num_conv; int indx = 0; // Este loop realiza as operações de divisão. Os restos são guardados no vetor 'num_conv' while(num_dec > 0) { num_conv[indx] = resto[num_dec % base]; num_dec /= base; indx++; } // Exclui o caractere especial '\0' do final da string indx -= 1; // Utilizado para identificar a saída do programa switch(base) { case 2 : printf("BINÁŔIO: "); break; case 8 : printf("OCTAL: "); break; case 16 : printf("HEXADECIMAL: "); break; } // Inverte a string contida no vetor num_conv for(indx; indx >= 0; indx--) printf("%c", num_conv[indx]); printf("\n"); switch(opcao) { int num_salva; case 2: if(base=2) { for(indx; indx >= 0; indx--) { number+=num_conv[indx]; } } break; case 3: if(base=8) { for(indx; indx >= 0; indx--) { number+=num_conv[indx]; } } break; case 4: if(base=16) { for(indx; indx >= 0; indx--) { number+=num_conv[indx]; } } break; } } // Esta função permite converter um número na base 2, 8 ou 16 para a base decimal. // Recebe como parâmetro uma string (representação do número), e um número inteiro que // determina em qual base está o número do primeiro parâmetro. void baseToDec(char* num_base, int base) { int indx = 0, exp = 0, cont = 0, dec = 0, num = 0; // Este loop determina o tamanho da string while(num_base[cont] != '\0') { cont++; } // Neste loop, a string é percorrida de trás para frente. Cada caractere é convertido // em um número inteiro, multiplicado pela base elevada ao expoente (0..Comprimento da string) // e somado ao valor da variável 'dec', que recebe as somas sucessivas. for(exp, indx=(cont-1); exp < cont; exp++, indx--) { if(base == 16) { switch(num_base[indx]) { case 'A' : case 'a' : num = 10; break; case 'B' : case 'b' : num = 11; break; case 'C' : case 'c' : num = 12; break; case 'D' : case 'd' : num = 13; break; case 'E' : case 'e' : num = 14; break; case 'F' : case 'f' : num = 15; break; default : num = (int)num_base[indx] - (int)'0'; } } else num = (int)num_base[indx] - (int)'0'; // Aqui avalia se o usuário digitou um número válido ou não! if(num > (base-1) || num < 0) { printf("Você informou um número inválido!\n"); exit(0); } dec += num * pow(base, exp); } // O número convertido para decimal é exibido printf("DECIMAL: %d\n", dec); } // Função que imprime o menu da calculadora void menu(void) { printf("\nBEM-VINDO AO CONVERSOR DE BASES NUMÉRICAS\n"); printf("QUAL OPERAÇÃO DESEJA REALIZAR? \n"); printf("[ 1 ] DECIMAL -> BINARIO, OCTAL e HEXADECIMAL\n"); printf("[ 2 ] BINARIO -> DECIMAL, OCTAL e HEXADECIMAL\n"); printf("[ 3 ] OCTAL -> DECIMAL, BINARIO e HEXADECIMAL\n"); printf("[ 4 ] HEXADECIMAL -> DECIMAL, BINARIO, OCTAL\n"); printf("[ 0 ] SAIR\n"); } // Função que chama as funções correspondentes à opção escolhida void process_calc(int opt) { char str; switch(opt) { case 0 : printf("CALCULADORA ENCERRADA!\n"); exit(0); case 1 : printf("DECIMAL: "); scanf("%d", &number); decToBase(number, 2); decToBase(number, 8); decToBase(number, 16); break; case 2 : printf("BINÁRIO: "); scanf("%s", str); baseToDec(str, 2); decToBase(number, 8); decToBase(number, 16); break; case 3 : printf("OCTAL = "); scanf("%s", str,3); baseToDec(str, 8); decToBase(number, 2); decToBase(number, 16); break; case 4 : printf("HEXADECIMAL = "); scanf("%s", str); baseToDec(str, 16); decToBase(number, 2); decToBase(number, 8); break; default : printf("OPÇÃO NÃO PERMITIDA!\nTENTE NOVAMENTE\n"); break; } } int main(void) { menu(); printf("QUAL OPERAÇÃO DESEJA REALIZAR? "); scanf("%d", &opcao); process_calc(opcao); return 0; }
-
Olá pessoal, gostaria de tirar algumas duvidas sobre meu código. Tenho que entregar hoje esse trabalho de estrutura de dados e estou ferrada. Isso foi o que consegui fazer.. mas não consigo rodar.. Será que alguém tem alguma dica do que pode estar errado, ou se estou perdida mesmo e não tem mais salvação? Quem puder ajudar eu agradeço muito!!!! O "programa" está em (uma tentativa de) C. Segue código: (coloquei a especificação do trabalho no comentário) #include <iostream> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ struct candidato { char inscr[10]; char nome[44]; int periodo; char turno[3]; int posicao; char curso[30]; }; typedef struct candidato Candidato; struct Nolista{ char *nomearquivo[14]; struct Nolista *prox; }; struct NolistaFiles{ FILE *arquivo; struct Nolista *prox; }; //Usar uma lista que contém os nomes dos arquivos a ordenar //A cada passo do algoritmo, retirar os 7 primeiros itens da //lista, intercalá-los, colocar o arquivo resultante no final da lista //O algoritmo pára quando a lista tiver apenas 1 arquivo(que será o resultante) int main(void) { Nolista *lista_nomearquivo, *lista_nomearquivoatual; lista_nomearquivoatual = lista_nomearquivo; //ponteiros para lista de nomes de arquivos NolistaFiles *lista_arquivos, *lista_arquivosatual; lista_arquivosatual = lista_arquivos; //ponteiros para lista de arquivos //FILE *saida, *file1, *file2, *file3, *file4, *file5, *file6; FILE *saida; saida = fopen("candidatos.txt","a"); char nomearquivo[14]; //guarda nome de cada arquivo no while que constrói os nomes int numeroarquivo=000; //numero do nome do arquivo que será construido no while que constrói os nomes int totalarquivos - 68; //total de 68 arquivos int contadorarquivos = 0; //contador de arquivos lidos while (contadorarquivos < totalarquivos){ //enquanto ainda existir algum arquivo //constrói lista dos nomes dos arquivos int i = 1; while (i <8) { nomearquivo = strcat("candidatos.", numeroarquivo); lista_nomearquivoatual = nomearquivo; lista_nomearquivoatual = lista_nomearquivoatual.prox; numeroarquivo++; i++; } //abre 6 arquivos na lista de arquivos lista_nomearquivoatual = lista_nomearquivo; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_arquivosatual = lista_arquivos; while (lista_arquivosatual != NULL) { //Enquanto não chegar ao fim da lista de arquivos, while(!feof(lista_arquivosatual.arquivo) { //enquanto não encontrar o fim do arquivo atual, ler dados de cada candidato. Candidato candidato_lido; fgets(candidato_lido.inscr, 10, lista_arquivosatual); fgets(candidato_lido.nome, 44, lista_arquivosatual); fgets(candidato_lido.periodo, 2, lista_arquivosatual); fgets(candidato_lido.turno, 3, lista_arquivosatual); fgets(candidato_lido.posicao, 3, lista_arquivosatual); fgets(candidato_lido.curso, 30, lista_arquivosatual); fprintf (saida, candidato_lido.inscr, candidato_lido.nome, candidato_lido.periodo, candidato_lido.turno, candidato_lido.posicao, candidato_lido.curso, "\n"); //escreve dados lidos no arquivo saida } lista_arquivosatual = lista_arquivosatual.prox; //ler próximo arquivo } //fecha 6 arquivos lista_arquivosatual = lista_arquivos; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); contadorarquivos = contadorarquivos+6; //conta +6 arquivos lidos } fclose(saida); //fecha arquivo de saida system("pause"); return 0; }
-
Ajuda código em C trabalho de faculdade
uma questão postou Beatriz Rachel Tutoriais & Dicas - C, C++
Olá pessoal, gostaria de tirar algumas duvidas sobre meu código. Tenho que entregar hoje esse trabalho de estrutura de dados e estou ferrada. Isso foi o que consegui fazer.. mas não consigo rodar.. Será que alguém tem alguma dica do que pode estar errado, ou se estou perdida mesmo e não tem mais salvação? Quem puder ajudar eu agradeço muito!!!! O "programa" está em (uma tentativa de) C. Segue: #include <iostream> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ struct candidato { char inscr[10]; char nome[44]; int periodo; char turno[3]; int posicao; char curso[30]; }; typedef struct candidato Candidato; struct Nolista{ char *nomearquivo[14]; struct Nolista *prox; }; struct NolistaFiles{ FILE *arquivo; struct Nolista *prox; }; //Usar uma lista que contém os nomes dos arquivos a ordenar //A cada passo do algoritmo, retirar os 7 primeiros itens da //lista, intercalá-los, colocar o arquivo resultante no final da lista //O algoritmo pára quando a lista tiver apenas 1 arquivo(que será o resultante) int main(void) { Nolista *lista_nomearquivo, *lista_nomearquivoatual; lista_nomearquivoatual = lista_nomearquivo; //ponteiros para lista de nomes de arquivos NolistaFiles *lista_arquivos, *lista_arquivosatual; lista_arquivosatual = lista_arquivos; //ponteiros para lista de arquivos //FILE *saida, *file1, *file2, *file3, *file4, *file5, *file6; FILE *saida; saida = fopen("candidatos.txt","a"); char nomearquivo[14]; //guarda nome de cada arquivo no while que constrói os nomes int numeroarquivo=000; //numero do nome do arquivo que será construido no while que constrói os nomes int totalarquivos - 68; //total de 68 arquivos int contadorarquivos = 0; //contador de arquivos lidos while (contadorarquivos < totalarquivos){ //enquanto ainda existir algum arquivo //constrói lista dos nomes dos arquivos int i = 1; while (i <8) { nomearquivo = strcat("candidatos.", numeroarquivo); lista_nomearquivoatual = nomearquivo; lista_nomearquivoatual = lista_nomearquivoatual.prox; numeroarquivo++; i++; } //abre 6 arquivos na lista de arquivos lista_nomearquivoatual = lista_nomearquivo; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_nomearquivoatual = lista_nomearquivoatual.prox; lista_arquivosatual = lista_arquivosatual.prox; lista_arquivosatual = fopen(lista_nomearquivoatual, "r"); lista_arquivosatual = lista_arquivos; while (lista_arquivosatual != NULL) { //Enquanto não chegar ao fim da lista de arquivos, while(!feof(lista_arquivosatual.arquivo) { //enquanto não encontrar o fim do arquivo atual, ler dados de cada candidato. Candidato candidato_lido; fgets(candidato_lido.inscr, 10, lista_arquivosatual); fgets(candidato_lido.nome, 44, lista_arquivosatual); fgets(candidato_lido.periodo, 2, lista_arquivosatual); fgets(candidato_lido.turno, 3, lista_arquivosatual); fgets(candidato_lido.posicao, 3, lista_arquivosatual); fgets(candidato_lido.curso, 30, lista_arquivosatual); fprintf (saida, candidato_lido.inscr, candidato_lido.nome, candidato_lido.periodo, candidato_lido.turno, candidato_lido.posicao, candidato_lido.curso, "\n"); //escreve dados lidos no arquivo saida } lista_arquivosatual = lista_arquivosatual.prox; //ler próximo arquivo } //fecha 6 arquivos lista_arquivosatual = lista_arquivos; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); lista_arquivosatual = lista_arquivosatual.prox; fclose(lista_arquivosatual); contadorarquivos = contadorarquivos+6; //conta +6 arquivos lidos } fclose(saida); //fecha arquivo de saida system("pause"); return 0; } -
Oi pessoal, sou novo aqui no fórum e queria saber do que vocês acharam desse código-fonte que converte números decimais em números binários #include <stdio.h> #include <stdlib.h> int program() { int a,b,c,d,i,z; int s_0[16]; int def_0, def_1; int v_d = 0; int v_d1 = 1; int var_p; for(z = 0; z < 16; z++) s_0[z] = 0; if(v_d1 == 1) { printf("Digite um numero a ser convertido:\n"); scanf("%d", &a); b = a/2; c = b*2; d = a-c; s_0[16] = d; while ( b > 0) { if(v_d == 0) { def_0 = 15; } i = b; b = b/2; c = b*2; d = i-c; s_0[def_0] = d; def_0--; v_d++; } printf("resultado: \n"); for(var_p = 1; var_p <= 16; var_p++) { printf("%d", s_0[var_p]); } printf("\n"); } } int main() { int pa; int internal_error = 0; char help[20] = "ajuda"; char conversor[20] = "conversor"; char sair[20] = "sair"; char ler[20]; comparations: { printf("funcao: "); scanf("%s", &ler); /////////// if(strcmp(ler, conversor) == 0) { { program(); } goto comparations; } if(strcmp(ler, help) == 0) { printf("convertor: converte numeros decimais em binario\nquit: finaliza o programa\n"); } else { if(strcmp(ler, sair) == 0) { return; //terminará o programa } printf("Esta funcao não e reconhecida, digite help para mais informacoes\n"); goto comparations; } } goto comparations; }