1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
static int racine_delta(int delta);
static void usage(char *);
int
main(int argc, char *argv[])
{
if (argc != 4)
usage(argv[0]);
int a = floor(atof(argv[1]));
if (a == 0);
usage(argv[0]);
int b = floor(atof(argv[2]));
int c = floor(atoi(argv[3]));
int delta = (b * b) - (4 * a * c);
if (delta != 0)
{
printf("Deux solutions %s :\n\n", (delta < 0) ? "complexes et conjuguees" : "reelles");
int d = printf("%d + %s(%d * rac(%d))\n", -b, (delta < 0) ? "i" : "", racine_delta(delta), abs(delta / (racine_delta(delta) * racine_delta(delta))));
int e;
for (e = 1; e <= d; e++)
{
printf("-");
}
if (delta > 0)
{
printf(" = %f\n", (-b + sqrt(delta)) / (2 * a));
}
else if (delta < 0)
{
printf(" = %f + i * %f\n", ((float)-b/(2*a)), (sqrt(abs(delta)))/(2 * a));
}
printf("%d\n\n", 2 * a);
d = printf("%d - %s(%d * rac(%d))\n", -b, (delta < 0) ? "i" : "", racine_delta(delta), abs(delta / (racine_delta(delta) * racine_delta(delta))));
for (e = 1; e <= d; e++)
{
printf("-");
}
if (delta > 0)
{
printf(" = %f\n", (-b + sqrt(delta)) / (2 * a));
}
else if (delta < 0)
{
printf(" = %f - i * %f\n", ((float)-b/(2*a)), (sqrt(abs(delta)))/(2 * a));
}
printf("%d\n", 2 * a);
}
if (delta == 0)
{
printf("Une solution reelle double :\n\n");
int d = printf("%d\n",-b);
int e;
for (e = 1; e <= d; e++)
{
printf("-");
}
printf(" = %f\n", (float)-b/(2*a));
printf("%d\n", 2 * a);
}
return EXIT_SUCCESS;
}
static int
racine_delta(int delta) // Fonction retournant la racine du plus grand carré entier dont delta est un multiple
{
if (delta < 0)
{
delta = abs(delta);
}
int val_maxi = floor(sqrt(delta));
int i;
int t = 1;
for (i = val_maxi; i > 0; i--)
{
if ( delta - (floor(delta/(i*i))*(i*i)) == 0)
{
t = i;
i = -1;
}
}
return t;
}
static void
usage(char *s)
{
fprintf(stderr, "Usage: %s \"a\" \"b\" \"c\" avec a different de zero", s);
exit(EXIT_FAILURE);
} |
Partager