1- Différence entre l'opérateur * et l'opérateur &
L'opérateur * placer entre deux variable numériques permet de réaliser la multiplication de celle-ci, cependant si elle est placé entre une déclaration et une variable, alors elle définit un point vers le type de donnée créer.
exple : multiplication int a = 4, b = 5; int c = a*b;
Déclaration de pointeur int*a;
L'opérateur & permet de représenter l'adresse mémoire d'une variable (c'est la zone a laquelle sera stocké son contenue ou sa valeur)
exple : int a; scanf("%d",&a);
2- différence entre les déclarations int*pt et int val;
int*p est la declaration d'un pointeur pt;
int val est une déclaration d'une variable entière nommée val;
3- la valeur finale de val est : 10
4- l'instruction correcte est *pt=4; car pt est un pointeur.
1- Différence entre passage par valeur et passage par référence :
Le passage par référence signifie que les fonctions dites "du paramètre sera le même que les appelants' argument passé (pas la valeur, mais l'identité de la variable elle-même). Le passage par valeur signifie que les fonctions dites "du paramètre sera une copie de l'appelant' argument passé.
2- une fonction en langage c ne peut pas modifiée la valeur d’une variable passée par paramètre car elle travaille sur une copie de celle-ci.
3- Le passage d'un tableau en paramètre a une fonction se fait par référence c.-à-d. on passe le pointeur de tète du tableau.
4- Correction du code :
#include <stdio.h>
#define N 5
int* create_init(int size){
int *v ;
// on crée un pointeur en local et on lui alloué dynamiquement de la memoire
v = malloc(size*sizeof(int));
for(int i=0;i<size;i++) *(v+i)=0;
//on manipule ce tableau comme un pointeur
return v;//on retourne l'adresse memoire de ce pointeur
}
|
void triangle(int n){
if(n>0){
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
printf("*"); }
printf("\n"); }
}else{
printf("valeur entrée non reconnue\n"); }
}
|
Sortie Ecran :
#include <stdio.h>
#include <stdlib.h>
#define N 2
int main(){
int a[N][N],b[N][N];int size=0;
//lecture des données de la matrice A
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
printf("Entrer la valeur A[%d,%d]\n",i,j);
scanf("%d",&(a[i][j])); } }
//lecture des données de la matrice B
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
printf("Entrer la valeur B[%d,%d]\n",i,j);
scanf("%d",&(b[i][j])); } }
//determinons le nombre de coeficients egaux
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(a[i][j] == b[i][j]) size++; } }
printf("Il y'a %d coeficients egaux\n",size);
return 0;
}
|
1- fonction qui détermine si une chaine est une sous chaine d'une autre chaine
int sous_chaine(char*sc,char*chaine){
int bool = 0,i=0,j=0;
while(i < strlen(sc)){
if(j < strlen(chaine)){
if(*(chaine+j) == *(sc+i)){
j++;i++;
}else{
i++;j=0;
}
} else{
bool = 1;
break;
}
}
return bool;
}
|
2- fonction qui fusionne deux chaine de caractère
char* fusion2(char*chaine1, char*chaine2){
char* chaine;int j=0,k=0;
chaine = malloc((strlen(chaine1) + strlen(chaine2))*sizeof(char));
for(int i = 0;i < (strlen(chaine1) + strlen(chaine2));i++){
if(j< strlen(chaine1)){
*(chaine+i) = *(chaine1+j);
j++;
}else{ *(chaine+i) = *(chaine2+k);
k++; } }
return chaine;
}
|
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* plug_long_nom(){
char* nom=malloc(100*sizeof(char)),*nom1=malloc(100*sizeof(char));
printf("Entrez un nom\n");
scanf("%s",nom);
while(strcmp(nom1,"fin")){
printf("Entrez un autre nom\n");
scanf("%s",nom1);
if(strlen(nom) < strlen(nom1)){
strcpy(nom,nom1); }}
return nom ;}
int main(){
char* nom = plug_long_nom();
printf("Le plus long nom saisie est : %s\n",nom);
return 0;
}
|
‘’ La persévérance, c’est ce qui rend l’impossible possible, le possible probable et le probable réalisé. ‘’
Bonne chance pour la normale les amis.
Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk .