Fiche du problème
#include <stdio.h>
#include <stdlib.h>
#define N 5
const char *SYMBOLES = "23456789CFGHJMPQRVWX";
void set_doublet(float latitude, float longitude, char* code, int rang, float angle){
/*
latitude, longitude: position
code: chaine contenant le code plus
rang: position du doublet
angle: angle correspondant au rang en cours
*/
int i = int((latitude + 90) / angle) % 20;
int j = int((longitude + 180) / angle) % 20;
code[2*rang] = SYMBOLES[i];
code[2*rang+1] = SYMBOLES[j];
}
void plus_code(float latitude, float longitude, char*code){
code[2*N] = '\0';
float angle = 20;
for (int rang = 0; rang < N; rang++){
set_doublet(latitude, longitude, code, rang, angle);
angle = angle / 20;
}
}
int main(int argc, char *argv[]) {
// exemple de Paris
// latitude = 48.866669
// longitude = 2.33333
if (argc != 3) {
printf("Vous devez préciser latitude et longitude en argument.\nExemple : %s 48.866669 2.33333\n", argv[0]);
return 1;
}
float latitude = atof(argv[1]);
float longitude = atof(argv[2]);
char code[2*N+1];
plus_code(latitude, longitude, code);
printf("Pour (latitude = %f, longitude = %f) le plus code est %s.\n", latitude, longitude, code);
return 0;
}