Skip to content
Extraits de code Groupes Projets
Valider 9e42200e rédigé par CharlyBVO's avatar CharlyBVO
Parcourir les fichiers

fix references aux codes src dans les sections langage C et fichiers

parent f69424fa
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 720 ajouts et 0 suppression
/***********************************************
* octal
*
* Exemple d'erreur avec les nombres en octal
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
///AAA
int i, j;
i = 65; // décimal
j = 065; // octal !!!
if (i == j)
printf("%d et %d sont égaux\n", i, j);
else
printf("%d et %d sont différents\n", i, j);
///BBB
return EXIT_SUCCESS;
}
/***********************************************
* perf.c
*
* Mesure de temps de calcul via gettimeofday
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
/* Return t2-t1 in microseconds */
long timeval_diff(struct timeval *t2, struct timeval *t1)
{
long diff = (t2->tv_usec + 1000000 * t2->tv_sec) - (t1->tv_usec + 1000000 * t1->tv_sec);
return (diff);
}
// n : number of iterations of the loop
void compute(int n) {
// long computation
double sum=0;
int i;
for(i=0;i<n;i++) {
sum=sum+i;
}
}
int main(int argc, char *argv[])
{
struct timeval tvStart, tvEnd;
int err;
int num; // number of operations for compute
if(argc!=2)
exit(EXIT_FAILURE);
else
num=atoi(argv[1]);
err=gettimeofday(&tvStart, NULL);
if(err!=0)
exit(EXIT_FAILURE);
// long computation
compute(num);
err=gettimeofday(&tvEnd, NULL);
if(err!=0)
exit(EXIT_FAILURE);
printf("Duration : %ld microseconds\n", timeval_diff(&tvEnd, &tvStart));
return(EXIT_SUCCESS);
}
/***********************************************
* ptr
*
* Programme d'exemple d'utilisation de pointeurs
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
///AAA
int i = 1252;
char str[] = "sinf1252";
char c = 'c';
printf("i vaut %d, occupe %ld bytes et est stocké à l'adresse : %p\n",
i, sizeof(i), &i);
printf("c vaut %c, occupe %ld bytes et est stocké à l'adresse : %p\n",
c, sizeof(c), &c);
printf("str contient \"%s\" et est stocké à partir de l'adresse : %p\n",
str, &str);
///BBB
return EXIT_SUCCESS;
}
i vaut 1252, occupe 4 bytes et est stocké à l'adresse : 0x7fff89f99cbc
c vaut c, occupe 1 bytes et est stocké à l'adresse : 0x7fff89f99caf
str contient "sinf1252" et est stocké à partir de l'adresse : 0x7fff89f99cb0
/***********************************************
* ptrchar
*
* Programme d'exemple d'utilisation de pointeurs
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
///AAA
char c='Z';
char str[]="sinf1252";
char *str_ptr=NULL;
int i;
str_ptr=&c;
printf("c vaut %c et est stocké à l'adresse : %p\n",c,&c);
printf("*str_ptr vaut %p et pointe vers %c\n",str_ptr,*(str_ptr));
str_ptr=str; // équivaut à str_ptr=&(str[0]);
printf("après str_ptr=str[];\n");
printf("*str_ptr vaut %p et pointe vers %c\n",str_ptr,*(str_ptr));
printf("Contenu du tableau\n");
for(i=0;i<strlen(str);i++) {
printf("str[%d]=%c et *(str_ptr+%d) contient %c\n",i,str[i],i,*(str_ptr+i));
}
///BBB
return(EXIT_SUCCESS);
}
/***********************************************
* ptrex.c
*
* Programme d'exemple d'utilisation de pointeurs
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
///AAA
int i = 1; // entier
int *ptr_i; // pointeur vers un entier
char str[] = "Unix";
char *s; // pointeur vers un char
ptr_i = &i;
printf("valeur de i : %d, valeur pointée par ptr_i : %d\n", i, *ptr_i);
*ptr_i = *ptr_i + 1252;
printf("valeur de i : %d, valeur pointée par ptr_i : %d\n", i, *ptr_i);
s = str;
for (i = 0; i < strlen(str); i++){
printf("valeur de str[%d] : %c, valeur pointée par *(s+%d) : %c\n",
i, str[i], i, *(s+i));
}
///BBB
return EXIT_SUCCESS;
}
valeur de i : 1, valeur pointée par ptr_i : 1
valeur de i : 1253, valeur pointée par ptr_i : 1253
valeur de str[0] : U, valeur pointée par *(s+0) : U
valeur de str[1] : n, valeur pointée par *(s+1) : n
valeur de str[2] : i, valeur pointée par *(s+2) : i
valeur de str[3] : x, valeur pointée par *(s+3) : x
/***********************************************
* random
*
* Utilisation de nombres aléatoires
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
///AAA
long int r;
int i;
int pair=0;
unsigned int seed=1252; // semence initiale
srandom(seed);
for(i=0;i<10000;i++) {
r=random();
if (r%2==0)
pair++;
}
printf("%d nombres pairs ont été générés\n",pair);
///BBB
return(EXIT_SUCCESS);
}
/***********************************************
* short
*
* Overflow sur les shorts
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
///AAA
short int i = 1;
unsigned short j = 1;
int n;
printf("\nPuissances de 5 en notation signée\n");
for (n = 1; n < 10; n++) {
i = i * 5;
printf("5^%d=%d\n", n, i);
}
printf("\nPuissances de 10 en notation non signée\n");
for (n = 1; n < 10; n++) {
j = j * 10;
printf("10^%d=%d\n", n, j);
}
///BBB
return EXIT_SUCCESS;
}
Puissances de 5 en notation signée
5^1=5
5^2=25
5^3=125
5^4=625
5^5=3125
5^6=15625
5^7=12589
5^8=-2591
5^9=-12955
Puissances de 10 en notation non signée
10^1=10
10^2=100
10^3=1000
10^4=10000
10^5=34464
10^6=16960
10^7=38528
10^8=57600
10^9=51712
/**********************************************
* sizeof
*
* Programme d'exemple d'utilisation de sizeof
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
///AAA
printf("Type\t\t\tTaille\n");
printf("\n");
printf("char\t\t\t%ld octet(s)\n",sizeof(char));
printf("unsigned char\t\t%ld octet(s)\n",sizeof(unsigned char));
printf("short\t\t\t%ld octet(s)\n",sizeof(short));
printf("unsigned short\t\t%ld octet(s)\n",sizeof(unsigned short));
printf("int\t\t\t%ld octet(s)\n",sizeof(int));
printf("unsigned int\t\t%ld octet(s)\n",sizeof(unsigned int));
printf("long\t\t\t%ld octet(s)\n",sizeof(long));
printf("unsigned long\t\t%ld octet(s)\n",sizeof(unsigned long));
printf("long long\t\t%ld octet(s)\n",sizeof(long long));
printf("unsigned long long\t%ld octet(s)\n",sizeof(unsigned long long));
printf("float\t\t\t%ld octet(s)\n",sizeof(float));
printf("double\t\t\t%ld octet(s)\n",sizeof(double));
printf("long double\t\t%ld octet(s)\n",sizeof(long double));
///BBB
return(EXIT_SUCCESS);
}
/**********************************************
* sizeofptr
*
* Programme d'exemple d'utilisation de sizeof
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("Type\t\t\tTaille\n");
printf("\n");
printf("char *\t\t\t%ld octet(s)\n",sizeof(char *));
printf("unsigned char *\t\t%ld octet(s)\n",sizeof(unsigned char *));
printf("short *\t\t\t%ld octet(s)\n",sizeof(short *));
printf("unsigned short *\t%ld octet(s)\n",sizeof(unsigned short *));
printf("int *\t\t\t%ld octet(s)\n",sizeof(int *));
printf("unsigned int *\t\t%ld octet(s)\n",sizeof(unsigned int *));
printf("long *\t\t\t%ld octet(s)\n",sizeof(long *));
printf("unsigned long *\t\t%ld octet(s)\n",sizeof(unsigned long *));
printf("long long *\t\t%ld octet(s)\n",sizeof(long long *));
printf("unsigned long long *\t%ld octet(s)\n",sizeof(unsigned long long *));
printf("float *\t\t\t%ld octet(s)\n",sizeof(float *));
printf("double *\t\t%ld octet(s)\n",sizeof(double *));
printf("long double *\t\t%ld octet(s)\n",sizeof(long double *));
///BBB
return(EXIT_SUCCESS);
}
/***********************************************
* strlen.c
*
* Initialisation de chaînes de caractères
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
///AAA
int length(char str[])
{
int i = 0;
while (str[i] != 0) {// '\0' et 0 sont égaux
i++;
}
return i;
}
///BBB
int main(int argc, char *argv[])
{
int i;
char name1[] = "str";
// char name2[] = "SINF1252";
printf("Longueur de name1 [%s] : %d\n", name1, length(name1));
for (i = 0; i < length(str); i++) {
printf("%c", name1[i]);
}
return EXIT_SUCCESS;
}
/***********************************************
* strlen.c
*
* Calcul de longueur de chaînes avec pointeurs
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
///AAA
int length(char *s)
{
int i = 0;
while (*(s+i) != '\0')
i++;
return i;
}
///BBB
int main(int argc, char *argv[])
{
int i;
char name1[] = "str";
// char name2[] = "SINF1252";
printf("Longueur de name1 [%s] : %d\n", name1, length(name1));
for (i = 0; i < 10; i++) {
printf("%c", name1[i]);
}
return EXIT_SUCCESS;
}
/***********************************************
* struct.c
*
* Programme d'exemple de structures
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
///AAA
// structure pour stocker une coordonnée 3D
struct coord {
int x;
int y;
int z;
};
struct coord point = {1, 2, 3};
struct coord p;
// structure pour stocker une fraction
struct fraction {
int numerator;
int denominator;
};
struct fraction demi = {1, 2};
struct fraction f;
// structure pour représenter un étudiant
struct student {
int matricule;
char prenom[20];
char nom[30];
};
struct student s = {1, "Linus", "Torvalds"};
///BBB
///EEE
struct fraction init(int num, int den)
{
struct fraction f;
f.numerator = num;
f.denominator = den;
return f;
}
int equal(struct fraction f1, struct fraction f2)
{
return ((f1.numerator == f2.numerator)
&& (f1.denominator == f2.denominator));
}
int equalptr(struct fraction *f1, struct fraction *f2)
{
return ((f1->numerator==f2->numerator)
&& (f1->denominator==f2->denominator));
}
void initptr(struct fraction *f, int num, int den)
{
f->numerator = num;
f->denominator = den;
}
///FFF
int main(int argc, char *argv[])
{
int c[3] = {0, 0, 0};
///CCC
point.x = 1;
point.y = 2;
point.z = 3;
///DDD
///GGG
struct fraction quart;
struct fraction tiers;
quart = init(1, 4);
initptr(&tiers, 1, 3);
printf("equal(tiers,quart)=%d\n", equal(tiers, quart));
printf("equalptr(&tiers,&quart)=%d\n", equalptr(&tiers, &quart));
///HHH
f.numerator=1;
f.denominator=4;
printf("%c\n",s.prenom[2]);
printf("sizeof int[3]=%ld, sizeof coord=%ld\n",sizeof(c),sizeof(struct coord));
printf("sizeof student : %ld\n",sizeof(s));
return(EXIT_SUCCESS);
}
/***********************************************
* structptr.c
*
* Programme d'exemple de pointeurs vers des
* structures
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
struct fraction {
int num;
int den;
};
///AAA
struct fraction demi, quart;
struct fraction *demi_ptr;
struct fraction *quart_ptr;
demi_ptr = &demi;
quart_ptr = &quart;
(*demi_ptr).num = 1;
(*demi_ptr).den = 2;
quart_ptr->num = 1;
quart_ptr->den = 4;
///BBB
return EXIT_SUCCESS;
}
/***********************************************
* struct.c
*
* Programme d'exemple de structures
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
///AAA
// structure pour stocker une coordonnée 3D
struct coord {
int x;
int y;
int z;
} ;
struct coord origin={1,2,3};
struct coord p;
// structure pour stocker une fraction
struct fraction {
double numerator;
double denominator;
};
struct fraction demi={1.0,2.0};
struct fraction f;
// structure pour représenter un étudiant
struct student {
int matricule;
char prenom[20];
char nom[30];
};
struct student s={1,"Linux","Torvalds"};
///BBB
///EEE
int equal(struct fraction f1, struct fraction f2) {
return ( (f1.numerator==f2.numerator) &&
(f1.denominator==f2.denominator) );
}
///FFF
int main(int argc, char *argv[]) {
int c[3]={0,0,0};
///CCC
origin.x=1;
origin.y=2;
origin.z=3;
///DDD
f.numerator=1;
f.denominator=4;
printf("%c\n",s.prenom[2]);
printf("sizeof int[3]=%ld, sizeof coord=%ld\n",sizeof(c),sizeof(struct coord));
printf("sizeof student : %ld\n",sizeof(s));
return(EXIT_SUCCESS);
}
/***********************************************
* toupper.c
*
* Conversion de caractères
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
///AAA
// conversion de minuscules en majuscules
int toUpper(char c) {
if (c >= 'a' && c <= 'z')
return c + ('A' - 'a');
else
return c;
}
///BBB
int main(int argc, char *argv[])
{
printf("%c\n",toUpper('g'));
printf("%c\n",toUpper('='));
printf("%c\n",toUpper('Z'));
printf("%c\n",toUpper('x'));
return EXIT_SUCCESS;
}
/***********************************************
* typedef.c
*
* Programme d'exemple d'utilisation de typedef
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
///EEE
typedef unsigned int u_int_t;
typedef unsigned long u_long_t;
///FFF
///CCC
typedef int * int_ptr;
typedef char * string;
///DDD
///AAA
// structure pour stocker une fraction
typedef struct fraction {
double numerator;
double denominator;
} Fraction ;
typedef int Entier;
int main(int argc, char *argv[])
{
Fraction demi = {1, 2};
Entier i = 2;
// ...
return EXIT_SUCCESS;
}
///BBB
/***********************************************
* xor.c
*
* Programme d'exemple d'encryptage avec XOR
*
***********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// affiche un message d'erreur
void usage(char *msg)
{
fprintf(stderr,"Usage : %s\n",msg);
exit(EXIT_FAILURE);
}
///AAA
int main(int argc, char* argv[])
{
if (argc != 2)
usage("ce programme prend une clé comme argument");
char *key = argv[1];
char c;
int i = 0;
while (((c = getchar()) != EOF) && (i < strlen(key))) {
putchar(c ^ *(key + i));
i++;
}
return EXIT_SUCCESS;
}
///BBB
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter