parent
29ce441b8f
commit
609652bc83
Binary file not shown.
@ -0,0 +1,70 @@
|
|||||||
|
#include "tp11.h"
|
||||||
|
|
||||||
|
void testExercice1()
|
||||||
|
{
|
||||||
|
int n = 4;
|
||||||
|
int result = nbSegments(n);
|
||||||
|
printf("Il y a %d segments\n", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
void testExercice2Nb()
|
||||||
|
{
|
||||||
|
int tab[10] = {0, 2, 3, 4, 5, 8, 2, 25, 0, 2}, tab2[10] = {1, 2, 3, 4, 5, 8, 2, 25, 0, 2};
|
||||||
|
int n = 10, result, val = 2;
|
||||||
|
result = sommeNentierT(tab, n);
|
||||||
|
printf("La somme des entiers est %d\n", result);
|
||||||
|
printf("====================================\n");
|
||||||
|
result = minValT(tab, n);
|
||||||
|
printf("La valeur minimale est %d\n", result);
|
||||||
|
printf("====================================\n");
|
||||||
|
result = nombreOccurencesT(tab, n, val);
|
||||||
|
printf("Le nombre d'occurences de %d est %d\n", val, result);
|
||||||
|
printf("====================================\n");
|
||||||
|
result = rechercheValT(tab, n, val);
|
||||||
|
if(result == 0)
|
||||||
|
printf("La valeur %d n'est pas dans le tableau\n", val);
|
||||||
|
else
|
||||||
|
printf("La valeur %d est dans le tableau\n", val);
|
||||||
|
printf("====================================\n");
|
||||||
|
result = recherchePlusProcheXT(tab, n, val);
|
||||||
|
printf("La valeur %d est la plus proche de %d, dans le tableau\n", result, val);
|
||||||
|
printf("====================================\n");
|
||||||
|
result = rechercheValMaxT(tab, n);
|
||||||
|
printf("La valeur maximale est %d\n", result);
|
||||||
|
printf("====================================\n");
|
||||||
|
result = compare2T(tab, tab2, n);
|
||||||
|
printf("Les tableaux sont %s\n", result ? "identiques" : "different");
|
||||||
|
printf("====================================\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void testExercice2Chaine()
|
||||||
|
{
|
||||||
|
char tab1[10]="bonjour", tab2[10]="aurevoir";
|
||||||
|
int n = 10, result;
|
||||||
|
char result2[10];
|
||||||
|
result = longueurChaine(tab1);
|
||||||
|
printf("La longueur de la chaine est %d\n", result);
|
||||||
|
printf("====================================\n");
|
||||||
|
result = copieChaine(tab1, tab2);
|
||||||
|
printf("La chaine copiee est %s\n", tab2);
|
||||||
|
printf("====================================\n");
|
||||||
|
result = concateneChaine(tab1, tab2, result2);
|
||||||
|
printf("La chaine concatenee est %s\n", result2);
|
||||||
|
printf("====================================\n");
|
||||||
|
result = compareChaine(tab1, tab2);
|
||||||
|
printf("Les chaines sont %s\n", result ? "identiques" : "different");
|
||||||
|
printf("====================================\n");
|
||||||
|
result = mirroirChaine(tab1, result2);
|
||||||
|
printf("La chaine mirroir est %s\n", result2);
|
||||||
|
printf("====================================\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
//testExercice1();
|
||||||
|
//testExercice2Nb();
|
||||||
|
testExercice2Chaine();
|
||||||
|
return 1;
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
#include "tp11.h"
|
||||||
|
|
||||||
|
/* Exercice 1 */
|
||||||
|
int nbSegments(int n)
|
||||||
|
{
|
||||||
|
if (n == 1)
|
||||||
|
return 0;
|
||||||
|
return (n-1) + nbSegments(n - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Exercice 2 */
|
||||||
|
|
||||||
|
int sommeNentierT(int tab[], int n)
|
||||||
|
{
|
||||||
|
if (n == 1)
|
||||||
|
return tab[0];
|
||||||
|
return tab[0] + sommeNentierT(tab+1, n-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int minValT(int tab[], int n)
|
||||||
|
{
|
||||||
|
int min;
|
||||||
|
if (n == 1)
|
||||||
|
return tab[0];
|
||||||
|
min = minValT(tab+1, n-1);
|
||||||
|
if (tab[0] < min)
|
||||||
|
return tab[0];
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
|
||||||
|
int nombreOccurencesT(int tab[], int n, int val)
|
||||||
|
{
|
||||||
|
if (n == 1)
|
||||||
|
return tab[0] == val;
|
||||||
|
return (tab[0] == val) + nombreOccurencesT(tab+1, n-1, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
int rechercheValT(int tab[], int n, int val)
|
||||||
|
{
|
||||||
|
if (n == 0)
|
||||||
|
return 0;
|
||||||
|
if(val == tab[n])
|
||||||
|
return 1;
|
||||||
|
return rechercheValT(tab, n-1, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
int recherchePlusProcheXT(int tab[], int n, int x)
|
||||||
|
{
|
||||||
|
int min;
|
||||||
|
if (n == 1)
|
||||||
|
return tab[0];
|
||||||
|
min = recherchePlusProcheXT(tab+1, n-1, x);
|
||||||
|
if (abs(tab[0] - x) < abs(min - x))
|
||||||
|
return tab[0];
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rechercheValMaxT(int tab[], int n)
|
||||||
|
{
|
||||||
|
int max;
|
||||||
|
if (n == 1)
|
||||||
|
return tab[0];
|
||||||
|
max = rechercheValMaxT(tab+1, n-1);
|
||||||
|
if (tab[0] > max)
|
||||||
|
return tab[0];
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
int compare2T(int tab1[], int tab2[], int n) //a revoir
|
||||||
|
{
|
||||||
|
if (n == 1)
|
||||||
|
return tab1[0] == tab2[0];
|
||||||
|
if (tab1[0] != tab2[0])
|
||||||
|
return 0;
|
||||||
|
return compare2T(tab1+1, tab2+1, n-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int longueurChaine(char chaine[])
|
||||||
|
{
|
||||||
|
if (chaine[0] == '\0')
|
||||||
|
return 0;
|
||||||
|
return 1 + longueurChaine(chaine+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int copieChaine(char chaine1[], char chaine2[])
|
||||||
|
{
|
||||||
|
if (chaine1[0] == '\0')
|
||||||
|
return 0;
|
||||||
|
chaine2[0] = chaine1[0];
|
||||||
|
return 1 + copieChaine(chaine1+1, chaine2+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int concateneChaine(char chaine1[], char chaine2[], char chaine3[])
|
||||||
|
{
|
||||||
|
if (chaine1[0] == '\0')
|
||||||
|
return copieChaine(chaine2, chaine3);
|
||||||
|
chaine3[0] = chaine1[0];
|
||||||
|
return 1 + concateneChaine(chaine1+1, chaine2, chaine3+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int compareChaine(char chaine1[], char chaine2[])
|
||||||
|
{
|
||||||
|
if (chaine1[0] == '\0' && chaine2[0] == '\0')
|
||||||
|
return 1;
|
||||||
|
if (chaine1[0] == chaine2[0])
|
||||||
|
return compareChaine(chaine1+1, chaine2+1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mirroirChaine(char chaine1[], char chaine2[])
|
||||||
|
{
|
||||||
|
if (chaine1[0] == '\0')
|
||||||
|
return 0;
|
||||||
|
chaine2[longueurChaine(chaine1)-1] = chaine1[0];
|
||||||
|
return 1 + mirroirChaine(chaine1+1, chaine2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Exercice 3 */
|
||||||
|
|
||||||
|
/* Pour vider n, il faut vider n-2, on remet les n-2 en vide les n-2 de ce n */
|
||||||
|
/* Pour remplir n, il faut remplir n-2, on remplis n-1 vider n-2 et on remplie n-1 */
|
@ -0,0 +1,18 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int nbSegments(int n);
|
||||||
|
int sommeNentierT(int tab[], int n);
|
||||||
|
int minValT(int tab[], int n);
|
||||||
|
int nombreOccurencesT(int tab[], int n, int val);
|
||||||
|
int rechercheValT(int tab[], int n, int val);
|
||||||
|
int recherchePlusProcheXT(int tab[], int n, int x);
|
||||||
|
int rechercheValMaxT(int tab[], int n);
|
||||||
|
int compare2T(int tab1[], int tab2[], int n);
|
||||||
|
int longueurChaine(char chaine[]);
|
||||||
|
int copieChaine(char chaine1[], char chaine2[]);
|
||||||
|
int concateneChaine(char chaine1[], char chaine2[], char chaine3[]);
|
||||||
|
int compareChaine(char chaine1[], char chaine2[]);
|
||||||
|
int mirroirChaine(char chaine1[], char chaine2[]);
|
||||||
|
|
Loading…
Reference in new issue