fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define TAM_MAX 300
  5.  
  6. void camada_intermediaria(char binario[][9], int decimal[], int tamanho);
  7.  
  8. int main(void)
  9. {
  10. char binario[TAM_MAX][9];
  11. int decimal[TAM_MAX] = {0};
  12. char frase_binario[TAM_MAX]; //armazenar até 80 sequencias, com tamanho max de 9 (1 caracter pro '\0')
  13. char *delimitador;
  14. int i = 0, tamanho;
  15.  
  16. //lendo toda a string
  17. scanf("%[^\n]s", frase_binario);
  18.  
  19. //criando um splitter pra separar cada cadeia de binários
  20. delimitador = strtok(frase_binario, " ");
  21.  
  22. while(delimitador != NULL)
  23. {
  24. strcpy(binario[i++], delimitador);
  25. delimitador = strtok(NULL, " ");
  26. }
  27.  
  28. //guardando o tamanho do vetor bidimensional
  29. tamanho = i;
  30.  
  31. camada_intermediaria(binario, decimal, tamanho);
  32.  
  33. //camada_intermediaria(binario, tamanho);
  34. return 0;
  35. }
  36.  
  37. void camada_intermediaria(char binario[][9], int decimal[], int tamanho)
  38. {
  39. int i, j;
  40. int num, pot, dec;
  41.  
  42. for(i = 0; i < tamanho; i++)
  43. {
  44. dec = 0; // Resetando a variável dec para cada palavra binária
  45. pot = 1; // Inicializa a potência de 2 (equivalente a 2^0)
  46.  
  47. // Percorrer cada bit da palavra binária de trás para frente
  48. for(j = 7; j >= 0; j--)
  49. {
  50. num = binario[i][j] - '0'; // Converte o caractere para o valor numérico (0 ou 1)
  51. dec += num * pot; // Adiciona a potência de 2 correspondente
  52. pot *= 2; // Multiplica pot por 2 para a próxima potência
  53. }
  54.  
  55. decimal[i] = dec; // Armazena o valor decimal
  56. printf("%d\n", decimal[i]);
  57. }
  58. }
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
-23856