Besoins d'aide pour un exercice - C - Programmation
MarshPosté le 11-11-2012 à 17:23:41
Bonjour à tous,
Voila pour Mardi j'ai des exercices à rendre et je sèche sur un en particulier,
Il est quelquefois nécessaire en programmation de construire des fonctions numériques agissant sur des ensembles de caractères, de façon à ce que, pour une chaîne de donnée, on récupère un code numérique ( ces fonctions sont notamment utilisées dans le monde du cryptage et de la sécurité). Par exemple si l'on saisit les caractères b,a, et c, il est possible de calculer la fonction suivante :
f('b','a','c')= code de 'b'*2^0 + code de 'a'*2^1 + code de 'c'*2^2
et
g('b','a','c')= code de 'b'+ code de 'a' + code de 'c'
1) Construire un programme permettant d'effectuer les travaux suivants: - Saisie en boucle de caractères et calcul de la fonction f ( le coefficient multiplicateur -ici 2- devra être quelconque),
- Saisie en boucle de caractères et calcul de la fonction g,
-Vérification de l'égalité des fonctions f( ou g) sur deux séries de caractères frappés ( par exemple, avec g, si l'ont saisit 'b','a','c' ou 'c','a','b', on a le même résultat).
2) Même question après avoir opéré une rotation de n positions sur les caractères ( par exemple, 'a' devient 'b' et 'z' devient 'a' a avec une rotation de +1 caractère).
Voilà, un grand merci à vous tous .(PS: je veux juste la démarche si cela ne vous dérange pas pas le code entier mais de quoi me lancer sur la bonne voie, merci )
Voici le début de mon code :
int main() { int mul,tmp,i=0,total_f=0,f1,g1,c1,total; char c; printf("Voulez-vous utiliser la fonction 1 ou la fonction 2 ? Inscrivez la lettre de la fonction choisie pour lancer le programme ou 0 pour arreter le programme.\n" ); scanf("%c",&choix1); while (f1!=1||g1!=2||c1!=0) {printf("Erreur, inscrivez la lettre de la fonction choisie pour lancer le programme ou 0 pour arrêter le programme.\n" ); scanf("%c",&choix1);} printf("Entrez le coefficent multiplicacteur: \n" ); scanf("%d",&mul); do { printf("Entrez votre caractere:\n" ); scanf("%c",&c); tmp=(int)c*pow(mul,i); total+=tmp; i++; } while(c!=0); printf("La fonction F est égale à: %d\n" ); return 0; }
Message édité par Ichigo0910 le 11-11-2012 à 17:42:15
Marsh Posté le 11-11-2012 à 17:23:41
Bonjour à tous,
Voila pour Mardi j'ai des exercices à rendre et je sèche sur un en particulier,
Il est quelquefois nécessaire en programmation de construire des fonctions numériques agissant sur des ensembles de caractères, de façon à ce que, pour une chaîne de donnée, on récupère un code numérique ( ces fonctions sont notamment utilisées dans le monde du cryptage et de la sécurité).
Par exemple si l'on saisit les caractères b,a, et c, il est possible de calculer la fonction suivante :
f('b','a','c')= code de 'b'*2^0 + code de 'a'*2^1 + code de 'c'*2^2
et
g('b','a','c')= code de 'b'+ code de 'a' + code de 'c'
1) Construire un programme permettant d'effectuer les travaux suivants:
- Saisie en boucle de caractères et calcul de la fonction f ( le coefficient multiplicateur -ici 2- devra être quelconque),
- Saisie en boucle de caractères et calcul de la fonction g,
-Vérification de l'égalité des fonctions f( ou g) sur deux séries de caractères frappés ( par exemple, avec g, si l'ont saisit 'b','a','c' ou 'c','a','b', on a le même résultat).
2) Même question après avoir opéré une rotation de n positions sur les caractères ( par exemple, 'a' devient 'b' et 'z' devient 'a' a avec une rotation de +1 caractère).
Voilà, un grand merci à vous tous .(PS: je veux juste la démarche si cela ne vous dérange pas pas le code entier mais de quoi me lancer sur la bonne voie, merci )
Voici le début de mon code :
int main()
{
int mul,tmp,i=0,total_f=0,f1,g1,c1,total;
char c;
printf("Voulez-vous utiliser la fonction 1 ou la fonction 2 ? Inscrivez la lettre de la fonction choisie pour lancer le programme ou 0 pour arreter le programme.\n" );
scanf("%c",&choix1);
while (f1!=1||g1!=2||c1!=0)
{printf("Erreur, inscrivez la lettre de la fonction choisie pour lancer le programme ou 0 pour arrêter le programme.\n" );
scanf("%c",&choix1);}
printf("Entrez le coefficent multiplicacteur: \n" );
scanf("%d",&mul);
do
{
printf("Entrez votre caractere:\n" );
scanf("%c",&c);
tmp=(int)c*pow(mul,i);
total+=tmp;
i++;
} while(c!=0);
printf("La fonction F est égale à: %d\n" );
return 0;
}
Message édité par Ichigo0910 le 11-11-2012 à 17:42:15