/******************************************************/ /* Concours commun INP */ /* https://www.concours-commun-inp.fr */ /* CC BY-NC-SA, Novembre 2023 */ /* https://creativecommons.org/licenses/by-nc-sa/4.0/ */ /******************************************************/ #include<stdio.h> #include<math.h> #include<stdlib.h> struct nb{ double x; struct nb* suivant; }; //Question 2 int epsilon(){ //A compléter } //Question 3 double u(int n){ //A compléter } //Question 5 double somme(struct nb* tab){ //A compléter } double somme2(struct nb* tab){ //on suppose que tab est triée par ordre //croissant et est non vide struct nb* temp=tab; while(temp!=NULL) { if (temp->suivant !=NULL) { struct nb* s; //Création du maillon s contenant la somme des 2 premiers éléments // A compléter //temp pointe vers le 3e élément de la liste temp=(temp->suivant)->suivant; //recherche de l'emplacement de s struct nb* t=temp; struct nb* t2=temp; while(t!=NULL){ /*si la valeur pointée par t est supérieure strictement à celle de s, t pointe sur l'élément suivant sinon on quitte la boucle */ //A compléter } //insertion de s if (t==NULL & t2==NULL) { temp=s; } else { if (t==NULL & t2!=NULL){ t2->suivant=s; } else { t2->suivant=s; s->suivant=t; } } } else { return temp->x; } } return temp->x; } int main(){ double a=2e65; double b=-2e65; double c=1.0; printf("\n Question 1\n"); //Calcul et affichage de (a+b)+c et a+(b+c) //A compléter // printf("\n epsilon machine %i\n",epsilon()); printf("\n Question 4\n"); //Affichage des 22 premiers termes // A compléter printf("\n Question 5-6\n"); //Test des sommes struct nb* l = malloc(sizeof(struct nb)); l->x=1./(pow(10,5)); l->suivant=NULL; struct nb* temp=l; for(int i=pow(10,5)-1;i>0;i=i-1) { struct nb* n=malloc(sizeof(struct nb)); n->x=1./(float)i; n->suivant=NULL; temp->suivant=n; temp=temp->suivant; } //printf("\n somme %.15lf\n" ,somme(l)); // printf("\n somme %.15lf\n ",somme2(l)); return 0; }