[debutante] calcul sur une boucle en c
Résolu/Fermé
Megan Fox
Messages postés
410
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
10 juin 2011
-
15 mai 2008 à 09:41
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 - 17 mai 2008 à 01:58
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 - 17 mai 2008 à 01:58
A voir également:
- [debutante] calcul sur une boucle en c
- Calcul moyenne excel - Guide
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Logiciel calcul surface terrain gratuit - Télécharger - Outils professionnels
- Installer calculatrice sur mon portable - Télécharger - Calcul & Conversion
12 réponses
mamiemando
Messages postés
33401
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 novembre 2024
7 804
15 mai 2008 à 09:46
15 mai 2008 à 09:46
Peux-tu nous donner un exemple de chaîne (donnée en entrée) et le résultat attendu (valeur de chaque variable notamment) ?
Bonne chance
Bonne chance
Megan Fox
Messages postés
410
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
10 juin 2011
9
15 mai 2008 à 09:53
15 mai 2008 à 09:53
Salut mamiemando et merci pour ta réponse aussi rapide,
Il peut y avoir n'importe quelle chaîne de caractère, lettre, numéro ..
Par exemple si je prend Megan voici le résultat:
7235˜5A721292
Encore merci
Il peut y avoir n'importe quelle chaîne de caractère, lettre, numéro ..
Par exemple si je prend Megan voici le résultat:
7235˜5A721292
Encore merci
Megan Fox
Messages postés
410
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
10 juin 2011
9
15 mai 2008 à 10:38
15 mai 2008 à 10:38
Salut jeremiethe7,
oui en relisant je me suis plantée sur la 1ère variable , (vraiment désolée)
En fait, tu prends une chaîne de caractères, tu boucles dessus pour passer en revue tous les caractères.
La première variable:
variable1 = caractère[i] + 0x539 <= donc on doit pouvoir convertir le caractère qui est entrain d'être "utiliser" dans la boucle en hexa lui ajouter 0x539 est le mettre dans variable1
ensuite
variable2 = variable2 + variable1 <= le calcul se fait en hexa et variable2 augment à chaque tour de la valeur de variable1
après
variable3 = variable3 + variable2 <= ici c'est la même chose sauf qu'on soustrait à chaque tour 0x21
variable3 = variable3 - 0x21
dernier calcul en dehors de la boucle:
variable4 = variable1 * nombreDeCaractère <- nombre de caractères de la chaîne
Le résultat doit être de la forme: (pour Megan par exemple)
7235˜5A721292
avec
7235 <= résultat de variable4 convertie en décimal
˜ <= caractère spécial
5A7 <= dernière valeur de variable1 en hexa
21292 <= valeur de variable3 en décimal
Voilà
merci
oui en relisant je me suis plantée sur la 1ère variable , (vraiment désolée)
En fait, tu prends une chaîne de caractères, tu boucles dessus pour passer en revue tous les caractères.
La première variable:
variable1 = caractère[i] + 0x539 <= donc on doit pouvoir convertir le caractère qui est entrain d'être "utiliser" dans la boucle en hexa lui ajouter 0x539 est le mettre dans variable1
ensuite
variable2 = variable2 + variable1 <= le calcul se fait en hexa et variable2 augment à chaque tour de la valeur de variable1
après
variable3 = variable3 + variable2 <= ici c'est la même chose sauf qu'on soustrait à chaque tour 0x21
variable3 = variable3 - 0x21
dernier calcul en dehors de la boucle:
variable4 = variable1 * nombreDeCaractère <- nombre de caractères de la chaîne
Le résultat doit être de la forme: (pour Megan par exemple)
7235˜5A721292
avec
7235 <= résultat de variable4 convertie en décimal
˜ <= caractère spécial
5A7 <= dernière valeur de variable1 en hexa
21292 <= valeur de variable3 en décimal
Voilà
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Megan Fox
Messages postés
410
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
10 juin 2011
9
16 mai 2008 à 21:50
16 mai 2008 à 21:50
Bonsoir à tous,
Juste un petit up :)
Bonne soirée
Juste un petit up :)
Bonne soirée
mamiemando
Messages postés
33401
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 novembre 2024
7 804
16 mai 2008 à 22:06
16 mai 2008 à 22:06
Voici le programme que je te propose
mais par contre mon var3 ne donne pas ton résultat (ici -965266083) :
Tu es sûre de ton coup ou c'est moi qui me suis trompée ?
Bonne chance
#include <stdio.h> #include <string.h> int main(){ const char *str = "Megan"; const unsigned n = strlen(str); unsigned i; int var1,var2,var3,var4; for(i=0;i<n;++i){ var1 = str[i]; var1 += 0x539; // 1 var2 += var1; // 2 var3 += var2; // 3 var3 -= 0x21; // 4 } var4 = var1 * n; printf("%d~%x%d\n",var4,var1,var3); return 0; }
mais par contre mon var3 ne donne pas ton résultat (ici -965266083) :
7235~5a7-965266083
Tu es sûre de ton coup ou c'est moi qui me suis trompée ?
Bonne chance
bitrate
Messages postés
439
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
22 mars 2011
98
16 mai 2008 à 22:21
16 mai 2008 à 22:21
moi j'ai ça (variable3 incorrect)
char chaine[]="Megan";
int len=strlen(chaine);
// on part de zéro je pense (pas précisé)
unsigned long variable1=0,variable2=0,variable3=0,variable4=0;
for (int i=0;i<len;i++)
{
variable1 = chaine[i] + 0x539;
variable2 = variable2 + variable3;
variable3 = variable3 + variable2;
variable3 = variable3 - 0x21;
}
variable4 = variable1 * len;
printf("%ld~%lx%ld\n",variable4,variable1,variable3);
y'a un problème avec variable3...
++
char chaine[]="Megan";
int len=strlen(chaine);
// on part de zéro je pense (pas précisé)
unsigned long variable1=0,variable2=0,variable3=0,variable4=0;
for (int i=0;i<len;i++)
{
variable1 = chaine[i] + 0x539;
variable2 = variable2 + variable3;
variable3 = variable3 + variable2;
variable3 = variable3 - 0x21;
}
variable4 = variable1 * len;
printf("%ld~%lx%ld\n",variable4,variable1,variable3);
y'a un problème avec variable3...
++
Megan Fox
Messages postés
410
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
10 juin 2011
9
16 mai 2008 à 22:26
16 mai 2008 à 22:26
Bonsoir à vous deux,
merci pour votre aide
Je regarde pour var3
A+
merci pour votre aide
Je regarde pour var3
A+
Megan Fox
Messages postés
410
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
10 juin 2011
9
16 mai 2008 à 22:54
16 mai 2008 à 22:54
Non c'est ça normalement,
Je le fait en manuel, avec:
M -> 4D
e -> 65
g -> 67
a -> 61
n -> 6E
1er tour:
V1 = 4D + 539 = 586
V2 = V2 + V1 = 586
V3 = V3 + V2 = 586
V3 = V3 - 21 = 565
2ème tour:
V1 = 65 + 539 = 59E
V2 = V2 + V1 = 586 + 59E =B24
V3 = V3 + V2 = 565 + B24 = 1089
V3 = V3 - 21 = 1089 - 21 = 1068
3ème tour:
V1 = 67 + 539 = 5A0
V2 = V2 + V1 = B24 + 5A0 =10C4
V3 = V3 + V2 = 1068 + 10C4 = 212C
V3 = V3 - 21 = 212C - 21 = 210B
4ème tour:
V1 = 61 + 539 = 59A
V2 = V2 + V1 = 10C4+ 59A =165E
V3 = V3 + V2 = 210B + 165E = 3769
V3 = V3 - 21 = 3769 - 21 = 3748
5ème tour:
V1 = 6E + 539 = 5A7
V2 = V2 + V1 = 165E+ 5A7 =1C05
V3 = V3 + V2 = 3748 + 1C05 = 534D
V3 = V3 - 21 = 534D - 21 = 532C
et donc
V3 = 0x532C = 21292 en décimal
Encore merci
P.S. la prochaine fois on fera un exemple sur 2 caractères ça ira plus vite :)
Je le fait en manuel, avec:
M -> 4D
e -> 65
g -> 67
a -> 61
n -> 6E
1er tour:
V1 = 4D + 539 = 586
V2 = V2 + V1 = 586
V3 = V3 + V2 = 586
V3 = V3 - 21 = 565
2ème tour:
V1 = 65 + 539 = 59E
V2 = V2 + V1 = 586 + 59E =B24
V3 = V3 + V2 = 565 + B24 = 1089
V3 = V3 - 21 = 1089 - 21 = 1068
3ème tour:
V1 = 67 + 539 = 5A0
V2 = V2 + V1 = B24 + 5A0 =10C4
V3 = V3 + V2 = 1068 + 10C4 = 212C
V3 = V3 - 21 = 212C - 21 = 210B
4ème tour:
V1 = 61 + 539 = 59A
V2 = V2 + V1 = 10C4+ 59A =165E
V3 = V3 + V2 = 210B + 165E = 3769
V3 = V3 - 21 = 3769 - 21 = 3748
5ème tour:
V1 = 6E + 539 = 5A7
V2 = V2 + V1 = 165E+ 5A7 =1C05
V3 = V3 + V2 = 3748 + 1C05 = 534D
V3 = V3 - 21 = 534D - 21 = 532C
et donc
V3 = 0x532C = 21292 en décimal
Encore merci
P.S. la prochaine fois on fera un exemple sur 2 caractères ça ira plus vite :)
bitrate
Messages postés
439
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
22 mars 2011
98
16 mai 2008 à 23:07
16 mai 2008 à 23:07
ça donne le bon résultat maintenant (mavé trompé) ça donne bien 7235~5a721292
void main()
{
char chaine[]="Megan";
int len=strlen(chaine);
// on part de zéro je pense (pas précisé)
unsigned long variable1=0,variable2=0,variable3=0,variable4=0;
for (int i=0;i<len;i++)
{
variable1 = chaine[i] + 0x539;
variable2 = variable2 + variable1;
variable3 = variable3 + variable2;
variable3 = variable3 - 0x21;
}
variable4 = variable1 * len;
printf("%ld~%lx%ld",variable4,variable1,variable3);
}
void main()
{
char chaine[]="Megan";
int len=strlen(chaine);
// on part de zéro je pense (pas précisé)
unsigned long variable1=0,variable2=0,variable3=0,variable4=0;
for (int i=0;i<len;i++)
{
variable1 = chaine[i] + 0x539;
variable2 = variable2 + variable1;
variable3 = variable3 + variable2;
variable3 = variable3 - 0x21;
}
variable4 = variable1 * len;
printf("%ld~%lx%ld",variable4,variable1,variable3);
}
Megan Fox
Messages postés
410
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
10 juin 2011
9
16 mai 2008 à 23:15
16 mai 2008 à 23:15
Merci beaucoup à vous 2,
ça fonctionne aussi pour moi
Gros bisous, passez une bonne fin de soirée
@+
ça fonctionne aussi pour moi
Gros bisous, passez une bonne fin de soirée
@+
mamiemando
Messages postés
33401
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 novembre 2024
7 804
17 mai 2008 à 01:58
17 mai 2008 à 01:58
Bonne continuation ;-)