Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Marcin Jalbrzykowski
50 changes: 50 additions & 0 deletions vim-challenge/args.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>

struct test {
int i1, i2;
double d;
char i3;
};

struct test* alloc(const char *fmt, ...) {
struct test *out = malloc(sizeof(struct test*));
va_list args;
va_start(args, fmt);

int i1_has_value = 0;
int i2_has_value = 0;

for(int i = 0; i < strlen(fmt); i++) {
switch(fmt[i]) {
case 'i':
if(!i1_has_value) {
out->i1 = va_arg(args,int);
i1_has_value = 1;
}
else if(!i2_has_value) {
out->i2 = va_arg(args,int);
i2_has_value = 1;
}
else
out->i3 = va_arg(args,int);
break;
case 'd':
out->d = va_arg(args,double);
break;
}
}

va_end(args);

return out;
}

int main() {
struct test *p = alloc("iidi", 33, 44, 3.14, 55);
printf("%d %d %f %d\n", p->i1, p->i2, p->d, p->i3);

return 0;
}
43 changes: 24 additions & 19 deletions vim-challenge/integral.c
Original file line number Diff line number Diff line change
@@ -1,34 +1,39 @@
#include <stdio.h>
#include <math.h>

float integral(float a, float b, float (*f) (float), int n) {
int i;
float dx = (b - a) / n;
float value_of_integral = 0.0;

for (i=0; i<n; i++) {
float si_a = a + (i)*dx;
float si_b = a + (i+1)*dx;
value_of_integral += simpson(si_a, si_b, f, dx);
double simpson(double a, double b, double (*f) (double), double dx) {
double value_of_interval_integral =
0.5 * (f(a) + f(b)) / dx;
return value_of_interval_integral;
}

return value_of_integral;
double integral(double a, double b, double (*f) (double), int n) {
int i;
double dx = (b - a) / n;
double value_of_integral = 0.0;

for (i=0; i<n; i++) {
double subinterval_a = a + (i)*dx;
double subinterval_b = a + (i+1)*dx;
value_of_integral += subintervalmpson(si_a, si_b, f, dx);
}

return value_of_integral;
}

float square(float x) {
double square(double x) {
return x*x;
}

float simpson(float a, float b, float (*f) (float), float dx) {
float value_of_interval_integral =
0.5 * (f(a) + f(b)) / dx;
return value_of_interval_integral;
double cube(double x) {
return x*x*x;
}

int main(int argc, char** argv) {
float twopi = 2 * 3.14;
float integral_of_f = integral(0.0, 1.0, square, 1e3);
/*float integral_of_sin = integral(0.0, twopi, sin, 10);*/
printf("Całka z funkjci f (0.0 - 1.0) = %g\n", integral_of_f);
double twopi = 2 * 3.14;
double integral_of_f = integral(0.0, 1.0, cube, 1e3);
/*double integral_of_sin = integral(0.0, twopi, sin, 10);*/
printf("Całka z funkcji f (0.0 - 1.0) = %g\n", integral_of_f);
/*printf("Całka z sinus (0 - 2pi) = %g\n", integral_of_sin);*/
return 0;
}