Select Git revision
Forked from
programmation_sequentielle / travaux_pratiques / c_lang / simulation_galaxie / enonce
Source project has a limited visibility.
Vector.c 1.87 KiB
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "Vector.h"
vec *new_vec(double x, double y){
//Allocation de la mémoire nécessaire
vec *new_vec = malloc(sizeof(vec));
//On vérifie que l'allocation est bien faite
if (new_vec == NULL){
exit(1);
}
//Attribution des valeurs x et y
new_vec->x = x;
new_vec->y = y;
return new_vec;
}
vec *add_vec(const vec *const v1, const vec *const v2){
vec *add_vec = new_vec(0.0,0.0);
add_vec->x = v1->x + v2->x;
add_vec->y = v1->y + v2->y;
return add_vec;
}
vec *sub_vec(const vec *const v1, const vec *const v2){
vec *sub_vec = new_vec(0.0,0.0);
sub_vec->x = v1->x - v2->x;
sub_vec->y = v1->y - v2->y;
return sub_vec;
}
int Test_new_vec(){
vec *vector = new_vec(2.0,3.1);
if(vector->x == 2.0 && vector->y == 3.1){
printf("Test_new_vec IS OK\n");
}
else{
printf("Test_new_vec has an ERROR\n");
}
free(vector);
}
int Test_add_vec(){
vec *v1 = new_vec(2.5,3.2);
vec *v2 = new_vec(4.6,1.5);
vec *v3 = add_vec(v1,v2);
if(v3->x == 7.1 && v3->y == 4.7){
printf("Test_add_vec IS OK\n");
}
else {
printf("Test_add_vec has an ERROR\n");
}
free(v1);
free(v2);
free(v3);
}
int Test_sub_vec(){
vec *v1 = new_vec(2.5,3.2);
vec *v2 = new_vec(4.6,1.5);
vec *v3 = sub_vec(v1,v2);
if(v3->x == (v1->x-v2->x) && v3->y == (v1->y-v2->y)){
printf("Test_sub_vec IS OK\n");
}
else {
printf("Test_sub_vec has an ERROR\n");
}
free(v1);
free(v2);
free(v3);
}
int main_tests(){
Test_new_vec();
Test_add_vec();
Test_sub_vec();
}
int main(int argc, char *argv[]){
if(argc == 2) {
if (strcmp(argv[1], "test") == 0) {
main_tests();
}
}
else{
printf("OK\n");
}
}