Multiplicación de dos números complejos dados como strings

Dados dos números complejos en forma de strings. Nuestra tarea es imprimir la multiplicación de estos dos números complejos.

Ejemplos:  

Input : str1 = "1+1i"
        str2 = "1+1i" 
Output : "0+2i"
Here, (1 + i) * (1 + i) = 
1 + i2 + 2 * i = 2i or "0+2i"

Input : str1 = "1+-1i"
        str2 = "1+-1i"
Output : "0+-2i"
Here, (1 - i) * (1 - i) = 
1 + i2 - 2 * i = -2i or "0+-2i"

La multiplicación de dos números complejos se puede hacer como:
(a+ib) \times (x+iy)=ax+i^2by+i(bx+ay)=ax-by+i(bx+ay)

Simplemente dividimos las partes real e imaginaria de las strings complejas dadas en función de los símbolos ‘+’ y ‘i’ . Almacenamos las partes reales de las dos strings a y b como x[0] e y[0] respectivamente y las partes imaginarias como x[1] e y[1] respectivamente. Luego, multiplicamos las partes reales e imaginarias según sea necesario después de convertir las partes extraídas en números enteros. Luego, volvemos a formar la string de retorno en el formato requerido y devolvemos el resultado.  

C++

// C++ Implementation of the above approach
#include <bits/stdc++.h>
using namespace std;
string complexNumberMultiply(string a, string b)
{
    int i;
    string x1;
    int temp = 1;
 
    // Traverse both strings, and
    // check for negative numbers
    for (i = 0; i < a.length(); i++)
    {
        if (a[i] == '+')
            break;
        if (a[i] == '-')
        {
            temp = -1;
            continue;
        }
        x1.push_back(a[i]);
    }
     
    // String to int
    int t1 = stoi(x1) * temp;
    x1.clear();
    temp = 1;
    for (; i < a.length() - 1; i++)
    {
        if (a[i] == '-')
        {
            temp = -1;
            continue;
        }
        x1.push_back(a[i]);
    }
    int t2 = stoi(x1) * temp;
    x1.clear();
    temp = 1;
    for (i = 0; i < b.length(); i++)
    {
        if (b[i] == '+')
            break;
        if (b[i] == '-')
        {
            temp = -1;
            continue;
        }
        x1.push_back(b[i]);
    }
    int t3 = stoi(x1) * temp;
    x1.clear();
    temp = 1;
    for (; i < b.length() - 1; i++)
    {
        if (b[i] == '-')
        {
            temp = -1;
            continue;
        }
        x1.push_back(b[i]);
    }
    int t4 = stoi(x1) * temp;
    
    // Real Part
    int ans = t1 * t3 - t2 * t4;
    string s;
    s += to_string(ans);
    s += '+';
     
    // Imaginary part
    ans = t1 * t4 + t2 * t3;
    s += to_string(ans);
    s += 'i';
 
    // Return the result
    return s;
}
 
  
// Driver Code
int main()
{
 
    string str1 = "1+1i";
    string str2 = "1+1i";
    cout << complexNumberMultiply(str1, str2);
 
    return 0;
 
    // Contributed By Bhavneet Singh
}

Java

// Java program to multiply two complex numbers
// given as strings.
import java.util.*;
import java.lang.*;
 
public class GfG{
    public static String complexNumberMultiply(String a, String b) {
 
        // Spiting the real and imaginary parts
        // of the given complex strings based on '+'
        // and 'i' symbols.
        String x[] = a.split("\\+|i");
        String y[] = b.split("\\+|i");
         
        // Storing the real part of complex string a
        int a_real = Integer.parseInt(x[0]);
         
        // Storing the imaginary part of complex string a
        int a_img = Integer.parseInt(x[1]);
         
        // Storing the real part of complex string b
        int b_real = Integer.parseInt(y[0]);
         
        // Storing the imaginary part of complex string b
        int b_img = Integer.parseInt(y[1]);
         
        // Returns the product.
        return (a_real * b_real - a_img * b_img) + "+" +
              (a_real * b_img + a_img * b_real) + "i";
    }
     
    // Driver function
    public static void main(String argc[]){
        String str1 = "1+1i";
        String str2 = "1+1i";
        System.out.println(complexNumberMultiply(str1, str2));
    }
}

Python3

# Python 3 program to multiply two complex numbers
# given as strings.
def complexNumberMultiply(a, b):
     
    # Spiting the real and imaginary parts
    # of the given complex strings based on '+'
    # and 'i' symbols.
    x = a.split('+')
    x[1] = x[1][:-1] # for removing 'i'
     
    y = b.split("+")
    y[1] = y[1][:-1] # for removing 'i'
     
    # Storing the real part of complex string a
    a_real = int(x[0])
         
    # Storing the imaginary part of complex string a
    a_img = int(x[1])
     
         
    # Storing the real part of complex string b
    b_real = int(y[0])
     
         
    # Storing the imaginary part of complex string b
    b_img = int(y[1])
    return str(a_real * b_real - a_img * b_img) \
        + "+" + str(a_real * b_img + a_img * b_real) + "i";
 
     
# Driver function
 
str1 = "1 + 1i"
str2 = "1 + 1i"
print(complexNumberMultiply(str1, str2))
 
# This code is contributed by ANKITKUMAR34

C#

// C# program to multiply two complex
// numbers given as strings.
using System;
using System.Text.RegularExpressions;
 
class GfG{
     
public static String complexNumberMultiply(String a,
                                           String b)
{
     
    // Spiting the real and imaginary parts
    // of the given complex strings based on '+'
    // and 'i' symbols.
    String []x = Regex.Split(a, @"\+|i");
    String []y = Regex.Split(b, @"\+|i");
 
    // Storing the real part of complex string a
    int a_real = Int32.Parse(x[0]);
     
    // Storing the imaginary part of complex string a
    int a_img = Int32.Parse(x[1]);
     
    // Storing the real part of complex string b
    int b_real = Int32.Parse(y[0]);
     
    // Storing the imaginary part of complex string b
    int b_img = Int32.Parse(y[1]);
     
    // Returns the product.
    return(a_real * b_real - a_img * b_img) + "+" +
          (a_real * b_img + a_img * b_real) + "i";
}
 
// Driver code
public static void Main(String []argc)
{
    String str1 = "1+1i";
    String str2 = "1+1i";
     
    Console.WriteLine(complexNumberMultiply(str1, str2));
}
}
 
// This code is contributed by shikhasingrajput

PHP

<?php
// PHP program to multiply
// two complex numbers
// given as strings.
 
function complexNumberMultiply($a, $b)
{
 
// Spiting the real and
// imaginary parts of the
// given complex strings
// based on '+' and 'i' symbols.
$x = preg_split("/[\s+]+|i/" , $a);
$y = preg_split("/[\s+]+|i/" , $b);
     
// Storing the real part
// of complex string a
$a_real = intval($x[0]);
     
// Storing the imaginary
// part of complex string a
$a_img = intval($x[1]);
     
// Storing the real part
// of complex string b
$b_real = intval($y[0]);
     
// Storing the imaginary
// part of complex string b
$b_img = intval($y[1]);
     
// Returns the product.
return ($a_real * $b_real -
        $a_img * $b_img) . "+" .
       ($a_real * $b_img +
        $a_img * $b_real) . "i";
}
 
// Driver Code
$str1 = "1+1i";
$str2 = "1+1i";
echo complexNumberMultiply($str1, $str2);
 
// This code is contributed by mits
?>

Javascript

<script>
 
// javascript program to multiply two complex numbers
// given as strings.
 
function complexNumberMultiply(a, b) {
 
    // Spiting the real and imaginary parts
    // of the given complex strings based on '+'
    // and 'i' symbols.
    var x = a.split('+');
    var y = b.split('+');
 
    // Storing the real part of complex string a
    var a_real = parseInt(x[0]);
 
    // Storing the imaginary part of complex string a
    var a_img = parseInt(x[1]);
 
    // Storing the real part of complex string b
    var b_real = parseInt(y[0]);
 
    // Storing the imaginary part of complex string b
    var b_img = parseInt(y[1]);
 
    // Returns the product.
    return (a_real * b_real - a_img * b_img) + "+" +
          (a_real * b_img + a_img * b_real) + "i";
}
 
// Driver function
var str1 = "1+1i";
var str2 = "1+1i";
document.write(complexNumberMultiply(str1, str2));
 
// This code contributed by shikhasingrajput
</script>

Producción: 

0+2i

Publicación traducida automáticamente

Artículo escrito por Sagar Shukla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *