Tp informatique 5

Voir le sujet précédent Voir le sujet suivant Aller en bas

Tp informatique 5

Message  bastien.b [TD1] le Ven 27 Mai - 16:48

voila je met le TP 5 d'informatique a votre disposition

Spoiler:

/* sons.c */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

int main( int argc, char *argv[])
{
FILE* canal; // déclaration du canal
char signature [5], sign2 [5], chunk [5], nomchunk[5];
long lgchunk,frqech,nboctps, repetition, lgchunk2, K,*x;
short pcm, nbvoies, nboctpe, nboctpev, longueur;
double duree;
int i;

printf("ouverture du fichier %s\n", argv[1]);

canal = fopen(argv[1],"rt");

if (canal == 0 )
{
printf("%s not found\n",argv[1]);
exit (-1);
}

/* debut de l'aquisition de head */

fgets (signature, 5, canal);
if ( strcmp (signature, "RIFF" ) !=0)
{
printf(" ce n'est pas le bon fichier \n");
exit (-2);
}
printf ("1er signature = %s \n", signature);


fread( &longueur, sizeof(long) , 1, canal);
printf ("longeur du fichier = %ld\n", longueur + Cool;

fgets (sign2, 5, canal);
if ( strcmp(sign2, "WAVE" ) !=0)
{
printf(" ce n'est pas le bon fichier \n");
exit (-2);
}
printf ("2eme signature = %s \n", sign2);


/* debut du chunk */
// nom

fgets (chunk, 5, canal);
printf ("nom du chunk : %s\n", chunk);

// longueur

fread( &lgchunk, sizeof(long), 1, canal);
printf ("longueur du chunk %s : %ld\n",chunk, lgchunk +Cool;

// type

fread( &pcm , sizeof(short), 1, canal);
printf ("type du fichier : %d\n", pcm);

// nb voie

fread (&nbvoies, sizeof(short), 1, canal);
printf ("nb voies : %d\n", nbvoies);

// frequence echantillage

fread (&frqech, sizeof(long), 1 , canal);
printf(" frequence d'echantillonage : %ld\n", frqech);

// nombre d'octet par seconde : nboctps

fread (&nboctps, sizeof(long), 1, canal);
printf ("nombre de octet par secondes : %ld\n", nboctps);

// nbre octet par echantillon : nboctpe

fread (&nboctpe, sizeof(short), 1, canal);
printf ("nombre d'octet par echantillon : %d\n", nboctpe);

// nombre de bits par echantillon et par voie : nboctpev

fread (&nboctpev, sizeof(short), 1 ,canal);
printf ("le nombre de bits par échantillon et par voie est : %d\n", nboctpev);

// fin du premier chunk

// recherche du chunk data

do
{
fgets (nomchunk, 5, canal);
fread (&lgchunk2, sizeof(long), 1,canal);
repetition =strcmp (nomchunk,"data");
if (repetition!=0)
fseek (canal,lgchunk2,SEEK_CUR);
}
while (repetition!=0);

printf (" on arrive au chunk : %s\n", nomchunk);

// calcul de la durée

printf (" on calcul la duree du son ");
duree =(double) lgchunk2 / nboctps;
printf (" la duree est de : %lf \n", duree);


// calcul des echantillons sautes

printf( "conbien d'echantillons voulez-vous sauter ? \n");
scanf ("%d",&K);
printf("nombre totale d'echantillon : %ld \n", K);

//allocation memoire pour les echantillons

x=calloc (K, nboctpe);
fread (x,K,nboctpe,canal);

// ecriture et ouverture dans le fichier texte

FILE *can;
can = fopen( "tempo.txt","wt");

for (i=0;i<2*K;i+2)
{
fprintf(can, "%6d\t%6d\n",x[i], x[i+1]);

}
fclose(can);
fclose(canal);

// ouverture de gnuplot

FILE *oleoduc;
oleoduc = fopen("gnuplot","w");
if (oleoduc ==0)
{
printf ("impossible à ouvrir\n");
exit (-4);
}
fprintf (oleoduc,"pl \"tempo.txt\" w i\n");
fclose (oleoduc);
fflush(oleoduc);

return 0;

}


voila j'essaye de mettre les autres TP d'ici le début de la semaine

bastien.b [TD1]

Messages: 14
Date d'inscription: 24/05/2011
Age: 20
Localisation: caen

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum