This commit is contained in:
Leon Wilzer 2022-11-14 12:41:19 +01:00
parent c06e72fca1
commit da64db914e

View File

@ -1,11 +1,13 @@
#include <string> #include <string>
#include <iostream> #include <iostream>
#include <cmath>
#include <vector>
#include "../headers/MyType.h" #include "../headers/MyType.h"
int calculate(const char &argv) double calculate(int argc, char **argv);
{ void pol2cart(double r, double phi, double &x, double &y);
void pascal(int argc, char **argv);
} void pascal_mem(int argc, char **argv);
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
@ -16,9 +18,98 @@ int main(int argc, char **argv)
MyType mj(std::move(j)); MyType mj(std::move(j));
MyType maj("jj", 69); MyType maj("jj", 69);
maj = std::move(cj); maj = std::move(cj);
if(argc == 4) std::cout << calculate(argc, argv) << '\n';
{ double x = 0;
calculate(argv); double y = 0;
} pol2cart(0.5, 0, x, y);
std::cout << x << " " << y << '\n';
pascal(argc, argv);
return 0; return 0;
} }
double calculate(int argc, char **argv)
{
if(argc != 4)
{
return std::nan("");
}
switch(argv[2][0])
{
case '+':
return std::stod(argv[1]) + std::stod(argv[3]);
case '-':
return std::stod(argv[1]) - std::stod(argv[3]);
case 'x':
return std::stod(argv[1]) * std::stod(argv[3]);
case '/':
return std::stod(argv[1]) / std::stod(argv[3]);
default:
std::cout << "Invalid operand: " << argv[2][0] << '\n';
return std::nan("");
}
}
void pol2cart(double r, double phi, double &x, double &y)
{
x = r * cos(phi);
y = r * sin(phi);
}
void pascal(int argc, char **argv)
{
if (argc != 2 || std::stol(argv[1]) == 0) { return; }
unsigned depth = std::stol(argv[1]);
std::vector<std::vector<unsigned long long>> pascal(depth+1, std::vector<unsigned long long>(depth+1,0));
pascal[1][1] = 1;
for(unsigned long long y=2; y<depth; ++y)
{
for(unsigned long long x=2; x<=depth; ++x)
{
pascal[y][x] = pascal[y-1][x-1] + pascal[y-1][x];
if(pascal[y][x]!=0)
{
std::cout << pascal[y][x] << '\t';
}
}
std::cout<< '\n';
}
}
unsigned fibonacci_nonrec(unsigned n)
{
unsigned fibo = 0;
unsigned prev_fibo = 1;
unsigned prev_prev_fibo = 0;
for(int i=2; i<=n; ++i)
{
fibo = prev_fibo + prev_prev_fibo;
prev_prev_fibo = prev_fibo;
prev_fibo = fibo;
}
return fibo;
}
void pascal_mem(int argc, char **argv)
{
if (argc != 2 || std::stol(argv[1]) == 0) { return; }
unsigned depth = std::stol(argv[1]);
depth = (depth*depth-depth)/2;
std::vector<unsigned long long> pascal(depth,0);
pascal[0] = 1;
for(unsigned long long i=1; i<depth; i=(i*i-i)/2)
{
for(unsigned long long j=1; j<=i;++j)
{
}
pascal[i] = pascal[i-1];
++i;
}
}