Exemple #1
0
int edit_fac()
{
  int nlu,temwh,i,temet;
  width = 0; height=0; nbpol =0; temwh = 0; temet = 0;
  ydeb=0; dy=0;	nuli=0;
  for ( i=0; i < CSFnco; ++i) parlf[i].y = 0;

  while ( (nlu=lect_fis()) > 0 )		{
    if ( strncmp(ze, "PAGSUIV",7) == 0) break;
    if ( ze[0] == '#')	{
      nmot = isolmot(ze,nlu);
      memopol();
      continue;
    }
    else if ( ze[0] == '$')	{
      nmot = isolmot(ze,nlu);
      temet = entete();
      continue;
    }
    // param lu  active cairo
    if (temwh == 0 && width != 0 && height != 0)	{
      surface = cairo_pdf_surface_create(nomfic, width,height);
      status = cairo_surface_status(surface);
      if (!surface || status!=CAIRO_STATUS_SUCCESS)	{
	//     printf("erreur cairo fic pdf\n");
	message(25);
	return -1;
      }
      cr = cairo_create(surface);
      if ( temet == 1)	{	// active en tete
	cairo_save(cr);
	//cairo_scale(cr, 1./dpp, 1./dpp);
	pattern = cairo_pattern_create_for_surface(etsurf);
	cairo_translate(cr,0,0);
	cairo_pattern_set_filter(pattern, CAIRO_FILTER_BEST);
	cairo_set_source(cr,pattern);
	cairo_paint(cr);
	cairo_restore(cr);
      }
      cairo_set_source_rgb(cr, 0, 0, 0);
      temwh = 1;
    }
    if (temwh == 0) continue;	// cr,surface non crees
    // ou erreur ligne avant creation cairo systematique 1er lig windows fic txt
    nmot = isolmot(ze,nlu);
    interp();
  } // fin boucle lect fgets
  if (temwh == 0) return -1;		// cr, surface non crees
  for ( i=0; i < CSFnco; ++i)	{
    if (parlf[i].y == 1) { i=-1; break; } // y a-t-il des cde lignes ?
  }
  if ( i == -1)	implf();	// imprim lignes details
  cairo_destroy(cr);
  cairo_surface_destroy(surface);
  return 0;
}
void main ()

{
  int position,choix=-1,choix1=-1,choix1_2=-1,N,i=1;		/*Déclaration des variables*/
  float Xi[MAX],Yi[MAX],result[10];
  float ProduitXiYi[MAX];
  float carre_ecart_a_moyenne_Xi[MAX];
  float carre_ecart_a_moyenne_Yi[MAX];
  int j = 0;

  while (j < 53)
    {
      Xi[j] = data[0].country_nb[j];
      Yi[j] = data[8].country_nb[j];
      j++;
    }

  /*Appel de la fonction d'affichage d'en-tête*/

  entete();

  /********/
  /* MENU */
  /********/


  while(choix!=0)
    {
      titre("Menu Principale:");

      printf("\nEntrez le num%cro de l\'op%cration d%csir%ce:\n",130,130,130,130);
      printf("\n(1) Entrer o%c modifier les donn%ces (Xi et Yi).",151,130);
      printf("\n(2) D%cterminer l\'%cquation de la droite",130,130);
      printf("\n(3) Afficher le tableau des valeurs interm%cdiaires.",130);
      printf("\n(4) Afficher les r%csultats.",130);
      printf("\n(5) Sauvegadrer les donn%ces dans un fichier.",130);
      printf("\n(0) Quitter le programme.");
      printf("\n\n Quel est votre choix? :");
      scanf("%d",&choix);

      switch (choix)
	{
	case 1:
	  {	choix1=-1;choix1_2=-1;

	    while(choix1!=0)
	      {
		titre("Menu Donnees:");
		printf("\nEntrez le num%cro de l\'op%cration d%csir%ce:\n",130,130,130,130);
		printf("\n(1) Entrer des nouvelles valeurs.");
		printf("\n(2) Modiffier les valeurs existantes.");
		printf("\n(3) Revenir au menu principale.");
		printf("\n(0) Quitter le programme.");
		printf("\n\n Quel est votre choix? :");
		scanf("%d",&choix1);

		switch (choix1)
		  {
		  case 1:
		    {

		      titre("Donnees:");/*Fonction d'affichage de titre*/

		      /*Appel de la fonction d'entrée du nombre d'élement*/

		      N=nbrelement();

		      i=1;

		      /*Entree des élements Xi*/

		      titre("Entree des valeurs de Xi:");/*Fonction d'affichage de titre*/

		      while (i<(N+1))
			{
			  printf("Entrez la valeur de X%d: ",i);
			  scanf("%f",&Xi[i]);i++;
			};

		      i=1;

		      /*Entree des élements Yi*/

		      titre("Entree des valeurs de Yi:");/*Fonction d'affichage de titre*/

		      while (i<(N+1))
			{
			  printf("Entrez la valeur de Y%d: ",i);
			  scanf("%f",&Yi[i]);i++;
			}
		      printf("\nTappez une touche pour revenir au menu pr%cc%cdant:",130,130);
		      getchar();
		      getchar();
		      printf("\n\n");


		    };break;

		  case 2:
		    {
		      choix1_2=-1;

		      while(choix1_2!=0)
			{
			  titre("Menu Modiffication Donnees");
			  printf("\nEntrez le num%cro de l\'op%cration d%csir%ce:\n",130,130,130,130);
			  printf("\n(1) Modifier un %cl%cment des Xi.",130,130);
			  printf("\n(2) Modifier un %cl%cment des Yi.",130,130);
			  printf("\n(3) Revenir au menu pr%cc%cdant.",130,130);
			  printf("\n(4) Revenir au menu principale.");
			  printf("\n(0) Quitter le programme.");
			  printf("\n\n Quel est votre choix? :");
			  scanf("%d",&choix1_2);

			  switch (choix1_2)
			    {
			    case 1:
			      {
				titre("Modiffication d'un element des Xi:");
				printf("Entrez la position de l\'%cl%cment dans le tableau:",130,130);
				scanf("%d",&position);
				printf("\nEntrez la nouvelle valeur de X%d:",position);
				scanf("%lf",&Xi[position]);
				printf("\n Modification %cffectu%ce...\n",130,130);

			      };break;
			    case 2:
			      {
				printf("\n\nEntrez la position de l\'%cl%cment dans le tableau:",130,130);
				scanf("%d",&position);
				printf("\nEntrez la nouvelle valeur de Y%d:",position);
				scanf("%lf",&Yi[position]);
				printf("\n Modification %cffectu%ce...\n",130,130);

			      };break;
			    case 3:choix1=-1;choix1_2=0;break;
			    case 4:choix1_2=0;choix1=0;choix=-1;break;
			    case 0:choix1=0;choix1_2=0;break;
			    default:;break;
			    }
			}

		    };break;

		  case 3:choix=-1;choix1=0;break;
		  case 0:choix=0;choix1=0;break;
		  default:printf("\n Entr%ce non valide!");break;
		  }
	      }




	  };break;

	case 2:
	  {
	    /*Appel de la fonction de regression linéaire*/

	    regression(Xi,Yi,N,result,ProduitXiYi,carre_ecart_a_moyenne_Xi,carre_ecart_a_moyenne_Yi);

	    printf("\nOp%Cration termin%ce...\n",130,130);

	    /*Affichage de l'éqation et de la corrélation "r"*/

	    aff_equation(result);

	    printf("\nCoefficient de corr%clation:=> r = %lf\n\n",130,result[9]);
	    printf("Tappez une touche pour revenir au menu pr%cc%cdant:",130,130);
	    getchar();
	    getchar();
	    printf("\n\n");

	  };break;

	case 3:
	  {
	    /*Affichage du tableau des resultats*/

	    affich_tab(result,Xi,Yi,ProduitXiYi,carre_ecart_a_moyenne_Xi,carre_ecart_a_moyenne_Yi,N);
	    printf("\nTappez une touche pour revenir au menu pr%cc%cdant:",130,130);
	    getchar();
	    getchar();
	    printf("\n\n");


	  };break;

	case 4:
	  {
	    /*Affichage des résultats*/

	    affichage(result);
	    printf("\nTappez une touche pour revenir au menu pr%cc%cdant:",130,130);
	    getchar();

	  };break;

	case 5:
	  {
	    fichier(result,Xi,Yi,ProduitXiYi,carre_ecart_a_moyenne_Xi,carre_ecart_a_moyenne_Yi,N);
	    printf("\nTappez une touche pour revenir au menu pr%cc%cdant:",130,130);
	    getchar();
	  }

	case 0:;break;

	default:printf("\nEntree non valide!\n");break;
	};


    }

  getchar();
}