/* ex12.h */ struct Produit { int ref; float prix; } ; struct ResRech{ float prix; int indice; }; extern struct ResRech recherch(struct Produit [], int, int);
/* ex12.c */ struct ResRech recherch(struct Produit T[], int Size, int Pdt) { int rang ; struct ResRech resul = { 0.0, -1 }; for( rang =0; rang < Size; rang++){ if(T[rang].ref == Pdt) { resul.prix = T[rang].prix ; resul.indice = rang ; break; } } return resul; }
#include <stdio.h> #include "ex12.h" int N = 10 ; /* nombre fixe d'elements dans le tableau */ main() { struct Produit tab[] = { {1,87.10},{2,15.20},{3,2.35},{4,70.0},{5,12.40}, {6,98.0},{7,56.30},{8,35.05},{9,67},{10,40} } ; int num, i, res ; struct ResRech FoundProd; printf("Les valeurs rentrees dans le tableau sont :\n"); for ( i = 0 ; i < N ; i++ ) printf("%5d %8f\n",tab[i].ref, tab[i].prix ); printf("\nRentrez le numero de produit recherche : "); res = scanf("%d",&num) ; if ( res != 1 ){ printf("Erreur de saisie\n"); return 1 ; } FoundProd = recherch( tab, N, num) ; if(FoundProd.indice != -1) printf("Prix du produit %d : %f a l'indice %d\n", num,FoundProd.prix,FoundProd.indice); else printf("Produit inexistant\n"); }