Skip to content

modified #454

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 65 additions & 27 deletions algorithms/converting/binary_to_decimal.c
Original file line number Diff line number Diff line change
@@ -1,45 +1,83 @@
// Author: Murilo Ferreira

#include <stdio.h>
#include <math.h>

int binaryToDecimal(int binary) {
// Method 1: Using iterative multiplication
int binaryToDecimalUsingMultiplier(int binary) {
int decimal = 0;
int multiplier = 1;
while (binary != 0) {
decimal += (binary % 10)* multiplier;
decimal += (binary % 10) * multiplier;
binary /= 10;
multiplier *= 2;
}
return decimal;
}

int main() {
int bin;
printf("Enter your binary number: ");
scanf("%d" ,&bin);
int dec = binaryToDecimal(bin);
printf("The number is: %d \n" ,dec);
return 0;
// Method 2: Using pow function
int binaryToDecimalUsingPow(long long binary) {
int decimal = 0, i = 0, remainder;
while (binary != 0) {
remainder = binary % 10;
binary /= 10;
decimal += remainder * pow(2, i);
++i;
}
return decimal;
}
// added another method
#include <math.h>
#include <stdio.h>
int convert(long long n);
int main() {
long long n;
printf("Enter a binary number: ");
scanf("%lld", &n);
printf("%lld in binary = %d in decimal", n, convert(n));
return 0;

void displayMenu() {
printf("\n==========================\n");
printf("Choose a conversion method:\n");
printf("1. Iterative multiplication\n");
printf("2. Pow function\n");
printf("3. Exit\n");
printf("==========================\n\n");
}

int convert(long long n) {
int dec = 0, i = 0, rem;
while (n != 0) {
rem = n % 10;
n /= 10;
dec += rem * pow(2, i);
++i;
int validateBinaryInput(long long binary) {
while (binary != 0) {
if (binary % 10 > 1) {
return 0;
}
binary /= 10;
}
return 1;
}

int main() {
int choice;
long long binary;

while (1) {
displayMenu();
printf("Enter your choice: ");
scanf("%d", &choice);

if (choice == 3) {
printf("Exiting program. Goodbye!\n");
break;
}

printf("Enter a binary number: ");
scanf("%lld", &binary);

if (!validateBinaryInput(binary)) {
printf("Invalid binary number. Please enter a valid binary number (only 0s and 1s).\n\n");
continue;
}

if (choice == 1) {
printf("Using iterative multiplication: %lld in binary = %d in decimal\n", binary, binaryToDecimalUsingMultiplier((int)binary));
} else if (choice == 2) {
printf("Using pow function: %lld in binary = %d in decimal\n", binary, binaryToDecimalUsingPow(binary));
} else {
printf("Invalid choice. Please select 1, 2, or 3.\n");
}

printf("\n");
}
return dec;

return 0;
}