make borring version of dm2 to comply with school + make test only version to share with people
This commit is contained in:
parent
2e012a29c4
commit
ac8499addb
33
dm2/dm2.c
33
dm2/dm2.c
@ -141,24 +141,32 @@ int sommeentiers(char str[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
printf("-2/3 = %f\n\n", fraction(-2, 3));
|
printf("-21/50 = %f\n\n", fraction(-21, 50));
|
||||||
|
|
||||||
printf("2004 %s bissextile\n", bissextile(2004) ? "est" : "n'est pas");
|
printf("2004 %s bissextile\n", bissextile(2004) ? "est" : "n'est pas");
|
||||||
printf("2100 %s bissextile\n\n", bissextile(2100) ? "est" : "n'est pas");
|
printf("2042 %s bissextile\n", bissextile(2042) ? "est" : "n'est pas");
|
||||||
|
printf("2077 %s bissextile\n", bissextile(2077) ? "est" : "n'est pas");
|
||||||
|
printf("2100 %s bissextile\n", bissextile(2100) ? "est" : "n'est pas");
|
||||||
|
printf("2400 %s bissextile\n\n", bissextile(2400) ? "est" : "n'est pas");
|
||||||
|
|
||||||
printf("Avec x=-3.716309026, 2.5x² - 2x + 0.04=%f\n\n",
|
printf("Avec x=-3.716309026, 2.5x² - 2x + 0.04=%f\n\n",
|
||||||
evalue((double[3]){0.04, -2., 2.5}, 3, -3.716309026));
|
evalue((double[3]){0.04, -2., 2.5}, 3, -3.716309026));
|
||||||
|
|
||||||
printf("min([2, 5, 89, 3]) = %d\n\n", ecartmin((int[4]){2, 5, 89, 3}, 4));
|
printf("equartmin([324, 47, 89, 9]) = %d\n\n",
|
||||||
|
ecartmin((int[4]){324, 47, 89, 9}, 4));
|
||||||
|
|
||||||
printf("Le premier nombre dans \"eia42snt-134eius34)\" est %d\n\n",
|
printf("Le premier nombre dans "
|
||||||
extraire("eia42snt-134eius34)"));
|
"\"eia42snt-118eius34)jze_([up=%%>]{}\\EBIU,dCLKw*eBPYZJ\" "
|
||||||
|
"est %d\n\n",
|
||||||
|
extraire("eia42snt-118eius34)jze_([up=%>]{}\\EBIU,dCLKw*eBPYZJ"));
|
||||||
|
|
||||||
printf("sommemajo([80, -2, -1])=%f\n\n",
|
printf("sommemajo([30.5, -2, -1, 10.5, 0, 1])=%f\n\n",
|
||||||
sommemajo((double[3]){80., -2., -1.}, 3));
|
sommemajo((double[6]){30.5, -2., -1., 10.5, 0., 1.}, 6));
|
||||||
|
|
||||||
printf("\"eia42snt-134eius34)\" a %d caractères différents\n\n",
|
printf("\"eia42snt-118eius34)jze_([up=%%>]{}\\EBIU,dCLKw*eBPYZJ\" a %d "
|
||||||
nbdiff("eia42snt-134eius34)"));
|
"caractères "
|
||||||
|
"différents\n\n",
|
||||||
|
nbdiff("eia42snt-118eius34)jze_([up=%>]{}\\EBIU,dCLKw*eBPYZJ"));
|
||||||
|
|
||||||
printf("42 %s un palindrome\n", palindromeint(42) ? "est" : "n'est pas");
|
printf("42 %s un palindrome\n", palindromeint(42) ? "est" : "n'est pas");
|
||||||
printf("123454321 %s un palindrome\n\n",
|
printf("123454321 %s un palindrome\n\n",
|
||||||
@ -169,6 +177,9 @@ int main() {
|
|||||||
printf("\"Kayak\" %s un palindrome\n\n",
|
printf("\"Kayak\" %s un palindrome\n\n",
|
||||||
palindrome2("Kayak") ? "est" : "n'est pas");
|
palindrome2("Kayak") ? "est" : "n'est pas");
|
||||||
|
|
||||||
printf("La somme des entiers dans \"eia42snt-134eius34)\" est %d\n",
|
printf(
|
||||||
sommeentiers("eia42snt-134eius34)"));
|
"La somme des entiers dans "
|
||||||
|
"\"eia42snt-118eius34)jze_([up=%%>]{}\\EBIU,dCLKw*eBPYZJ\" "
|
||||||
|
"est %d\n",
|
||||||
|
sommeentiers("eia42snt-118eius34)jze_([up=%>]{}\\EBIU,dCLKw*eBPYZJ"));
|
||||||
}
|
}
|
191
dm2/dm2_borring.c
Normal file
191
dm2/dm2_borring.c
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
// This is a modified version of the dm that sticks with what
|
||||||
|
// we are allowed to do (no fancy pointer arithmetic)
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
double fraction(int a, int b) { return (double)a / (double)b; }
|
||||||
|
|
||||||
|
bool bissextile(int year) {
|
||||||
|
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
double evalue(double coef[], int size, double x) {
|
||||||
|
double res = 0;
|
||||||
|
while (size > 0) {
|
||||||
|
size -= 1;
|
||||||
|
res *= x;
|
||||||
|
res += coef[size];
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ecartmin(int t[], int size) {
|
||||||
|
int min = abs(t[size - 1] - t[size - 2]);
|
||||||
|
while (size > 2) {
|
||||||
|
size -= 1;
|
||||||
|
int ecart = abs(t[size - 1] - t[size - 2]);
|
||||||
|
if (ecart < min) {
|
||||||
|
min = ecart;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns 0 if no integer has been detected
|
||||||
|
int extraire(char str[]) {
|
||||||
|
int i = 0;
|
||||||
|
while ((str[i] != '-' || (str[i + 1] <= '0' || str[i + 1] >= '9')) &&
|
||||||
|
(str[i] <= '0' || str[i] >= '9')) {
|
||||||
|
if (str[i] == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int signe = 1 - (2 * (str[i] == '-'));
|
||||||
|
i += str[i] == '-';
|
||||||
|
|
||||||
|
int res = 0;
|
||||||
|
while (str[i] >= '0' && str[i] <= '9') {
|
||||||
|
res *= 10;
|
||||||
|
res += str[i] - '0';
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
return res * signe;
|
||||||
|
}
|
||||||
|
|
||||||
|
double sommemajo(double t[], int size) {
|
||||||
|
int signe = 0;
|
||||||
|
double pos = 0.;
|
||||||
|
double neg = 0.;
|
||||||
|
while (size > 0) {
|
||||||
|
size -= 1;
|
||||||
|
double x = t[size];
|
||||||
|
if (x > 0) {
|
||||||
|
signe += 1;
|
||||||
|
pos += x;
|
||||||
|
} else if (x < 0) {
|
||||||
|
signe -= 1;
|
||||||
|
neg += x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (pos * (signe > 0)) + (neg * (signe < 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only works with ASCII
|
||||||
|
int nbdiff(char str[]) {
|
||||||
|
bool chars[126] = {false};
|
||||||
|
int i = 0;
|
||||||
|
while (str[i]) {
|
||||||
|
chars[str[i] - 1] = true;
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
int count = 0;
|
||||||
|
char c = 1;
|
||||||
|
while (c < 126) {
|
||||||
|
count += chars[c];
|
||||||
|
c += 1;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool palindromeint(int a) {
|
||||||
|
int temp = a;
|
||||||
|
int rev = 0;
|
||||||
|
while (temp) {
|
||||||
|
rev *= 10;
|
||||||
|
rev += temp % 10;
|
||||||
|
temp /= 10;
|
||||||
|
}
|
||||||
|
return a == rev;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only works with alphabetical strings
|
||||||
|
bool palindrome2(char str[]) {
|
||||||
|
int size = strlen(str);
|
||||||
|
int i = 0;
|
||||||
|
while (size > 1) {
|
||||||
|
char c1 = str[i];
|
||||||
|
c1 += ('a' - 'A') * (c1 <= 'Z');
|
||||||
|
char c2 = str[i + size - 1];
|
||||||
|
c2 += ('a' - 'A') * (c2 <= 'Z');
|
||||||
|
if (c1 != c2) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
i += 1;
|
||||||
|
size -= 2;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sommeentiers(char str[]) {
|
||||||
|
int count = 0;
|
||||||
|
int i = 0;
|
||||||
|
while (true) {
|
||||||
|
while ((str[i] != '-' || (str[i + 1] <= '0' || str[i + 1] >= '9')) &&
|
||||||
|
(str[i] <= '0' || str[i] >= '9')) {
|
||||||
|
if (str[i] == 0) {
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int signe = 1 - (2 * (str[i] == '-'));
|
||||||
|
i += str[i] == '-';
|
||||||
|
|
||||||
|
int res = 0;
|
||||||
|
while (str[i] >= '0' && str[i] <= '9') {
|
||||||
|
res *= 10;
|
||||||
|
res += str[i] - '0';
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
count += signe * res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
printf("-21/50 = %f\n\n", fraction(-21, 50));
|
||||||
|
|
||||||
|
printf("2004 %s bissextile\n", bissextile(2004) ? "est" : "n'est pas");
|
||||||
|
printf("2042 %s bissextile\n", bissextile(2042) ? "est" : "n'est pas");
|
||||||
|
printf("2077 %s bissextile\n", bissextile(2077) ? "est" : "n'est pas");
|
||||||
|
printf("2100 %s bissextile\n", bissextile(2100) ? "est" : "n'est pas");
|
||||||
|
printf("2400 %s bissextile\n\n", bissextile(2400) ? "est" : "n'est pas");
|
||||||
|
|
||||||
|
printf("Avec x=-3.716309026, 2.5x² - 2x + 0.04=%f\n\n",
|
||||||
|
evalue((double[3]){0.04, -2., 2.5}, 3, -3.716309026));
|
||||||
|
|
||||||
|
printf("equartmin([324, 47, 89, 9]) = %d\n\n",
|
||||||
|
ecartmin((int[4]){324, 47, 89, 9}, 4));
|
||||||
|
|
||||||
|
printf("Le premier nombre dans "
|
||||||
|
"\"eia42snt-118eius34)jze_([up=%%>]{}\\EBIU,dCLKw*eBPYZJ\" "
|
||||||
|
"est %d\n\n",
|
||||||
|
extraire("eia42snt-118eius34)jze_([up=%>]{}\\EBIU,dCLKw*eBPYZJ"));
|
||||||
|
|
||||||
|
printf("sommemajo([30.5, -2, -1, 10.5, 0, 1])=%f\n\n",
|
||||||
|
sommemajo((double[6]){30.5, -2., -1., 10.5, 0., 1.}, 6));
|
||||||
|
|
||||||
|
printf("\"eia42snt-118eius34)jze_([up=%%>]{}\\EBIU,dCLKw*eBPYZJ\" a %d "
|
||||||
|
"caractères "
|
||||||
|
"différents\n\n",
|
||||||
|
nbdiff("eia42snt-118eius34)jze_([up=%>]{}\\EBIU,dCLKw*eBPYZJ"));
|
||||||
|
|
||||||
|
printf("42 %s un palindrome\n", palindromeint(42) ? "est" : "n'est pas");
|
||||||
|
printf("123454321 %s un palindrome\n\n",
|
||||||
|
palindromeint(123454321) ? "est" : "n'est pas");
|
||||||
|
|
||||||
|
printf("\"eiasnteius\" %s un palindrome\n",
|
||||||
|
palindrome2("eiasnteius") ? "est" : "n'est pas");
|
||||||
|
printf("\"Kayak\" %s un palindrome\n\n",
|
||||||
|
palindrome2("Kayak") ? "est" : "n'est pas");
|
||||||
|
|
||||||
|
printf(
|
||||||
|
"La somme des entiers dans "
|
||||||
|
"\"eia42snt-118eius34)jze_([up=%%>]{}\\EBIU,dCLKw*eBPYZJ\" "
|
||||||
|
"est %d\n",
|
||||||
|
sommeentiers("eia42snt-118eius34)jze_([up=%>]{}\\EBIU,dCLKw*eBPYZJ"));
|
||||||
|
}
|
43
dm2/dm2_test_only.c
Normal file
43
dm2/dm2_test_only.c
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
int main() {
|
||||||
|
printf("-21/50 = %f\n\n", fraction(-21, 50));
|
||||||
|
|
||||||
|
printf("2004 %s bissextile\n", bissextile(2004) ? "est" : "n'est pas");
|
||||||
|
printf("2042 %s bissextile\n", bissextile(2042) ? "est" : "n'est pas");
|
||||||
|
printf("2077 %s bissextile\n", bissextile(2077) ? "est" : "n'est pas");
|
||||||
|
printf("2100 %s bissextile\n", bissextile(2100) ? "est" : "n'est pas");
|
||||||
|
printf("2400 %s bissextile\n\n", bissextile(2400) ? "est" : "n'est pas");
|
||||||
|
|
||||||
|
printf("Avec x=-3.716309026, 2.5x² - 2x + 0.04=%f\n\n",
|
||||||
|
evalue((double[3]){0.04, -2., 2.5}, 3, -3.716309026));
|
||||||
|
|
||||||
|
printf("equartmin([324, 47, 89, 9]) = %d\n\n",
|
||||||
|
ecartmin((int[4]){324, 47, 89, 9}, 4));
|
||||||
|
|
||||||
|
printf("Le premier nombre dans "
|
||||||
|
"\"eia42snt-118eius34)jze_([up=%%>]{}\\EBIU,dCLKw*eBPYZJ\" "
|
||||||
|
"est %d\n\n",
|
||||||
|
extraire("eia42snt-118eius34)jze_([up=%>]{}\\EBIU,dCLKw*eBPYZJ"));
|
||||||
|
|
||||||
|
printf("sommemajo([30.5, -2, -1, 10.5, 0, 1])=%f\n\n",
|
||||||
|
sommemajo((double[6]){30.5, -2., -1., 10.5, 0., 1.}, 6));
|
||||||
|
|
||||||
|
printf("\"eia42snt-118eius34)jze_([up=%%>]{}\\EBIU,dCLKw*eBPYZJ\" a %d "
|
||||||
|
"caractères "
|
||||||
|
"différents\n\n",
|
||||||
|
nbdiff("eia42snt-118eius34)jze_([up=%>]{}\\EBIU,dCLKw*eBPYZJ"));
|
||||||
|
|
||||||
|
printf("42 %s un palindrome\n", palindromeint(42) ? "est" : "n'est pas");
|
||||||
|
printf("123454321 %s un palindrome\n\n",
|
||||||
|
palindromeint(123454321) ? "est" : "n'est pas");
|
||||||
|
|
||||||
|
printf("\"eiasnteius\" %s un palindrome\n",
|
||||||
|
palindrome2("eiasnteius") ? "est" : "n'est pas");
|
||||||
|
printf("\"Kayak\" %s un palindrome\n\n",
|
||||||
|
palindrome2("Kayak") ? "est" : "n'est pas");
|
||||||
|
|
||||||
|
printf(
|
||||||
|
"La somme des entiers dans "
|
||||||
|
"\"eia42snt-118eius34)jze_([up=%%>]{}\\EBIU,dCLKw*eBPYZJ\" "
|
||||||
|
"est %d\n",
|
||||||
|
sommeentiers("eia42snt-118eius34)jze_([up=%>]{}\\EBIU,dCLKw*eBPYZJ"));
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user