Besoin d'aide pour une fonction qui fait une soustraction lorsque 2 nb sont <0
panier
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
bonjour j'espère vous allez bien , je viens vers vous parce que j'ai besoin d'aide pour une fonction qui fais la soustraction avec les tableau lorsque les de nb sont négatif . j'ai deja fais le cas ou les deux nombres sont positif du genre 5 et 5 par exemple mais j'ai du mal pour l'autre fonction . voici mon code .
int nb_a_conv(int nb_tab[],int tab_taille){ int i; for (i = 0; i < tab_taille ; i++ ){ if (nb_tab[i] != 0){ return i; } } } void converte(int nb[], int taille){ int nb_a = nb_a_conv(nb,1000); nb[nb_a] = nb[nb_a] * -1; } int comparer(int nb1[], int nb2[],int taille[]){ int i; for (i = 0 ; i < taille ; i++){ if (nb1[i] > nb2[i]){ return 1 ; } else if (nb1[i] < nb2[i]){ return 2; } } return 3 ; } void sous_negative_num(int res[], int nb1[], int nb2[], int taille){ int i=0; int cur=0; int comcom = comparer(nb1,nb2,1000); for(i=0; i<taille; i++){ if (comcom == 1){ if (nb1[taille-i-1] > nb2[taille-i-1]){ nb2[taille-i-1]=nb2[taille-i-1]+10; nb1[taille-i-1]=nb1[taille-i-1]+1; cur = nb2[taille-i-1] - nb1[taille-i-1]; } else { cur=nb2[taille-i-1]-nb1[taille-i-1]; } res[taille-i-1]=cur; } else if (comcom == 2){ if (nb2[taille-i-1] > nb1[taille-i-1]){ nb1[taille-i-1]=nb1[taille-i-1]+10; nb2[taille-i-1]=nb2[taille-i-1]+1; cur=nb1[taille-i-1] - nb2[taille-i-1]; } else { cur=(nb1[taille-i-1]-nb2[taille-i-1]); } } res[taille-i-1] = cur; } converte(res,1000); }
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Besoin d'aide pour une fonction qui fait une soustraction lorsque 2 nb sont <0
- Fonction si et - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Nb si en anglais - Guide
- Remettre a 0 un pc - Guide
- 2 ecran pc - Guide
En attendant, voilà quelques éléments, qui sont de pure arithmétique de primaire/collège et n'ont pas grand choses à voir avec le C. Je pense que ton code n'implémente simplement pas correctement ces comportements attendus.
Si les deux nombres nb1 et nb2 sont négatifs et que tu en fais une soustraction alors tes opérandes sont :
l'opération revient à faire une soustraction de ces deux nombres.
Comme tu simules des opérations posées, calculées à la main, il faudra "mettre le grand nombre" en valeur absolue "en haut", et :
faire la soustraction des valeurs absolues des deux nombres et mettre le signe du résultat en négatif si nécessaire.
Par ailleurs, lorsqu'on fait une soustraction à la main, on doit faire des choses comme cela lorsque le chiffre du "haut" est plus petit que le chiffre "du bas" sur une colonne donnée :
Dans ton code, tu sembles bien ajouter 10 à un chiffre de ta colonne, mais tu ne reportes pas le 1 sur le chiffre concerné de la colonne suivante (tu le fais sur la même colonne). Cela ne peut pas fonctionner.