w3resource

C Programming: Multiple two positive numbers represent as string

C String: Exercise-37 with Solution

Write a C program to multiply two positive numbers as strings. Return a string representation of the product.

Sample Data:

("100", "15") -> "1500"
("100", "") -> "00"
("", "") -> "00"

Sample Solution:

C Code:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

// Function to multiply two numbers represented as strings
char *test(char *str_num1, char *str_num2, int len1, int len2){	
    int str_sum[512], tmp, index;
    char *result;

    // If any number is '0', the result will be '0'
    if( str_num1[0] == '0' || str_num2[0] == '0' )
        return "0";

    // Initialize str_sum array
    for(int i = 0; i < 512; i++)
        str_sum[i] = 0;

    // Perform multiplication of str_num1 and str_num2
    for(int i = len1 - 1; i >= 0; i--){
        for(int j = len2 - 1; j >= 0; j--){
            str_sum[i + j + 1] += (str_num1[i] - '0') * (str_num2[j] - '0');
            str_sum[i + j] += str_sum[i + j + 1] / 10;
            str_sum[i + j + 1] %= 10;
        }
    }

    // Finding the index where the non-zero value starts
    for(int i = 0; i < 512; i++){
        if (str_sum[i] != 0){
            index = i;
            break;
        }
    }

    // Allocate memory for result
    result = (char*)malloc(sizeof(char) * (len1 + len2 + 2));
    int tot_len = len1 + len2;

    // Constructing the string result based on the multiplication
    if (str_sum[0] != 0){
        for(int i = 0; i < tot_len; i++)
            result[i] = str_sum[i] + '0';
        result[tot_len] = '\0';
    }
    else{
        for(int i = 1; i < tot_len; i++)
            result[i - 1] = str_sum[i] + '0';
        result[tot_len - 1] = '\0';
    }
    return result;
}

int main()
{
   char str_num1[10] = "100";
   char str_num2[10] = "15";
   // char str_num1[10] = "100";
   // char str_num2[10] = "0";
   // char str_num1[10] = "0";
   // char str_num2[10] = "0";

   printf("Original numbers: %s and %s",str_num1, str_num2); 
   int len1 = strlen(str_num1), len2 = strlen(str_num2);

   // Output the result of multiplication
   printf("\nMultiple two said numbers represent as string? %s", test(str_num1, str_num2, len1, len2));
}

Sample Output:

Original numbers: 100 and 15
Multiple two said numbers represent as string? 1500

Flowchart :

Flowchart: Multiple two positive numbers represent as string

C Programming Code Editor:

Improve this sample solution and post your code through Disqus.

Previous C Exercise: Verify that a string contains valid parentheses.
Next C Exercise: Reverse all the vowels present in a string.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/c-programming-exercises/string/c-string-exercise-37.php