fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. typedef struct {
  5. double real;
  6. double imag;
  7. } BilanganKompleks;
  8.  
  9. void cariAkarKuadrat(double a, double b, double c);
  10. BilanganKompleks tambah(BilanganKompleks c1, BilanganKompleks c2);
  11. BilanganKompleks kurang(BilanganKompleks c1, BilanganKompleks c2);
  12. BilanganKompleks kali(BilanganKompleks c1, BilanganKompleks c2);
  13. BilanganKompleks bagi(BilanganKompleks c1, BilanganKompleks c2);
  14. void cetakKompleks(char *label, BilanganKompleks c);
  15.  
  16. int main() {
  17. double a, b, c;
  18. printf("Input a, b, c : ");
  19. scanf("%lf %lf %lf", &a, &b, &c);
  20. cariAkarKuadrat(a, b, c);
  21.  
  22. BilanganKompleks c1, c2, hasil;
  23.  
  24. printf("Bilangan kompleks pertama: ");
  25. scanf("%lf %lf", &c1.real, &c1.imag);
  26. printf("Bilangan kompleks kedua: ");
  27. scanf("%lf %lf", &c2.real, &c2.imag);
  28.  
  29. hasil = tambah(c1, c2);
  30. cetakKompleks("Hasil Penjumlahan", hasil);
  31.  
  32. hasil = kurang(c1, c2);
  33. cetakKompleks("Hasil Pengurangan", hasil);
  34.  
  35. hasil = kali(c1, c2);
  36. cetakKompleks("Hasil Perkalian ", hasil);
  37.  
  38. hasil = bagi(c1, c2);
  39. cetakKompleks("Hasil Pembagian ", hasil);
  40.  
  41. return 0;
  42. }
  43.  
  44. void cariAkarKuadrat(double a, double b, double c) {
  45. double diskriminan, akar1, akar2;
  46.  
  47. diskriminan = b * b - 4 * a * c;
  48.  
  49. if (diskriminan < 0) {
  50. BilanganKompleks x1, x2;
  51. x1.real = -b / (2 * a);
  52. x1.imag = sqrt(-diskriminan) / (2 * a);
  53. x2.real = x1.real;
  54. x2.imag = -x1.imag;
  55. cetakKompleks("x1 =", x1);
  56. cetakKompleks("x2 =", x2);
  57. } else if (diskriminan == 0) {
  58. akar1 = -b / (2 * a);
  59. printf("Akar-akarnya kembar: x1 = x2 = %.2lf\n", akar1);
  60. } else {
  61. akar1 = (-b + sqrt(diskriminan)) / (2 * a);
  62. akar2 = (-b - sqrt(diskriminan)) / (2 * a);
  63. printf("x1 = %.2lf\n", akar1);
  64. printf("x2 = %.2lf\n", akar2);
  65. }
  66. }
  67.  
  68. BilanganKompleks tambah(BilanganKompleks c1, BilanganKompleks c2) {
  69. BilanganKompleks hasil = {c1.real + c2.real, c1.imag + c2.imag};
  70. return hasil;
  71. }
  72.  
  73. BilanganKompleks kurang(BilanganKompleks c1, BilanganKompleks c2) {
  74. BilanganKompleks hasil = {c1.real - c2.real, c1.imag - c2.imag};
  75. return hasil;
  76. }
  77.  
  78. BilanganKompleks kali(BilanganKompleks c1, BilanganKompleks c2) {
  79. BilanganKompleks hasil;
  80. hasil.real = c1.real * c2.real - c1.imag * c2.imag;
  81. hasil.imag = c1.real * c2.imag + c1.imag * c2.real;
  82. return hasil;
  83. }
  84.  
  85. BilanganKompleks bagi(BilanganKompleks c1, BilanganKompleks c2) {
  86. BilanganKompleks hasil;
  87. double penyebut = c2.real * c2.real + c2.imag * c2.imag;
  88. if (penyebut == 0) {
  89. printf("Error: Pembagian dengan nol!\n");
  90. BilanganKompleks nol = {0, 0};
  91. return nol;
  92. }
  93. hasil.real = (c1.real * c2.real + c1.imag * c2.imag) / penyebut;
  94. hasil.imag = (c1.imag * c2.real - c1.real * c2.imag) / penyebut;
  95. return hasil;
  96. }
  97.  
  98. void cetakKompleks(char *label, BilanganKompleks c) {
  99. if (c.imag >= 0) {
  100. printf("%s: %.2lf + %.2lfi\n", label, c.real, c.imag);
  101. } else {
  102. printf("%s: %.2lf - %.2lfi\n", label, c.real, -c.imag);
  103. }
  104. }
  105.  
Success #stdin #stdout 0.03s 25692KB
stdin
Standard input is empty
stdout
#include <stdio.h>
#include <math.h>

typedef struct {
    double real;
    double imag;
} BilanganKompleks;

void cariAkarKuadrat(double a, double b, double c);
BilanganKompleks tambah(BilanganKompleks c1, BilanganKompleks c2);
BilanganKompleks kurang(BilanganKompleks c1, BilanganKompleks c2);
BilanganKompleks kali(BilanganKompleks c1, BilanganKompleks c2);
BilanganKompleks bagi(BilanganKompleks c1, BilanganKompleks c2);
void cetakKompleks(char *label, BilanganKompleks c);

int main() {
    double a, b, c;
    printf("Input a, b, c : ");
    scanf("%lf %lf %lf", &a, &b, &c);
    cariAkarKuadrat(a, b, c);

    BilanganKompleks c1, c2, hasil;

    printf("Bilangan kompleks pertama: ");
    scanf("%lf %lf", &c1.real, &c1.imag);
    printf("Bilangan kompleks kedua: ");
    scanf("%lf %lf", &c2.real, &c2.imag);

    hasil = tambah(c1, c2);
    cetakKompleks("Hasil Penjumlahan", hasil);

    hasil = kurang(c1, c2);
    cetakKompleks("Hasil Pengurangan", hasil);

    hasil = kali(c1, c2);
    cetakKompleks("Hasil Perkalian  ", hasil);

    hasil = bagi(c1, c2);
    cetakKompleks("Hasil Pembagian  ", hasil);
    
    return 0;
}

void cariAkarKuadrat(double a, double b, double c) {
    double diskriminan, akar1, akar2;

    diskriminan = b * b - 4 * a * c;

    if (diskriminan < 0) {
        BilanganKompleks x1, x2;
        x1.real = -b / (2 * a);
        x1.imag = sqrt(-diskriminan) / (2 * a);
        x2.real = x1.real;
        x2.imag = -x1.imag;
        cetakKompleks("x1 =", x1);
        cetakKompleks("x2 =", x2);
    } else if (diskriminan == 0) {
        akar1 = -b / (2 * a);
        printf("Akar-akarnya kembar: x1 = x2 = %.2lf\n", akar1);
    } else {
        akar1 = (-b + sqrt(diskriminan)) / (2 * a);
        akar2 = (-b - sqrt(diskriminan)) / (2 * a);
        printf("x1 = %.2lf\n", akar1);
        printf("x2 = %.2lf\n", akar2);
    }
}

BilanganKompleks tambah(BilanganKompleks c1, BilanganKompleks c2) {
    BilanganKompleks hasil = {c1.real + c2.real, c1.imag + c2.imag};
    return hasil;
}

BilanganKompleks kurang(BilanganKompleks c1, BilanganKompleks c2) {
    BilanganKompleks hasil = {c1.real - c2.real, c1.imag - c2.imag};
    return hasil;
}

BilanganKompleks kali(BilanganKompleks c1, BilanganKompleks c2) {
    BilanganKompleks hasil;
    hasil.real = c1.real * c2.real - c1.imag * c2.imag;
    hasil.imag = c1.real * c2.imag + c1.imag * c2.real;
    return hasil;
}

BilanganKompleks bagi(BilanganKompleks c1, BilanganKompleks c2) {
    BilanganKompleks hasil;
    double penyebut = c2.real * c2.real + c2.imag * c2.imag;
    if (penyebut == 0) {
        printf("Error: Pembagian dengan nol!\n");
        BilanganKompleks nol = {0, 0};
        return nol;
    }
    hasil.real = (c1.real * c2.real + c1.imag * c2.imag) / penyebut;
    hasil.imag = (c1.imag * c2.real - c1.real * c2.imag) / penyebut;
    return hasil;
}

void cetakKompleks(char *label, BilanganKompleks c) {
    if (c.imag >= 0) {
        printf("%s: %.2lf + %.2lfi\n", label, c.real, c.imag);
    } else {
        printf("%s: %.2lf - %.2lfi\n", label, c.real, -c.imag);
    }
}