Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Il y a 76 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Chaine de caractères

 
n°6854
Goldberg
Profil : Jeune recrue
Posté le 25-02-2004 à 22:34:23  profilanswer
 

Bonjour, comment faire pour  
1) introduire deux chaines  de caractère (en fait rien que des valeurs numériques)  
2) pouvoir additionner les premiers termes ensembles, les seconds ensembles sans convertir cette chaine en nombre!  
 
ex  
1) j'introduis 14563365 et 1234566  
2) 1+1=2, 4+2=6, 5+3=8, 6+4=10 ...  
 
un tt grand merci d'avance  

n°6858
Baziel
Profil : Membre
Posté le 26-02-2004 à 00:01:14  profilanswer
 

:crazy:
 
Je suis pas sur d'avoir tout compris :  
Tu as deux chaines de caractères qui représentent des nombres, c'est ça ? Et tu voudrais les additionner ? Sans passer par une conversion CHAINE -> NOMBRE auparavant ?
 
Si c'est pas ça, désolé d'avoir compris à coté.
Si c'est ça, précise nous dans quel environnemet tu travailles pour qu'on puisse répondre plus précisément...

n°6859
Goldberg
Profil : Jeune recrue
Posté le 26-02-2004 à 00:13:49  profilanswer
 

oui c bien ça
 
en fait pour être exact je dois additionner deux nombres représentés en base 2 sans convertir la chaine en nombre!!!
il faut utiliser un pointeur surement non?

n°6860
airv3
Coach de la Montgalorette
Profil : Vieux de la vieille
Posté le 26-02-2004 à 00:16:02  profilanswer
 

ouais mais si c des nombres représenter en base 2 si tu les additionne il faut que tu les additione en base 2, n'oublie pas çà parce ke le + du C te donnerra pas le bon resultat je pense


---------------
La surprise du petit Chkonk est attendu Hall "Coin de la ruelle" porte des "400 pseudos"
En Sicile, la femme est plus dangereuse que les fusils...
Des mecs comme lui y en a pas
n°6861
Goldberg
Profil : Jeune recrue
Posté le 26-02-2004 à 00:29:15  profilanswer
 

oui oui c bien mon intention  
c pour ça que j'aimerais savoir comment sélectionner indépendemment chacun des éléments de ma chaine sans devoir la convertir!

n°6862
airv3
Coach de la Montgalorette
Profil : Vieux de la vieille
Posté le 26-02-2004 à 00:42:53  profilanswer
 

en fait tu me dis que par exemple tu ve saisir "10" et "11" et les additionnés pour que ca te donne le résultat de l'addition binaire soit "101" c ca???


---------------
La surprise du petit Chkonk est attendu Hall "Coin de la ruelle" porte des "400 pseudos"
En Sicile, la femme est plus dangereuse que les fusils...
Des mecs comme lui y en a pas
n°6867
Goldberg
Profil : Jeune recrue
Posté le 26-02-2004 à 10:39:16  profilanswer
 

non j'introduis deux nombres en binaire et je dois les aditionner sans les convertir en nombres préalablement!

n°6870
Baziel
Profil : Membre
Posté le 26-02-2004 à 11:16:48  profilanswer
 

Je que le + clair pour qu'on ne dise pas de betise serait que tu mettre ton code (déclaration des deux chaines + ce qu'il y a dedans) et nous on te mettra lecontenu de la fonction add() qui va bien...

n°6872
Goldberg
Profil : Jeune recrue
Posté le 26-02-2004 à 12:13:14  profilanswer
 

#include <stdio.h>
#include <string.h>
 
main()
 
{
 int a,b,c,d;
 char tab1[80], tab2[80];
 size_t length;
 
 while (1)
 {
    puts("Entrez une première chaine." );
    gets (tab1);
    length = strlen(tab1); a=length;
 
    puts("Entrez une seconde chaine." );
    gets (tab2);
    length = strlen(tab2); b=length;
     
    if (a<=b)    for (i=b-1; i>=b-a; i--) {c=b-a;j'aimerais faire tab1[i-c] + tab2[i] et  afficher le résultat pour chaque i}  
                      for(i=b-a-1; i>=0, i-- { afficher tab2[i]}
 
    if (a>b) for (i=a-1; i>=a-b ; i-- ) { c=a-b; j'aimerais faire tab1[i]+tab2[i-c] et afficher le résultat pour chaque i;}
                for (i=a-b-1; i>=0; i--) {afficher tab1[i]}
 
}
 
 
 
 
donc en fait j'introduis deux chaines
première = 12345 et je la mets ds un tableau donc tab1[0]=1, tab1[1]=2, tab1[2]=3, tab1[3]=4, tab1[4]=5; ensuite je compte le nombre d'élements de ce tableau a=5
deuxième = 123 et je la mets ds un second tableau tab2[0]=1, tab2[1]=2 et tab2[2]=3; je compte également le nbre d'élements b=3
 
ds ce cas j'ai a>b
 
donc je pars de i=a-1=4; c=a-b=2 et je fais
1) tab1[4]+tab2[i-c]=5+3=8 et j'aimerais afficher 8
2) tab1[3]+tab2[1]=4+2=6 et j'aimerais afficher 6
3) tab1[2]+tab2[0]=3+1=4 et j'aimerais afficher 4
mnt je suis arrivé à i<2 et donc je passe au second for :
tab1[1]=2, tab1[0]=1
 
 
j'espère avoir été clair
 
un tt grand merci à celui qui pourra m'aider

n°6874
Baziel
Profil : Membre
Posté le 26-02-2004 à 12:40:51  profilanswer
 

(sans chercher à comprendre pourquoi tu fais entrer à l'utilisateur deux chaines de car plutot que deux nombres directement, après tout tu dois avoir tes raisons)
 
Il me semble que conceptuellement le plus simple c'est de "completer la chaine la plus courte avec des 0 à gauche"
Comme ça tu as "12345" à additionner avec "00123". Comme ça ta boucle for elle est plus simple.
 
Ensuite pour additionner des char en ASCII le + simple c'est de bien penser que '8' = 8 + '0' et de façon générale 'n' = n+'0' donc pour toi tu dois faire :
tab1[i] + tab2[i] - '0' pour avoir le chiffre en ASCII

n°6875
Goldberg
Profil : Jeune recrue
Posté le 26-02-2004 à 13:15:27  profilanswer
 

voilà l'énnoncé exact:
Écrivez un programme qui prend sur la ligne de commande (dans argv) deux chaînes représentant des nombres décimaux entiers supérieurs ou égaux à zéro et qui calcule et affiche leur somme (et rien d'autre, sauf en cas d'erreur).
 
La conversion des chaînes de caractères en nombres (par scanf(), atoi() etc.) n'est pas autorisée. Calculez plutôt le résultat chiffre par chiffre (en BCD – binary-coded decimals, c'est-à-dire, chaque octet représente un chiffre décimal). Votre programme doit fonctionner pour n'importe quel nombre de chiffres, sauf limitations imposées par le système.
 

n°6889
hoover
Mode Thermique
Profil : Membre
Posté le 27-02-2004 à 00:06:42  profilanswer
 

tab1[i] + tab2[i] - '0'  <- +1

n°6891
airv3
Coach de la Montgalorette
Profil : Vieux de la vieille
Posté le 27-02-2004 à 02:13:18  profilanswer
 

goldberg a écrit :

non j'introduis deux nombres en binaire et je dois les aditionner sans les convertir en nombres préalablement!


c normal que je comprenait pas ce ke tu voulais dire... binaire et le décimal ca n'as rien a voir...c a toi de faire la conversoin arpès pour calculer...


Message édité par airv3 le 27-02-2004 à 02:14:03

---------------
La surprise du petit Chkonk est attendu Hall "Coin de la ruelle" porte des "400 pseudos"
En Sicile, la femme est plus dangereuse que les fusils...
Des mecs comme lui y en a pas

Aller à :
Ajouter une réponse