Operations dans les tableaux

Résolu
jeandchanel Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   -  
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Peut on diviser successivement les éléments d'un tableau ?
exemple:
int tableau[4] = {16,4,3,2};
tableau[0]/tableau[1]/tableau[2]/tableau[3];





Merci d'avance..!?

1 réponse

Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Salut,

Ce que tu viens d'écrire se résume à :

int i, tableau[4] = {16,4,3,2};
i = ((tableau[0]/tableau[1])/tableau[2])/tableau[3];


Aucun navigateur ne propose d'extension boule-de-cristal : postez des informations pour avoir de l'aide...
1
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
on peut aussi préciser que les divisions successives seront des divisions entières.
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
De toute façon, la division de variables de type int n'est pas une bonne idée vu qu'il n'y a pas de partie décimale.
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
bonne ou mauvaise idée, je ne sais pas, mais il faut juste savoir ce que l'on fait, la division entière ayant sa propre utilité, et ne pas s'étonner si le résultat est 0.

on peut aussi avoir des variables de type int, et obtenir un résultat décimal si l'une d'elles est décimale ou avec un cast.

#include <stdio.h>

int main(void) {
    printf("%d\n",          16 / 4 / 3 / 2);
    printf("%f\n", (double) 16 / 4 / 3 / 2);
    printf("%f\n",          16.0 / 4 / 3 / 2);
    printf("%f\n",          16.0 / 4.0 / 3.0 / 2.0);
    return 0;
}
donne
0
0.666667
0.666667
0.666667

Dal
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Oui mais il faut soit demander à ce que le résultat soit afficher en décimal ou écrire double devant.

Ce sont des tour de passe passe, autant faire bien dès le début, bien poser le problème pour bien y répondre.
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
On ne sait pas si notre ami jeandchanel veut faire des divisions entières ou pas. Si ça se trouve c'est bien ce qu'il veut faire ;-) J'attire juste son attention sur le problème, que ni lui ni toi vous aviez mentionné.

Sinon, je ne ne vois pas où se trouve le "tour de passe passe", c'est l'application des règles de base de l'opérateur de division en C.

Aussi, je ne suis pas sûr de comprendre ce que tu veux dire par "autant faire bien dès le début, bien poser le problème pour bien y répondre". Si tu veux dire par là, utiliser des variables double pour stocker des entiers au lieu de variables int, je ne suis pas d'accord non plus : il me parait naturel de stocker des nombres entiers sous la forme d'entiers dans un tableau, parce que ce sont des entiers, et non pas sous forme de floats ou de double, qui vont occuper plus d'espace mémoire, sous prétexte qu'on veut ensuite pouvoir faire des divisions avec virgule dessus.

Si demain, il lui prend l'envie de faire des additions sur des entiers déguisés en double, il peut avoir d'autres surprises ou erreurs :

#include <stdio.h>

int main(void) {
    printf("%f\n", 16.0 + 4.0 + 3.0 + 2.0);
    printf("%d\n", 16.0 + 4.0 + 3.0 + 2.0); /* bogue */
    return 0;
}
ce qui donne un magnifique :
25.000000
0

:-)

Dal
0