Liste chaine et fichier
fathy
-
fathy -
fathy -
Bonjour,
je suis un passionne et debutant en programation c
j'ai commencé a faire un programme C qui donne le resultat de S=Xi+1(Yi+1-Yi-1) avec i est un indice
et est le surface d'un polygone de n sommet
alor je choisie de travailler avec la liste chainee :
-input de notre donne est un fichier txt qui contient les Xs et les Ys
-output est un fichier txt qui contient S
j'ai fait un programme mais j'ai trouvee un probleme de refaire mon travail avec les sous program avec integration de code qui lit de la fichier
voila le script
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
struct cellule
{
float x;
float y;
struct cellule *lien;
};
void main ()
{ float a,o ,s=0,pr=0,dx,dy;
int i,n;
struct cellule *first=NULL,*p,*m,*ok,*aux ;
/*********************NOMBRE DES SOMMETS***************************************/
do{
printf("nombre des sommets\n");
scanf("%d",&n);
}while(n<3);
/************************coordonne de 1 er cellule*****************************/
printf("Tapez l'X N°1 : ");
scanf("%f",&a);
printf ("Tapez l'Y N°1 :");
scanf("%f" ,&o);
p=(struct cellule*)malloc(sizeof(struct cellule));
m=p;
p->x=a;
p->y=o;
p->lien=first;
first=p ;
/***********************coordonee des cellules suivantes**********************/
for (i=1;i<n ;i++){
p=(struct cellule*)malloc(sizeof(struct cellule));
printf ("Tapez l'X N°%d :",i+1);
scanf("%f" ,&p->x);
printf ("Tapez l'Y N°%d :",i+1);
scanf("%f" ,&p->y);
p->lien=first;
first=p;
}
/******************************calcul de surface & de perimetre****************/
ok=first;
s=s+(0.5 *abs(ok->x *(m->y - (ok->lien)->y)));
dx=(ok->x - m->x);
dy=(ok->y - m->y);
pr=pr+sqrt((dx*dx)+(dy*dy));
aux=ok;
ok=ok->lien;
while(ok->lien != NULL)
{
s=s+(0.5*abs((ok->x*(aux->y - (ok->lien)->y))));
dx=(ok->x - aux->x);
dy=(ok->y - aux->y);
pr=pr+sqrt((dx*dx)+(dy*dy));
aux=ok;
ok=ok->lien;
}
s=s+(0.5*abs(ok->x*(aux->y - first->y)));
dx=(ok->x - aux->x);
dy=(ok->y - aux->y);
pr=pr+sqrt((dx*dx)+(dy*dy));
printf("la surface est %.3f\n",s);
printf("le perimetre est%.3f",pr);
}
/****************fin de programme********************/
je suis un passionne et debutant en programation c
j'ai commencé a faire un programme C qui donne le resultat de S=Xi+1(Yi+1-Yi-1) avec i est un indice
et est le surface d'un polygone de n sommet
alor je choisie de travailler avec la liste chainee :
-input de notre donne est un fichier txt qui contient les Xs et les Ys
-output est un fichier txt qui contient S
j'ai fait un programme mais j'ai trouvee un probleme de refaire mon travail avec les sous program avec integration de code qui lit de la fichier
voila le script
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
struct cellule
{
float x;
float y;
struct cellule *lien;
};
void main ()
{ float a,o ,s=0,pr=0,dx,dy;
int i,n;
struct cellule *first=NULL,*p,*m,*ok,*aux ;
/*********************NOMBRE DES SOMMETS***************************************/
do{
printf("nombre des sommets\n");
scanf("%d",&n);
}while(n<3);
/************************coordonne de 1 er cellule*****************************/
printf("Tapez l'X N°1 : ");
scanf("%f",&a);
printf ("Tapez l'Y N°1 :");
scanf("%f" ,&o);
p=(struct cellule*)malloc(sizeof(struct cellule));
m=p;
p->x=a;
p->y=o;
p->lien=first;
first=p ;
/***********************coordonee des cellules suivantes**********************/
for (i=1;i<n ;i++){
p=(struct cellule*)malloc(sizeof(struct cellule));
printf ("Tapez l'X N°%d :",i+1);
scanf("%f" ,&p->x);
printf ("Tapez l'Y N°%d :",i+1);
scanf("%f" ,&p->y);
p->lien=first;
first=p;
}
/******************************calcul de surface & de perimetre****************/
ok=first;
s=s+(0.5 *abs(ok->x *(m->y - (ok->lien)->y)));
dx=(ok->x - m->x);
dy=(ok->y - m->y);
pr=pr+sqrt((dx*dx)+(dy*dy));
aux=ok;
ok=ok->lien;
while(ok->lien != NULL)
{
s=s+(0.5*abs((ok->x*(aux->y - (ok->lien)->y))));
dx=(ok->x - aux->x);
dy=(ok->y - aux->y);
pr=pr+sqrt((dx*dx)+(dy*dy));
aux=ok;
ok=ok->lien;
}
s=s+(0.5*abs(ok->x*(aux->y - first->y)));
dx=(ok->x - aux->x);
dy=(ok->y - aux->y);
pr=pr+sqrt((dx*dx)+(dy*dy));
printf("la surface est %.3f\n",s);
printf("le perimetre est%.3f",pr);
}
/****************fin de programme********************/
A voir également:
- Liste chaine et fichier
- Liste déroulante excel - Guide
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
je veux refaire le travail avec une fonction -saisie,fonction lire les donnees d'un fichier txt ,fonction calcul de surface et une fonction de'enregistrement ds un autre fichier txt.
merci
fathy