[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 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 17 mai 2008 à 01:58
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 17 mai 2008 à 01:58
A voir également:
- [debutante] calcul sur une boucle en c
- Calculer une note sur 20 ✓ - Forum Bureautique
- Pc s'allume et s'éteint en boucle - Forum Matériel informatique
- Clémence souhaite faire calculer automatiquement les prix de 30 produits dans trois devises. elle a déjà saisi une formule de calcul pour le tarif du premier produit dans la première devise. corrigez sa formule afin que recopiée vers le bas puis vers la droite, elle remplisse correctement tout le tableau. - Forum Excel
- Formule de calcul excel - Guide
- Freebox redémarre en boucle ✓ - Forum Freebox
12 réponses
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
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
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
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
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
17 mai 2008 à 01:58
17 mai 2008 à 01:58
Bonne continuation ;-)