Tp1struct II B2.c : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
m
m
 
(2 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
{{RetourVers/TpII}}
 
{{RetourVers/TpII}}
  
#include <stdio.h>
+
<source lang="c">
#include <math.h>
+
#include <stdio.h>
#include "SVGlib.h"
+
#include <math.h>
#define N 10
+
#include "SVGlib.h"
#define largeur 640
+
#define N 10
#define hauteur 480<br>
+
#define largeur 640
  typedef struct
+
#define hauteur 480
 +
 
 +
typedef struct
 +
{
 +
float min;
 +
  float max;
 +
} bornes;
 +
 
 +
typedef struct
 +
{
 +
float X[N];
 +
float Y[N];
 +
bornes Xbornes;
 +
bornes Ybornes;
 +
} fct;
 +
 
 +
bornes extremes(fct f);
 +
fct echantillonne(float Xmin,float Xmax);
 +
void tracerFenetre(int espace,fct f);
 +
 
 +
int main()
 +
{
 +
fct f;
 +
f=echantillonne(0,4);
 +
tracerFenetre(20,f);
 +
return 0;
 +
}
 +
 
 +
bornes extremes(fct f)
 +
{
 +
int i;
 +
bornes M;
 +
//recherche des extremes
 +
M.min=f.Y[0];   M.max=f.Y[0];
 +
for (i=1;i<N;i++)
 
  {
 
  {
  float min;
+
  if (M.min>f.Y[i]) M.min=f.Y[i];
  float max;
+
  if (M.max<f.Y[i]) M.max=f.Y[i];
  } bornes;<br>
+
  }
  typedef struct
+
return M;
 +
}
 +
 
 +
fct echantillonne(float Xmin,float Xmax)
 +
{
 +
int i;
 +
fct f;
 +
f.Xbornes.min=Xmin;
 +
f.Xbornes.max=Xmax;
 +
  // Tableau de valeurs
 +
for (i=0;i<N;i++)
 
  {
 
  {
  float X[N];
+
  f.X[i]=Xmin + i*(Xmax-Xmin)/(N-1);
  float Y[N];
+
  f.Y[i]=sin(f.X[i]);
  bornes Xbornes;
+
  }
  bornes Ybornes;
+
  f.Ybornes=extremes(f);
  } fct;<br>
+
  return f;
  bornes extremes(fct f);
+
}
  fct echantillonne(float Xmin,float Xmax);
+
 
void tracerFenetre(int espace,fct f);<br>
+
void tracerFenetre(int espace,fct f)
  int main()
+
{
  {
+
  //Préparation de l'image
  fct f;
+
  SVGopen(largeur,hauteur);
  f=echantillonne(0,4);
+
SVGrectanglePlein(0, 0, largeur, hauteur,0x303030,0x303030);
  tracerFenetre(20,f);
+
  SVGrectanglePlein(espace, espace, largeur-2*espace, hauteur-2*espace,0x000000,0xFFFFFF);
  return 0;
+
  int cX[N],cY[N],i;
}<br>
+
  // Coordonnees dans l'image
  bornes extremes(fct f)
+
for (i=0;i<N;i++)
  {
 
  int i;
 
  bornes M;
 
  //recherche des extremes
 
  M.min=f.Y[0];   M.max=f.Y[0];
 
  for (i=1;i<N;i++)
 
  {
 
    if (M.min>f.Y[i]) M.min=f.Y[i];
 
    if (M.max<f.Y[i]) M.max=f.Y[i];
 
  }
 
  return M;
 
  }<br>
 
fct echantillonne(float Xmin,float Xmax)
 
{
 
  int i;
 
  fct f;
 
  f.Xbornes.min=Xmin;
 
  f.Xbornes.max=Xmax;
 
  // Tableau de valeurs
 
  for (i=0;i<N;i++)
 
  {
 
    f.X[i]=Xmin + i*(Xmax-Xmin)/(N-1);
 
    f.Y[i]=sin(f.X[i]);
 
  }
 
  f.Ybornes=extremes(f);
 
  return f;
 
}<br>
 
void tracerFenetre(int espace,fct f)
 
 
  {
 
  {
  //Préparation de l'image
+
  cX[i] = (largeur-2*espace) / (f.Xbornes.max-f.Xbornes.min) * (f.X[i]-f.Xbornes.min) + espace;
  SVGopen(largeur,hauteur);
+
  cY[i] = (hauteur-2*espace)*(1 - (f.Y[i]-f.Ybornes.min)/(f.Ybornes.max-f.Ybornes.min)) + espace;
  SVGrectanglePlein(0, 0, largeur, hauteur,0x303030,0x303030);
 
  SVGrectanglePlein(espace, espace, largeur-2*espace, hauteur-2*espace,0x000000,0xFFFFFF);
 
  int cX[N],cY[N],i;
 
  // Coordonnees dans l'image
 
  for (i=0;i<N;i++)
 
  {
 
    cX[i] = (largeur-2*espace) / (f.Xbornes.max-f.Xbornes.min) * (f.X[i]-f.Xbornes.min) + espace;
 
    cY[i] = (hauteur-2*espace)*(1 - (f.Y[i]-f.Ybornes.min)/(f.Ybornes.max-f.Ybornes.min)) + espace;
 
  }
 
  //tracé de la fonction
 
  for (i=1;i<N;i++)  SVGline(cX[i-1],cY[i-1],cX[i],cY[i],0xFF0000);
 
  SVGClose();
 
 
  }
 
  }
 +
//tracé de la fonction
 +
for (i=1;i<N;i++)  SVGline(cX[i-1],cY[i-1],cX[i],cY[i],0xFF0000);
 +
SVGClose();
 +
}
 +
</source>
  
 
{{RetourVers/TpII}}
 
{{RetourVers/TpII}}

Version actuelle datée du 15 décembre 2012 à 19:17

retour vers la page des Tps II

#include <stdio.h>
#include <math.h>
#include "SVGlib.h"
#define N 10
#define largeur 640
#define hauteur 480

typedef struct
{
 float min;
 float max;
} bornes;

typedef struct
{
 float X[N];
 float Y[N];
 bornes Xbornes;
 bornes Ybornes;
} fct;

bornes extremes(fct f);
fct echantillonne(float Xmin,float Xmax);
void tracerFenetre(int espace,fct f);

int main()
{
 fct f;
 f=echantillonne(0,4);
 tracerFenetre(20,f);
 return 0;
}

bornes extremes(fct f)
{
 int i;
 bornes M;
 //recherche des extremes
 M.min=f.Y[0];	  M.max=f.Y[0];
 for (i=1;i<N;i++)
 {
   if (M.min>f.Y[i]) M.min=f.Y[i];
   if (M.max<f.Y[i]) M.max=f.Y[i];
 }
 return M;
}

fct echantillonne(float Xmin,float Xmax)
{
 int i;
 fct f;
 f.Xbornes.min=Xmin;
 f.Xbornes.max=Xmax;
 // Tableau de valeurs
 for (i=0;i<N;i++)
 {
   f.X[i]=Xmin + i*(Xmax-Xmin)/(N-1);
   f.Y[i]=sin(f.X[i]);
 }
 f.Ybornes=extremes(f);
 return f;
}

void tracerFenetre(int espace,fct f)
{
 //Préparation de l'image
 SVGopen(largeur,hauteur);
 SVGrectanglePlein(0, 0, largeur, hauteur,0x303030,0x303030);
 SVGrectanglePlein(espace, espace, largeur-2*espace, hauteur-2*espace,0x000000,0xFFFFFF);
 int cX[N],cY[N],i;
 // Coordonnees dans l'image
 for (i=0;i<N;i++)
 {
   cX[i] = (largeur-2*espace) / (f.Xbornes.max-f.Xbornes.min) * (f.X[i]-f.Xbornes.min) + espace;
   cY[i] = (hauteur-2*espace)*(1 - (f.Y[i]-f.Ybornes.min)/(f.Ybornes.max-f.Ybornes.min)) + espace;
 }
 //tracé de la fonction
 for (i=1;i<N;i++)  SVGline(cX[i-1],cY[i-1],cX[i],cY[i],0xFF0000);
 SVGClose();
}

retour vers la page des Tps II