1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
#include <stdio.h>
#define NB_LIGNES 4;
NB_COLONNES 3
inline int getPixel(int i, int j, int w, int bytesperPix)
{
return (i*w + j)*bytesperPix;
}
void SDL_Surface *MonFlipV(SDL_Surface *im)
{
SDL_Surface *res;
int i,j,src,dest;
int bytesperpix;
unsigned char *srcpixels, *destpixels;
if(im==NULL)
return NULL;
bytesperpix = im->format->BytesPerPixel;
// Creation d'une surface de meme taille
res = SDL_CreateRGBSurface(SDL_HWSURFACE, im->w, im->h, im->format->BitsPerPixel,
im->format->Rmask, im->format->Gmask, im->format->Bmask, im->format->Amask);
if(res == NULL)
return NULL;
// Maintenant on inverse les pixels
srcpixels = (unsigned char*) im->pixels;
destpixels = (unsigned char*) res->pixels;
for(i=0;i<im->h;i++)
for(j=0;j<im->w;j++)
{
src = getPixel(i,j,im->w,bytesperpix);
dest = getPixel(im->h-1-i,j,im->w,bytesperpix);
destpixels[dest] = srcpixels[src];
dest++;src++;
destpixels[dest] = srcpixels[src];
dest++;src++;
destpixels[dest] = srcpixels[src];
dest++;src++;
if(bytesperpix==4)
{
destpixels[dest] = srcpixels[src];
dest++;src++;
}
}
return res;
}
main()
{
float a[NB_LIGNES][NB_COLONNES]; /* a est une matrice encodée par l'utilisateur */
float c[NB_LIGNES][NB_COLONNES]; /* Résultat */
int i, j; /* Indices */
/* La matrice A est déjà initialisée; on demande à l'utilisateur de
donner les valeurs pour la matrice B */
for (i = 0; i < NB_LIGNES; ++i)
for (j = 0; j < NB_COLONNES; ++j) {
printf( "Valeur de l'élément %d,%d de la matrice B? ", i+1, j+1 );
scanf( "%f", &a[i][j] );
}
/* Addition */
for (i = 0; i < NB_LIGNES; ++i)
for (j = 0; j < DNB_COLONNES; ++j)
c[i][j] = SDL_Surface *MonFlipV(SDL_Surface *im);
/* Affichage du résultat avec les éléments en ordre */
printf( "\nLa matrice vaut:\n" );
for (i = 0; i < NB_LIGNES; ++i) {
for (j = 0; j < NB_COLONNES; ++j)
printf( " %12f", c[i][j] ); /* "%12f": printf ajoute des espaces à
gauche du nombre, printf imprime 12 charactères */
printf( "\n" ); /* point à la ligne après chaque ligne */
}
} |
Partager