1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
#include <iostream>
using namespace std;
int dupliqueMot(int *nbPoss,char *retour[], char mot[], int *nbOcc){
int cpt=0;
int taille;
int resul=0;
while (mot[cpt]!='\0')// cette boucle calcul la place que prend la chaine que veut creer l'utilisateur
{ // c'est a dire la suite de mots.
cpt++;
}
taille=cpt*(*nbOcc);
if (taille<=30) { // si la suite est assez petite pour rentrer dans le tableau
*retour[0] = '\0';
for (int i=0; i<*nbOcc; i++) // on rentre dans la boucle for qui effectue la suite des mots.
{
strcat(*retour, mot);
}
return 0;
}
else { //si la suite est trop grande pour rentrer dans le tableau
do
{ // on rentre dans la boucle do while qui calcul le nombre d'occurence possible
resul=cpt*(*nbPoss); // que l'on peut mettre dans le tableau
nbPoss++;
}
while (resul<=30);
*retour[0] = '\0'; // le tableau retour est un tableau vide ou l'on va stocker la chaine.
for (int i=0; i<*(nbPoss-2); i++)
{
strcat(*retour, mot);
}
return 1;
}
}
int main(){
char resultat[30];
char MotVoulu[20];
int nombreVoulu=0;
int nombreObtenu=0;
int x;
printf("quelle mot voulez-vous dupliquer? : ");
gets(MotVoulu);
printf("combien d'occurences voulez-vous?:");
scanf("%ld", &nombreVoulu);
x=dupliqueMot(&nombreObtenu, &resultat[], MotVoulu[], &nombreVoulu);// x est egal a la valeur de retour de la fonction
if (x==0)
{
printf("resultat : %s\n ",resultat);
printf("on a %ld fois le mot %s \n", nombreVoulu, MotVoulu);
}
else
{
printf("resultat : %s\n ",resultat);
printf("on a seulement %ld fois le mot %s \n", nombreObtenu-2, MotVoulu);
}
system("PAUSE");
return 0;
} |
Partager