Programme en c++
noussa44
Messages postés
48
Date d'inscription
Statut
Membre
Dernière intervention
-
noussa44 Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
noussa44 Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai fai un petit programme pour calculer le nombre de répétition (les éléments égaux) mais avec une marge d'erreur (0.1) après le tri , j'ai utilisé une boucle "for" afin de parcourir le tableau puis j'ai utilisé une condition si (t[i]==t[i+1]) || (t[i+1])-t[i]=0.1) alors on incrémente la valeur de "rép" (c'est une variable pour le nombre de répétition).
Je veux savoir si ma méthode est juste ou non car il m'affiche que le tableau après le tri donc j'ai des erreurs pour cela je me suis fait recours sur votre aide et j'esper que j 'aurai des reponses svp et merci!! . Voici mon code.
J'ai fai un petit programme pour calculer le nombre de répétition (les éléments égaux) mais avec une marge d'erreur (0.1) après le tri , j'ai utilisé une boucle "for" afin de parcourir le tableau puis j'ai utilisé une condition si (t[i]==t[i+1]) || (t[i+1])-t[i]=0.1) alors on incrémente la valeur de "rép" (c'est une variable pour le nombre de répétition).
Je veux savoir si ma méthode est juste ou non car il m'affiche que le tableau après le tri donc j'ai des erreurs pour cela je me suis fait recours sur votre aide et j'esper que j 'aurai des reponses svp et merci!! . Voici mon code.
#include <stdio.h> void Trier(float tab[],int size) { int i,j,max,fin; float swap; max = size - 1; while (1) { fin = 1; for (i=0,j=1 ; i<max ; ++i,++j) { if (tab[i] > tab[j]) { swap = tab[i]; tab[i] = tab[j]; tab[j] = swap; fin = 0; } } if (fin == 1) return; --max; } } int main(void) { float tab[50]; int size; int i; printf("Choisir le nombre de valeur du tableau : "); scanf("%d",&size); if (size > 50) size = 50; for(i=0 ; i<size ; ++i) { printf("Rentrer la valeur %d : ",i + 1); scanf("%f",&tab[i]); } printf("\nTableau saisi : \n"); for(i=0 ; i<size ; ++i) printf("- %f \n",tab[i]); Trier(tab,size); printf("\nTableau trie : \n"); for(i=0 ; i<size ; ++i){ printf("- %f \n",tab[i]);} int rep=0; for(i=0; i<size;++i) { if ((tab[i]==tab[i+1]) || (tab[i+1]-tab[i])) rep+=1;} printf("- %d \n",rep); return 0; } <code>
A voir également:
- Programme en c++
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
2 réponses
if ((tab[i]==tab[i+1]) || (tab[i+1]-tab[i]))
1) En supposant que les éléments de 'tab' sont des entiers, alors :
- ou les deux éléments sont égaux et 'tab[i]==tab[i+1]' est vrai,
- ou les deux éléments ne sont pas égaux et 'tab[i+1]-tab[i]' est vrai !
2) S'il s'agit de float, deux éléments sont déclarés 'égaux' s'ils ne diffèrent que d'une quantité 'epsilon'; ce qui nécessite d'évaluer la quantité: '|a-b| < epsilon'.
D'autre part la fonction 'Trier' peut s'écrire plus simplement:
1) En supposant que les éléments de 'tab' sont des entiers, alors :
- ou les deux éléments sont égaux et 'tab[i]==tab[i+1]' est vrai,
- ou les deux éléments ne sont pas égaux et 'tab[i+1]-tab[i]' est vrai !
2) S'il s'agit de float, deux éléments sont déclarés 'égaux' s'ils ne diffèrent que d'une quantité 'epsilon'; ce qui nécessite d'évaluer la quantité: '|a-b| < epsilon'.
D'autre part la fonction 'Trier' peut s'écrire plus simplement:
void Trier(float tab[], int size) { int i, boucle; do { boucle = 0; for (i=1; i<size; i++) if (tab[i-1] > tab[i]) { float swap = tab[i-1]; tab[i-1] = tab[i]; tab[i] = swap; boucle = 1; } } while (boucle); }Bonne continuation.