rewrite in nim
This commit is contained in:
parent
5fa84b93fb
commit
df1258d1d9
|
@ -1,27 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
ARG_A=$(whiptail --inputbox "Please enter the value for \"a\":" 10 50 --title "Quadratic Calculator" 3>&1 1>&2 2>&3)
|
||||
|
||||
exitstatus=$?
|
||||
if [ $exitstatus != 0 ]; then
|
||||
echo "User cancelled input."
|
||||
exit
|
||||
fi
|
||||
|
||||
ARG_B=$(whiptail --inputbox "Please enter the value for \"b\":" 10 50 --title "Quadratic Calculator" 3>&1 1>&2 2>&3)
|
||||
|
||||
exitstatus=$?
|
||||
if [ $exitstatus != 0 ]; then
|
||||
echo "User cancelled input."
|
||||
exit
|
||||
fi
|
||||
|
||||
ARG_C=$(whiptail --inputbox "Please enter the value for \"c\":" 10 50 --title "Quadratic Calculator" 3>&1 1>&2 2>&3)
|
||||
|
||||
exitstatus=$?
|
||||
if [ $exitstatus != 0 ]; then
|
||||
echo "User cancelled input."
|
||||
exit
|
||||
fi
|
||||
|
||||
quadratic $ARG_A $ARG_B $ARG_C
|
42
quadratic.c
42
quadratic.c
|
@ -1,42 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(int num_arg, char **args)
|
||||
{
|
||||
double num_A, num_B, num_C;
|
||||
|
||||
if (num_arg <= 1)
|
||||
{
|
||||
system("/bin/sh /home/linux/Documents/Projects/quadratic/quadratic-tui.sh"); //! need a better solution
|
||||
}
|
||||
else
|
||||
{
|
||||
num_A = atof(args[1]);
|
||||
num_B = atof(args[2]);
|
||||
num_C = atof(args[3]);
|
||||
|
||||
double radical = pow(num_B, 2) + (-4 * num_A * num_C);
|
||||
|
||||
if (radical < 0.0)
|
||||
{
|
||||
// roots are complex
|
||||
double real_part = (-num_B) / (2 * num_A);
|
||||
double imaginary_part = sqrt(radical * -1.0) / (2 * num_A);
|
||||
|
||||
printf("%g+%gi %g-%gi\n", real_part, imaginary_part, real_part, imaginary_part);
|
||||
}
|
||||
else
|
||||
{
|
||||
// roots are real
|
||||
double numerator_1 = (-num_B) + sqrt(radical);
|
||||
double numerator_2 = (-num_B) - sqrt(radical);
|
||||
double zero_1_ptr = numerator_1 / (2 * num_A);
|
||||
double zero_2_ptr = numerator_2 / (2 * num_A);
|
||||
|
||||
printf("%g\t %g\n", zero_1_ptr, zero_2_ptr);
|
||||
};
|
||||
};
|
||||
return 0;
|
||||
};
|
27
quadratic.nim
Normal file
27
quadratic.nim
Normal file
|
@ -0,0 +1,27 @@
|
|||
import os, math, strutils, strformat
|
||||
|
||||
var num_a, num_b, num_c: float
|
||||
|
||||
if paramCount() >= 3:
|
||||
num_a = parseFloat(paramStr(1))
|
||||
num_b = parseFloat(paramStr(2))
|
||||
num_c = parseFloat(paramStr(3))
|
||||
# else:
|
||||
# launch ui to get numbers
|
||||
|
||||
let radical: float = num_b^2 + (-4 * num_a * num_c)
|
||||
|
||||
if radical < 0:
|
||||
# complex roots
|
||||
let real_part: float = -num_b / (2 * num_a)
|
||||
let imaginary_part: float = sqrt(radical * -1) / (2 * num_a)
|
||||
|
||||
echo &"{real_part}+{imaginary_part}\t{real_part}-{imaginary_part}"
|
||||
else:
|
||||
# real roots
|
||||
let numrator_1: float = -num_b + sqrt(radical)
|
||||
let numrator_2: float = -num_b - sqrt(radical)
|
||||
let solution_1: float = numrator_1 / (2 * num_a)
|
||||
let solution_2: float = numrator_2 / (2 * num_a)
|
||||
|
||||
echo &"{solution_1}\t{solution_2}"
|
Loading…
Reference in a new issue