• Aucun résultat trouvé

do { printf("Entrer un nombre : &#34

N/A
N/A
Protected

Academic year: 2022

Partager "do { printf("Entrer un nombre : &#34"

Copied!
2
0
0

Texte intégral

(1)

Annee universitaire2006-2007

Serie de TD n o

5

Exerie 1

Consideronsle programmesuivant:

#inlude <stdio.h>

void fontion1(int) ;

int main()

{ int x=0, y=79 ;

fontion1(x) ;

if (y%x)

printf("Ce ne sont pas des multiples\n") ;

else

printf("Ce sont des multiples\n") ;

return 0 ;

}

void fontion1(int iArg)

{

do

{ printf("Entrer un nombre : ") ;

sanf("%d", &iArg) ;

} while ( (iArg<=2) || (iArg>12) ) ;

}

1. En utilisant la representation de la pile vue en ours, donner les etats suessifs de la pile

lorsquelesvaleurs saisiesau laviersont 29puis4.

2. Expliquerpourquoi leprogrammene fontionne pas.

3. Corriger de deux manieres dierentes la fontion fontion1 an que le programme puisse

fontionnerorretement.

Exerie 2

1. Donnerl'aÆhage provoque parle programmesuivant:

#inlude <stdio.h>

void ehange ( int, int) ;

int main()

{ int n=10, p=20, a=30 ;

printf("avant appel : %d %d\n", n, p) ;

ehange (n, p) ;

printf("apres appel : %d %d\n", n, p) ;

return 0 ;

}

void ehange ( int a, int b)

{ int n ;

printf("debut ehange : %d %d\n", a, b) ;

n = a ;

a = b ;

b = n ;

printf("fin ehange : %d %d\n", a, b) ;

}

2. Erireunefontionquiehangeles valeursentieres pointees pardeuxpointeursd'entier.

3. Erireunefontionquiehangeles adressesontenues dansdeux pointeursd'entier.

(2)

Un nombre premier est un entier stritement positif qui n'est divisible que par 1 et par lui-

m^eme.

Le rible d'Eratosthene est un proede algorithmique pour etablir la liste des nombres pre-

miers inferieursou egaux a un ertain entier donne n. On onsidere tout d'abord une liste L

representantlesnombresentiersde1an. Onproedealorsparetapessuessivesen\eliminant"

de L tousles multiplesde 2 (dierentsde 2),puistousles multiples de3 (dierentsde 3), de5

(dierents de5), et.

Le butde etexerieest d'erireunprogrammeCpermettantde mettreenoeuvreeproede.

Pour ela, on onsidere un tableau de n entiers,initialement tousegaux a 1. (On remarquera

que l'entieri orrespond a l'element d'indiei-1 dansle tableau.) Une etape d'elimination des

multiplesd'unentierk(voirl'exemplei-dessouspourl'evolutiondesvaleursdek)onsistealors

a aeter la valeur 0 aux elements du tableau orrespondant a des multiples de k (et qui sont

dierentsde k).

A lan desetapesd'elimination,seulsles nombres premiersorrespondronta

deselementsde valeur1 dansletableau.

Exemple : deroulement durible d'Eratosthene pourn=10 :

1 1 1 1 1 1 1 1 1 1

1 1 1 0 1 0 1 0 1 0

1 1 1 0 1 0 1 0 0 0

1 1 1 0 1 0 1 0 0 0

1 1 1 0 1 0 1 0 0 0

Chaque ligne i-dessus orrespond a l'evolution du tableau au ours des etapes d'elimination.

La premiere ligneorrespond a l'initialisation,la deuxiemea k =2 etla troisieme a k =3. La

quatrieme ligne orrespond a k = 5 qui est pluspetit nombre premier stritement plus grand

que3. Lepassagedek=3ak =5esteetueenremarquantque5estl'entierorrespondanta

lapositiondupremier1parmileselementsdutableaud'indieau moins3. Enn,lainquieme

ligneorrespond ak =7. On s'arr^ete alorsartous leselements d'indieau moins7 sont nuls.

1. Erireunefontionquiretourne unentierstritement superieura 1 saisiau lavier.

2. Erireunefontionquipermetd'initialisera1 tousles elements d'untableau d'entiers.

3. ErireunefontionMultipleDansTableau(int viTab[℄, int iN, int iK)quipermetd'aeter

lavaleur0 a tousleselements dutableauviTaborrespondanta desmultiples deiK strite-

ment plusgrandsqueiKetinferieursouegaux a iN.

4. Erire une fontion ProhainNombrePremier(int viTab[℄, int iN, int iP) permettant de

passerd'unnombrepremieraunombrepremiersuivant. Cettefontionretourneralenombre

premier (inferieur ou egal a iN) venant juste apres le nombre premier iP dans le tableau

viTab[℄,ou0 s'il n'yen a pas.

5. Erire une fontion Eratosthene(int viTab[℄, int iN) permettant de mettre en oeuvre le

rible d'Eratosthene. Cette fontion modiera les elements du tableau viTab de maniere a

n'avoir a lan de la fontionque les nombres premiers (entre 1 et iN) quiorrespondent a

deselements de valeur1 dansle tableau.

6. Erire une fontion AffiheNombrePremier(int iN) permettant d'aÆher tous les nombres

premiers omprisentre 1 et iN. Cette fontion utilisera(au moins) les fontions erites aux

questions2 et5.

7. ErireunprogrammeCpermettantdesaisiraulavierunnombreentierstritementsuperieur

Références

Documents relatifs

[r]

On peut aussi tronquer un nombre au dixième (ou au centième...) en lui enlevant tous les chiffres situés à droite du chiffre des dixièmes (ou des centièmes...). Arrondi à

Devoir Surveillé 3 - durée : 1 h 7 décembre 2010 Les documents, la calculatrice, et tout matériel électronique sont interdits.. Le soin, la précision et la qualité de la

Ce qu’il est amusant de constater, c’est que cette formule pour les 4k + 1 s’applique également au nombre premier 3 si ce n’est qu’il faut considérer celui-ci non pas comme un

On ne croit pas qu’il soit possible de faire un raisonnement par récurrence parce qu’un point solution pour m n’est pas obligatoirement solution pour m + 2 : il est difficile

Pour les plus courageux : un entier naturel quelconque peut-il être représenté par la différence de deux nombres puissants.. Solution par

Universit´e de Paris X Nanterre vendredi 13 janvier 2006 Licence MMIA deuxi`eme ann´ee.. enseignant

Pour savoir si on a trouvé au moins un diviseur, on doit ajouter une variable nb_div qui permet de compter combien de diviseurs, on a trouvé pour n.. Test d’arrêt :