Tuesday, 2 May 2017

TP13, codes sources

Programme 1:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x=1,y=5,*pt1,*pt2;

    pt1=&x;
    *pt1=2;
    pt1=&y;
    *pt1=3;
    pt2=pt1+1;
    printf("adresse de x en hexa:%p \n celle de y:%p \n pt1 contient: %p"
           "\n adresse de pt1:%p \n pt2 contient: %p \n adresse de pt2:%p",
           &x,&y,pt1,&pt1,pt2,&pt2);
    printf("\n taille d'une variable pointeur dans ma machine:%d",sizeof(pt1));
    return 0;
}

Programme 2:
#include <stdio.h>
#include <stdlib.h>
#define MAX 7
//Ne pas changer la valeur de MAX
int tab[MAX];

int main(){
    int *ptr,i,val;
    //tab unidim
    val=0;
    ptr=tab;     *ptr=(val+=10);
    ptr++;       *ptr=(val+=10);
    ptr=&tab[3];  ptr--; *ptr=(val+=10);
    ptr=tab+3;   *ptr=(val+=10);
    ptr=tab;     *(ptr+4)=(val+=10);
    ptr[5]=(val+=10);   *(tab+6)=(val+=10);
    printf("\n Tableau :\n");
    for(i=0;i<MAX;i++)printf("\t %d",tab[i]);

    return 0;
}

Programme 3:
#include <stdio.h>
#include <stdlib.h>
#define MAX 7
//Ne pas changer la valeur de MAX
int mat[2][MAX];

int main(){
    int *ptr,i,j,val,*ptrDebutMat;

    //tab bidim
    val=0;
    ptr=ptrDebutMat=(int*)mat;
    *ptr=(val+=10);
    ptr++;             *ptr=(val+=10);
    ptr=&mat[0][3];     ptr--; *ptr=(val+=10);
    ptr=ptrDebutMat+3;  *ptr=(val+=10);
    ptr=ptrDebutMat;    *(ptr+4)=(val+=10);
    ptr[5]=(val+=10);
    *(ptrDebutMat+6)=(val+=10);   //On est arrive au bord de la 1iere ligne ...
    *(ptrDebutMat+MAX)=(val+=10); //Mais ceci est permis. Why?
    for(j=8;j<2*MAX;j++)*(ptrDebutMat+j)=(val+=10);
    printf("\n Matrice :\n");
    for(i=0;i<2;i++){
        for(j=0;j<MAX;j++){
           printf("\t %4d",mat[i][j]);
        }
        printf("\n");
    }
    return 0;
}

Programme 4: Je n'ai pas eu le temps de l'ajouter. Executer puis comprendre comment il fait ce qu'il fait.
#include <stdio.h>
#include <stdlib.h>
void permut(int**,int**);
int x=1,y=5,*pt1=&x,*pt2=&y;
int main()
{
    printf("\nAvant permut : *pt1=%d et *pt2=%d",*pt1,*pt2);
    permut(&pt1,&pt2);
    printf("\nApres permut : *pt1=%d et *pt2=%d",*pt1,*pt2);
    return 0;
}
void permut(int **ptr1,int **ptr2){
 int *ptr;
 ptr=*ptr1;*ptr1=*ptr2;*ptr2=ptr;
}

 

No comments:

Post a Comment

Note: only a member of this blog may post a comment.