Pesquisar na Comunidade
Mostrando resultados para as tags ''binário''.
Encontrado 19 registros
-
elabore um programa que leia dois numeros decimais inteiros de no maximo 32 bits e determine, bit a bit, quais bits são iguais nos dois numeros, e dos que forem igual se são '' 0 '' ou '' 1''. Por exemplo, os numeros 0 e 255 contem 24 bits iguais (bit8...bit31), em zero, e 8 bits diferente ( bit0...bit7). nesse caso a impressao seria: bits iguais: || valor 7 0 8 0 9 0 . . . 31 0
-
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; }
-
alguém pra me tirar uma duvida que está incomodando e muito. Bom, trabalhamos com Binario em matriz multinivel, temos uma "Arvore" como exemplo em nosso site, porém ela não fica da mesma forma quando vista do celular e a web já está responsiva, ou seja já está programada pra computador ou celular, tablets etc. Esta é a imagem do computador: no celular, fica assim: Algo está errado, ela fica toda desmontada^^ já tentei colocar barra de rolagem para que possa arrastar pra um lado e para outro, porem no celular não aparece a barra, somente no computador, gostaria de saber se alguém poderia dar essa ajudinha.
-
Olá a todos, boa noite! sou novo no forum, e desde já peço desculpas caso essa pergunta já tenha sido respondida em outro tópico. Bom o caso é o seguinte, estou no II Semestre do curso de Sistemas de informação (Na verdade o semestre nem começou kkkk) entretanto to ainda com um pouco de dificuldade em criar funções recursivas. Eu estava resolvendo umas questões da ultima prova da unidade que eu fiz, e me ocorreu que uma das questões que eu praticamente tinha certeza que estava certa, esta dando a saída errada. Eu deveria criar uma função recursiva que recebesse um numero decimal e convertesse o mesmo para binário. meu codigo ficou assim: /* função recebe um numero decimal inteiro positivo e verifica se o numero é menor que 2, caso seja ela ira retornar o valor da variável (0 ou 1), se o numero não for menor que 2, ela irá imprimir o valor da variavel mod 2 e retornar de modo recursivo o valor da decimal dividido por 2. O erro ocorre porque o valor mostrado como resultado fica invertido, por exemplo se o valor for 1010 (base 2) ele aparece 0101(base 2) */ int binario (int decimal) { if (decimal < 2) { return decimal; }else { cout<<decimal%2; return binario(decimal/2); }
-
Eu estou com o seguinte problema: receber dois números decimais e convertê-los para binário e depois realizar a soma binaria dos números que foi convertidos (considerar números negativos). Eu consegui fazer a maior parte, mas a soma esta saindo errada. Quem puder me ajudar eu agradeço.Segue o código do programa ate agora: #include <stdio.h> #define na 16 int main() { int n,n1,r[na],r1[na],i,somav[na],vaium=0,invert[na],np=1; /*Lê o número*/ printf("\n Digite o primeiro numero: "); scanf("%d", &n); /* Utiliza um número de 16 bits como base para a conversão.*/ for(i = na-1; i >= 0; i--) { r[i] = (n >> i) & 1; /*Por meio do "e" lógico ele compara se o valor na posição mais à direita é 1 ou 0 e imprime na tela até reproduzir o número binário.*/ if(r[i] & 1) printf("1",r[i]); else printf("0",r[i]); } printf("\n Digite o segundo numero: "); scanf("%d", &n1); for(i = na-1; i >= 0; i--) { r1[i] = (n1 >> i) & 1; if(r1[i] & 1) printf("1",r1[i]); else printf("0",r1[i]); } /*for (i=na-1;i>=0;i--) vaium[i]=0;*/ if(n<0) { for(i=na-1;i>=0;i--){ if(r[i]==1) invert[i]=0; else if(r[i]==0) invert[i]=1; } for (i=na-1;i>=0;i--) r[i]=invert[i]+np+vaium; if(r[i]==2){ r[i]=0; vaium++; } } else if(n1<0){ for(i=na-1;i>=0;i--){ if(r1[i]==1) invert[i]=0; else if(r1[i]==0) invert[i]=1; } for (i=na-1;i>=0;i--) r1[i]=invert[i]+np+vaium; if(r1[i]==2){ r1[i]=0; vaium++; } } for(i=na-1;i>=0;i--){ somav[i]=r[i]+r1[i]+vaium; if((somav[i]==2) || (somav[i]==3)){ somav[i]=0; vaium++; } } printf("\n Soma dos numeros binarios:"); for (i=na-1;i>=0;i--) printf("%d",somav[i]%2); return 0; }
-
Meu programa para converter decimal para binario ficou assim, não estou conseguindo entender muito bem recursão int main(){ int n; scanf("%d", &n); printf("%d", bin(n)); } int bin(int num){ if(num==1){ return 1; } else{ printf("%d",num%2); return bin(num/2); } } porem assim ele imprime o numero binario ao contario, ao invez de imprimir por exemblo 1010 ele imprime 0101. Gostaria de saber o por que, e como corrigir e também entender porque o codigo abaixo funciona if(num==1){ return 1; } else{ return bin(num/2)*10+num%2; } OBRIGADO!
-
Ola pessoal, primeiro brigado a quem responder. Estou com duvidas neste exercicio ja pensei e pensei e não consigo chegar a resposta. O Exercicio é o seguinte: Escreva a função findsaw que procura, no inteiro value, a mais longa sequência de bits consecutivos com valores alternados. A função retorna apenas o índice do primeiro bit dessa sequência, sendo 0 o índice do bit de menor peso. No caso de haver mais do que uma resposta possível, deve ser retornada a que corresponder ao menor índice. Por exemplo, a chamada findsaw(0xEAEA476B) deve retornar 23. unsigned int findsaw(int value); OBS: eu fiz algumas coisas so que não estou a conseguir encontrar a "máscara" necessária para resolver o problema Abaixo Segue o que eu consegui fazer. [code] #include <stdio.h> unsigned int findsaw(int value); int main(){ printf("%d\n", findsaw(0x6)); return 0; } unsigned int findsaw(int value){ int count; int bigger; for(count = 0; value != 0; value >>= 1){ if((value & 01) || (value & 010)) count++; else if((value & 00) || (value & 011)){ if(count > bigger) bigger = count; count = 0; } bigger = count; } return bigger; } [/code] Ups sou novo neste forum e não consegui por o codigo bem desculpem pensava que tinha de usar [\code] mas não deu Penso que dá para entender de qualquer forma Obrigado desde já :)
-
Olá Pessoal, estou há algum tempo fazendo um trabalho de curso, no qual não consigo andar com isso. Meu sistema c# tem um banco de dados SQL Server e nele eu realizo uma pesquisa e os registros aparecem em um datagridview porem teria quando o registro aparecer, na teoria teria que seleciona-lo e a imagem aparecer em um pictureBox, porem travei nessa parte e não consigo mais achar mais informações sobre isso. eu tenho dois modos que eu fiz: // instancia da minha conexao Conexao ObjetoDados = new Conexao(); OpenFileDialog of = new OpenFileDialog(); SqlCommand cmd1 = new cmd1 SqlCommand("Select FSDATA from FSDATA where FSDATA" + lstPesquisa) // em cima é o select do banco para trazer a imagem que esta vinculado com o registro trazido da pesquisa //cmdsql = "Select FSDATA from FSDATA where idFSDATA = 1"; SqlDataAdapter dp = new SqlDataAdapter(cmd1); DataSet ds = new DataSet("FSDATA"); byte[] MisDados = new byte[0]; dp.Fill(ds, "FSDATA"); DataRow myRow = ds.Tables["FSDATA"].Rows[0]; MisDados = (byte[])myRow["FSDATA"]; MemoryStream ms = new MemoryStream(MisDados); picImage.Image = Image.FromStream(ms); e o outro é: //Instancio minha classe de conexao /* */Conexao ObjetoDados = new Conexao(); OpenFileDialog of = new OpenFileDialog(); try { FileStream fs = new FileStream("FSDATA", FileMode.OpenOrCreate, FileAccess.Read); byte[] bImage = new byte[fs.Length]; fs.Read(bImage, 0, Convert.ToInt32(fs.Length)); fs.Close(); conn.Open(); cmd = new SqlCommand("Select FSDATA from FSDATA where FSDATA " + lstPesquisa , conn); cmd.Parameters.Add("FSDATA", SqlDbType.VarBinary).Value = bImage; cmd.ExecuteNonQuery(); conn.Close(); } catch (SqlException sqle) { MessageBox.Show(sqle.ErrorCode.ToString()); } Sobre isso não achei muitas informações e estou precisando um pouco de ajuda. meu email é: gomes.augustovilla@hotmail.com
-
Ao Inserir a mercadoria, programa acusa que já existe. Não estou achando o problema, alguém consegue? // Christiano Bremm - 37301 #include <ctype.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> struct loja { int cod; char fornecedor[20]; float val_forn; }; struct Comp_forn { int cod; int cod_prod; char nome_prod[20]; float val_unit; int quantidade; }; int VerifForn(FILE *arq, char arquivo[100],int cod); void inserir (FILE *arq, char arquivo[100],int alt); void verificarF(FILE *arq,char arquivo[100]); void consultar (FILE *arq, char arquivo[100], int alt); void apagar(FILE *arq, char arquivo[100], int alt); void alterar(FILE *arq, char arquivo[100], int alt); int main() { int A; int B; char C; char fornecedor_arq[100] = "fornecedores.txt"; char compra_arq[100] = "compras.txt"; struct loja fornec; struct Comp_forn compras; FILE *arquivo_fornecedor, *arquivo_compras; verificarF(arquivo_fornecedor, fornecedor_arq); verificarF(arquivo_compras, compra_arq); do{ system("cls"); printf("=======LOJA DE CHOCOLATE======= \n"); printf("(1) - INSERIR INFORMACOES\n"); printf("(2) - MODIFICAR INFORMACOES\n"); printf("(3) - CONSULTAR INFORMACOES\n"); printf("(4) - APAGAR INFORMACOES \n"); printf("(0) - SAIR\n\n"); printf("OPCAO DESEJADA : "); fflush(stdin); C=tolower(getchar()); system("cls"); switch (C) { case 49: printf("==INSERIR==\n"); printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: "); scanf("%i",&A); while(A==1 || A==2){ if (A==1) inserir(arquivo_fornecedor, fornecedor_arq,A); else inserir(arquivo_compras, compra_arq,A); system("cls"); printf("==INSERIR==\n"); printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: "); scanf("%i",&A); } break; case 51: printf("==CONSULTAR==\n"); printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: "); scanf("%d",&A); while(A==1 || A==2){ if (A == 1) consultar(arquivo_fornecedor, fornecedor_arq,A); else consultar(arquivo_compras, compra_arq,A); system("cls"); printf("==CONSULTAR==\n"); printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: "); scanf("%d",&A); } break; case 50: printf("==MODIFICAR==\n"); printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: "); scanf("%d",&A); while(A==1 || A==2){ if (A == 1) alterar(arquivo_fornecedor, fornecedor_arq,A); else alterar(arquivo_compras, compra_arq,A); system("cls"); printf("==MODIFICAR==\n"); printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: "); scanf("%d",&A); } break; case 52: printf("==APAGAR==\n"); printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: "); scanf("%d",&A); while(A==1 || A==2){ if (A == 1) APAGAR(arquivo_fornecedor, fornecedor_arq,A); else APAGAR(arquivo_compras, compra_arq,A); system("cls"); printf("==APAGAR==\n"); printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: "); scanf("%d",&A); } break; case 48: exit(1); default: printf("==OPCAO INVALIDA==\n"); getch(); break; } } while (C != 48); return 0; } void verificarF(FILE *arq, char arquivo[100]){ arq = fopen(arquivo, "rb+"); if(arq == NULL){ arq = fopen(arquivo,"wb+"); if(arq == NULL){ printf("==ARQUIVO COM PROBLEMA NA CRIACAO OU ABERTURA==\n"); exit(1); } } } void inserir(FILE *arq, char arquivo[100],int alt) { arq = fopen(arquivo, "rb+"); char XYZ[25]; int iXYZ; if (alt == 1){ struct loja sXYZ; printf("INSIRA O CODIGO DO FORNECEDOR:\n"); fflush(stdin); gets(XYZ); iXYZ = VerifForn(arq, arquivo,atoi(XYZ)); while(iXYZ==1){ printf("==já CRIADO==\n"); printf("INSIRA O CODIGO DO FORNECEDOR: "); gets(XYZ); iXYZ = VerifForn(arq, arquivo,XYZ); fflush(stdin); } sXYZ.cod = atoi(XYZ); printf("INSIRA O NOME DO FORNECEDOR: \n"); gets(sXYZ.fornecedor); fflush(stdin); sXYZ.val_forn=0; fseek(arq,0,SEEK_END); fwrite(&sXYZ, sizeof(struct loja), 1, arq); } else{ struct Comp_forn sXYZ; printf("INSIRA O CODIGO DO FORNECEDOR: \n"); fflush(stdin); gets(XYZ); iXYZ = VerifForn(arq, arquivo,XYZ); while(iXYZ==0){ printf("==já CRIADO==\n"); printf("INSIRA O CODIGO DO FORNECEDOR:\n"); fflush(stdin); gets(XYZ); iXYZ = VerifForn(arq, arquivo,XYZ); } sXYZ.cod=atoi(XYZ); fflush(stdin); printf("INSIRA O CODIGO DO PRODUTO: \n"); gets(XYZ); sXYZ.cod_prod = atoi(XYZ); fflush(stdin); printf("INSIRA O NOME DO PRODUTO: \n"); gets(sXYZ.nome_prod); fflush(stdin); printf("INSIRA O preço DO PRODUTO:\n"); scanf("%.2f", &sXYZ.val_unit); fflush(stdin); printf("INSIRA A QUANTIDADE COMPRADA DO PRODUTO: \n"); scanf("%i", &sXYZ.quantidade); fflush(stdin); fseek(arq,0,SEEK_END); fwrite(&sXYZ,sizeof(struct Comp_forn),1, arq); } fclose(arq); printf("REGISTRO EXECUTADO! PRESSIONE ENTER PARA PROSSEGUIR\n"); getch(); system("cls"); } void consultar (FILE *arq, char arquivo[100], int alt) { if (alt == 1){ struct loja fornecedor; int cod, ok = 0; char XYZ[25]; fflush(stdin); arq = fopen(arquivo, "rb+"); printf("INSIRA O CODIGO DO FORNECEDOR\n"); fflush(stdin); gets(XYZ); cod = atoi(XYZ); rewind(arq); while(!feof(arq) && ok==0){ fread(&fornecedor, sizeof(struct loja), 1, arq); if(fornecedor.cod == cod) { printf("NOME DO FORNECEDOR: %s\n", fornecedor.fornecedor); ok = 1; } } if (ok == 0){ printf("NADA ENCONTRADO!\n"); } } else { struct Comp_forn compras; int cod, ok = 0; char XYZ[25]; fflush(stdin); arq = fopen(arquivo, "rb+"); printf("INFORME O CODIGO DO PRODUTO: \n"); fflush(stdin); gets(XYZ); cod = atoi(XYZ); rewind(arq); while(!feof(arq) && ok==0){ fread(&compras, sizeof(struct Comp_forn), 1, arq); if(compras.cod_prod == cod) { printf("CODIGO DO FORNECEDOR: %i \n", compras.cod); printf("CODIGO DO PRODUTO: %i \n", compras.cod_prod); printf("NOME DO PRODUTO: %s \n", compras.nome_prod); printf("QUANTIDADE COMPRADA: %i \n", compras.quantidade); printf("VALOR (und): %.2f \n", compras.val_unit); ok = 1; } } if (ok == 0){ printf("NADA ENCONTRADO\n"); } } fclose(arq); printf("PRESSIONE ENTER\n"); getch(); } void APAGAR(FILE *arq, char arquivo[100], int alt) { if (alt == 1){ struct loja fornecedor; int cod, ok = 0, stop = -1; char XYZ[25]; fflush(stdin); arq = fopen(arquivo, "rb+"); printf("INFORME O CODIGO DO FORNECEDOR: \n"); fflush(stdin); gets(XYZ); cod = atoi(XYZ); rewind(arq); while(!feof(arq) && ok == 0){ stop++; fread(&fornecedor, sizeof(struct loja), 1, arq); if(fornecedor.cod == cod) { printf("NOME DO FORNECEDOR: %s \n", fornecedor.fornecedor); ok = 1; } } if (ok != 0){ int escolha; printf("DESEJA APAGAR FORNECEDOR? %s (SIM = 1, não = 0)?", fornecedor.fornecedor); fflush(stdin); scanf("%i", &escolha); if (escolha == 1){ fornecedor.cod = 999; fseek(arq, sizeof(struct loja) *stop, SEEK_SET); fwrite(&fornecedor,sizeof(struct loja),1, arq); printf("==REGISTRO APAGADO==\n"); } } else { printf("==NADA ENCONTRADO==\n"); } } else { struct Comp_forn compras; int cod, ok = 0, stop = -1; char XYZ[25]; fflush(stdin); arq = fopen(arquivo, "rb+"); printf("INFORME O CODIGO DO PRODUTO:\n"); fflush(stdin); gets(XYZ); cod = atoi(XYZ); rewind(arq); while(!feof(arq) && ok==0){ stop++; fread(&compras, sizeof(struct Comp_forn), 1, arq); if(compras.cod_prod == cod) { ok = 1; } } if (ok != 0){ int escolha; printf("APAGAR PRODUTO? %s (SIM = 1, não = 0)?", compras.nome_prod); fflush(stdin); scanf("%i", &escolha); if (escolha == 1){ compras.cod_prod = 999; compras.cod = 999; fseek(arq, sizeof(struct Comp_forn) *stop, SEEK_SET); fwrite(&compras,sizeof(struct Comp_forn),1, arq); printf("==REGISTRO EXCLUIDO==\n"); } } else { printf("==NADA ENCONTRADO==\n"); } } fclose(arq); printf("TECLE ENTER\n"); getch(); } void alterar(FILE *arq, char arquivo[100], int alt) { if (alt == 1){ struct loja fornecedor; int cod, ok = 0, stop = -1; char XYZ[25]; fflush(stdin); arq = fopen(arquivo, "rb+"); printf("INFORME O CODIGO DO FORNECEDOR: \n"); fflush(stdin); gets(XYZ); cod = atoi(XYZ); rewind(arq); while(!feof(arq) && ok==0){ stop++; fread(&fornecedor, sizeof(struct loja), 1, arq); if(fornecedor.cod == cod) { printf("NOME DO FORNECEDOR: %s \n", fornecedor.fornecedor); ok = 1; } } if (ok != 0){ struct loja insertdados; insertdados.cod = fornecedor.cod; insertdados.val_forn = fornecedor.val_forn; printf("INSIRA NOVO NOME: \n"); fflush(stdin); scanf("%s", &insertdados.fornecedor); fseek(arq, sizeof(struct loja) *stop, SEEK_SET); fwrite(&insertdados, sizeof(struct loja),1, arq); printf("==INFORMACOES ALTERADAS==\n"); } else { printf("==NADA ENCONTRADO==\n"); } } else { struct Comp_forn compras; int cod, ok = 0, stop = -1; char XYZ[25]; fflush(stdin); arq = fopen(arquivo, "rb+"); printf("INSIRA O CODIGO DO PRODUTO:\n"); fflush(stdin); gets(XYZ); cod = atoi(XYZ); rewind(arq); while(!feof(arq) && ok==0){ stop++; fread(&compras, sizeof(struct Comp_forn), 1, arq); if(compras.cod_prod == cod) { ok = 1; } } if (ok != 0){ struct Comp_forn insertdados; insertdados.cod = compras.cod; insertdados.cod_prod = compras.cod_prod; printf("NOVO NOME DO PRODUTO:\n"); fflush(stdin); scanf("%s", &insertdados.nome_prod); printf("NOVO VALOR (und):\n"); fflush(stdin); scanf("%s", &insertdados.val_unit); printf("NOVA QUANTIDADE DE COMPRA:\n"); fflush(stdin); scanf("%s", &insertdados.quantidade); fseek(arq, sizeof(struct Comp_forn) *stop, SEEK_SET); fwrite(&insertdados, sizeof(struct Comp_forn),1, arq); printf("==INFORMACOES ALTERADAS==\n"); } else { printf("==NADA ENCONTRADO==\n"); } } fclose(arq); printf("==PRESSIONE ENTER==\n"); getch(); } struct loja fornecedor; int VerifForn(FILE *arq, char arquivo[100],int cod){ int ok = 0; rewind(arq); while(!feof(arq) && ok==0){ fread(&fornecedor, sizeof(struct loja), 1, arq); if(fornecedor.cod == cod) { ok = 1; } } return(ok); }
- 2 respostas
-
Olá, recebi como tarefa de meu curso técnico desenvolver uma balança com o microcontrolador 8051. A balança vai de 0 kg até 150 kg e enviará o valor da massa para o porto P3 do microcontrolador. O problema é que o porto P3 receberá o valor em binário e para realizar a regra de três para obter uma massa e enviá-la para o display, preciso dos valores em decimal e eu não sei como realizar essa conversão. Vejam o que já consegui: //Balanca #include <8052.h> #define display P2 #define RS P0_2 #define RW P0_1 #define EN P0_0 #define Delay 200 #define NumCol 15 #define Linha1 0x80 #define Linha2 0xC0 #define MSG1 0 #define MSG2 1 #define Grau_C 0x00 #define Seta_E 0x01 #define Seta_D 0x02 #define Seta_C 0x03 #define Seta_B 0x04 #define Grau_F 0x05 #define massa P3 unsigned long x; unsigned long y; unsigned char mint, resto, mdec; unsigned char Tab_Conf[5] = {0x38, //Display matriz 7x5 e 8 bits 0x0E, //Habilita cursor 0x06, //Deslocando para a direita 0x01, //Limpa display 0x0C}; //Desliga cursor void Disp_8bits (void) { for (y=0; y<=4; y++) { display = Tab_Conf[y]; RS = 0; RW = 0; EN = 1; for (x=0; x<=Delay; x++); EN = 0; } } void Posi_Char (unsigned char Position) { display = Position; RS = 0; RW = 0; EN = 1; for (x=0; x<=Delay; x++); EN = 0; } void Escreve_Char (unsigned char Num_CGRAM) { display = Num_CGRAM; RS = 1; RW = 0; EN = 1; for (x=0; x<=Delay; x++); EN = 0; } void Escreve_Frase (unsigned char Local) { unsigned char Message[2][16] = {" BALANCA ", " , kg "}; for (y=0; y<=NumCol; y++) { display = Message[Local][y]; RS = 1; RW = 0; EN = 1; for (x=0; x<=Delay; x++); EN = 0; } } void main (void) { TMOD = 0x11; Disp_8bits ( ); Posi_Char (Linha1); Escreve_Frase (MSG1 ); Posi_Char (Linha2); Escreve_Frase (MSG2); while(1) { mint=(massa*150)/255; resto=(massa*150)%255; mdec=(resto*100)/255; Posi_Char (Linha2+1); Escreve_Char (mint + 0x30); Posi_Char (Linha2+5); Escreve_Char (mdec + 0x30); } }
-
Olá, estou recebi como tarefa de meu curso técnico desenvolver uma balança com o microcontrolador 8051. A balança vai de 0 kg até 150 kg e enviará o valor da massa para o porto P3 do microcontrolador. O problema é que o porto P3 receberá o valor em binário e para realizar a regra de três para obter uma massa e enviá-la para o display, preciso dos valores em decimal e eu não sei como realizar essa conversão. Vejam o que já consegui: //Balanca #include <8052.h> #define display P2 #define RS P0_2 #define RW P0_1 #define EN P0_0 #define Delay 200 #define NumCol 15 #define Linha1 0x80 #define Linha2 0xC0 #define MSG1 0 #define MSG2 1 #define Grau_C 0x00 #define Seta_E 0x01 #define Seta_D 0x02 #define Seta_C 0x03 #define Seta_B 0x04 #define Grau_F 0x05 #define massa P3 unsigned long x; unsigned long y; unsigned char mint, resto, mdec; unsigned char Tab_Conf[5] = {0x38, //Display matriz 7x5 e 8 bits 0x0E, //Habilita cursor 0x06, //Deslocando para a direita 0x01, //Limpa display 0x0C}; //Desliga cursor void Disp_8bits (void) { for (y=0; y<=4; y++) { display = Tab_Conf[y]; RS = 0; RW = 0; EN = 1; for (x=0; x<=Delay; x++); EN = 0; } } void Posi_Char (unsigned char Position) { display = Position; RS = 0; RW = 0; EN = 1; for (x=0; x<=Delay; x++); EN = 0; } void Escreve_Char (unsigned char Num_CGRAM) { display = Num_CGRAM; RS = 1; RW = 0; EN = 1; for (x=0; x<=Delay; x++); EN = 0; } void Escreve_Frase (unsigned char Local) { unsigned char Message[2][16] = {" BALANCA ", " , kg "}; for (y=0; y<=NumCol; y++) { display = Message[Local][y]; RS = 1; RW = 0; EN = 1; for (x=0; x<=Delay; x++); EN = 0; } } void main (void) { TMOD = 0x11; Disp_8bits ( ); Posi_Char (Linha1); Escreve_Frase (MSG1 ); Posi_Char (Linha2); Escreve_Frase (MSG2); while(1) { mint=(massa*150)/255; resto=(massa*150)%255; mdec=(resto*100)/255; Posi_Char (Linha2+1); Escreve_Char (mint + 0x30); Posi_Char (Linha2+5); Escreve_Char (mdec + 0x30); } }
-
Estou estudando as conversões para binário e vice versa, mas eu sei apenas a conversão binária decimal e, gostaria de aprender como converter um caractere ou frases para binário. Dês de já, agradeço a ajuda!
-
Olá galera. Estou iniciando na linguagem e gostaria de criar um conversor de binário em decimal p/ aprender os conceitos de programação. Teriam algumas dicas? Já descobri que terei que usar o 'for', mas não tenho nenhuma ideia.
-
Boa tarde :D esse e meu primeiro post no forum, sou novato então se estiver publicando no forum, errado peço desculpas desde já. Estou fazendo tentando fazer uma calcula de IP, é meu trabalho para a matéria da faculdade. Estou fazendo pelo dev c++ estou com dificuldades de transforma o ip, de decimal para binario. Segue o Print do meu código e do resultado. Eu gostaria que no final, ele convertesse o IP todo não so a primeira casa, Se alguém poder me ajudar agradeço sou novato em c++. Obrigado ! .
-
- transformando
- binario
- (e %d mais)
-
Preciso calcular um numero binário com ponto flutuante. Por exemplo: 101.1 deve me dar o valor 5.5. O problema é que eu pensei em separar em 101 e 0.1 e então transformar o 0.1 em um numero inteiro mas quando faço isso ele arredonda para menos! ex: scanf("%lf", &bin); dec = bin - (int)bin; printf("%lf", dec); res2 = dec*10*10*10*10*10*10*10*10*10*10*10*10; printf("\n%f", res2); sendo bin 101.1 o resultado para esse .1 convertido para inteiro é 99999999. Reparem que eu multiplico várias vezes por 10 para mover a vírgula. Agradeço desde já. Sei que tá confuso mas vou explicando conforme surgirem dúvidas :D
-
transformação de numero real na base binária para base decimal
uma questão postou ÍtaloRoberto C, C++
Gostaria de ideias sobre como fazer um dado numero real em base binária (ponto flutuante) passe para base decimal com precisão de uma casa após a virgula. Por exemplo: 10100.1 = 20,5-
- Binário
- Ponto Flutuante
- (e %d mais)
-
Olá, depois de apanhar muito dentro do scriptcase e também em php com estouro de memória, decidi que o melhor lugar para calcular todas aquelas regras de MMN Binário, é dentro do próprio banco de dados. Assim, a aplicação fica mais leve, e limpa. Então , como marinheiro de primeira viagem em PL Sql, estou tendo algumas dificuldades, como trabalhar com cursores, extruturas de repetição, e chamar uma procedure dentro da outra... neste primeiro exemplo, quero apenas somar os pontos de todos os downlines a partir de uma determinada franquia, porém, está com um erro que não consigo achar. Alguém pode me ajudar? Segue a procedure: -- -------------------------------------------------------------------------------- -- Routine DDL -- Note: comments before and after the routine body will not be stored by the server -- -------------------------------------------------------------------------------- DELIMITER $$ CREATE PROCEDURE `lkp_diretos_de` (IN upline int,IN market int, IN ciclo int, IN secao varchar(45),OUT total_pontos float) BEGIN DECLARE done_arr_rede1,done_arr_rede2,diretos1,diretos2,fra_id,fra_derramado_em_id,fra_upline_id ,fra_id2,fra_derramado_em_id2,fra_upline_id2 INTEGER DEFAULT 0; DECLARE fra_dat_cadasto,fra_dat_cadasto2 DATETIME; DECLARE fra_lado_equipe_upline,fra_lado_equipe_upline2 char(1); DECLARE fra_saldo_pontos,fra_saldo_pontos2 float DEFAULT 0; DEClARE arr_rede1 CURSOR FOR SELECT mmn_franquias.fra_id, mmn_franquias.fra_dat_cadasto, mmn_franquias.fra_derramado_em_id, mmn_franquias.fra_upline_id, mmn_franquias.fra_lado_equipe_upline, mmn_franquias.fra_saldo_pontos FROM mmn_franquias ORDER BY mmn_franquias.fra_dat_cadasto; DEClARE arr_rede2 CURSOR FOR SELECT mmn_franquias.fra_id, mmn_franquias.fra_dat_cadasto, mmn_franquias.fra_derramado_em_id, mmn_franquias.fra_upline_id, mmn_franquias.fra_lado_equipe_upline, mmn_franquias.fra_saldo_pontos FROM mmn_franquias ORDER BY mmn_franquias.fra_dat_cadasto; -- declare NOT FOUND handler DECLARE CONTINUE HANDLER FOR NOT FOUND SET done_arr_rede1 = 1; -- declare NOT FOUND handler DECLARE CONTINUE HANDLER FOR NOT FOUND SET done_arr_rede2 = 1; OPEN arr_rede1; REPEAT FETCH arr_rede1 INTO fra_id, fra_dat_cadasto, fra_derramado_em_id, fra_upline_id, fra_lado_equipe_upline, fra_saldo_pontos; IF NOT done_arr_rede1 THEN if locate(fra_upline,upline)>0 then OPEN arr_rede2; while done_arr_rede2 = 1 do FETCH arr_rede2 INTO fra_id2, fra_dat_cadasto2, fra_derramado_em_id2, fra_upline_id2, fra_lado_equipe_upline2, fra_saldo_pontos2; if fra_upline_id2 = fra_upline_id1 then set done_arr_rede2 = 1; set upline = concat (upline,',',fra_upline_id2); set total_pontos = total_pontos + fra_saldo_pontos2; end if; end while; CLOSE arr_rede2; end if; END IF; UNTIL done END REPEAT; CLOSE arr_rede1; END
-
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; }
-
Gostaria de copiar o conteúdo inteiro de um arquivo binário e transferir para uma sequência de linhas e bytes de um outro binário. Tipo conteúdo do primeiro para o endereço do segundo que é 315 75BF até 315 791F. Mas tem 10 arquivos e os primeiros arquivos e endereços e segundos arquivos são diferentes. Estou tentando fazer em C mas não estou conseguindo. Se explicarem um, os outros eu mudo os endereços. E compilo no CodeBlocks.