Garder un nombre toujours positif
Arkolos
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je programme en C et je doit trouver le nompbre le plus proche d'un autre. Il faut pour cela faire une différence entre ces deux nombres, mais se débrouiller pour que le resultat obtenu soit toujours positif ou nul (pour calculer le plus bas).
Quelle est le moyen de faire cela le plus simplement et le plus rapidement pour le programme ?
J'ai fais dif=((nb-nombre[i]>0)-(nb-nombre[i<0))*(nb-nombre[i]);
mais je ne pense pas que ce soit le moyen le plus rapide...
Merci de me répondre
Je programme en C et je doit trouver le nompbre le plus proche d'un autre. Il faut pour cela faire une différence entre ces deux nombres, mais se débrouiller pour que le resultat obtenu soit toujours positif ou nul (pour calculer le plus bas).
Quelle est le moyen de faire cela le plus simplement et le plus rapidement pour le programme ?
J'ai fais dif=((nb-nombre[i]>0)-(nb-nombre[i<0))*(nb-nombre[i]);
mais je ne pense pas que ce soit le moyen le plus rapide...
Merci de me répondre
A voir également:
- Garder un nombre toujours positif
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Ascii nombre de caractères - Guide
- Excel garder les 0 devant un nombre - Guide
- Gto nombre episode - Forum Cinéma / Télé
2 réponses
Salut,
Tout dépend, si ton tableau est trié ou pas.
Les algorithmes ne sauront pas les mêmes suivant les cas.
Tout dépend, si ton tableau est trié ou pas.
Les algorithmes ne sauront pas les mêmes suivant les cas.
Arkolos
Mon tableau est trié en ordre décroissant mais je ne voit pas ce que cela change...
Mon tableau est trié en ordre décroissant mais je ne voit pas ce que cela change...
Ca change la complexité de l'algorithme.
Dans le cas du tableau non trié, tu dois parcourir tous les éléments, alors que pour le tableau tu n'as pas besoin d'aller jusqu'au dernier. Donc l'algorithme est plus performant. De plus, tu n'auras même pas besoin de calculer la valeur absolue.
Par exemple, dans ton cas, tu peux faire tout simplement :
Si tu comprends pas mon algorithme, teste sur un exemple tu verras ;)
Sinon, n'hésite pas à poser des questions.
Cdlt
Ca change la complexité de l'algorithme.
Dans le cas du tableau non trié, tu dois parcourir tous les éléments, alors que pour le tableau tu n'as pas besoin d'aller jusqu'au dernier. Donc l'algorithme est plus performant. De plus, tu n'auras même pas besoin de calculer la valeur absolue.
Par exemple, dans ton cas, tu peux faire tout simplement :
#include <stdio.h> double plusProche(double *tab, double nb, size_t len){ size_t i=0; if( nb>tab[0] ) return tab[0]; while( i<len && nb<tab[i++] );i--; return ( tab[i-1]-nb < nb-tab[i]) ? tab[i-1] : tab[i]; } int main(void){ double tab[]={1.5,1.3,1.2,1.1}; double nb; puts("nombre :"); scanf("%lf",&nb); printf("plus proche : %lf\n",plusProche(tab,nb,sizeof tab/sizeof *tab)); return 0; }
Si tu comprends pas mon algorithme, teste sur un exemple tu verras ;)
Sinon, n'hésite pas à poser des questions.
Cdlt