ajout du tp11 d'algo

master
antoine.perederii 3 years ago
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…
Cancel
Save