Forum du groupe H
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Forum du groupe H

Forum d'entraide pour le groupe H de l'IUT informatique de Lannion.
 
AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
Cartes Pokémon : la prochaine extension ...
Voir le deal

 

 TP noté 2, sujet du groupe H2 comme base de travail pour le H1

Aller en bas 
4 participants
AuteurMessage
ezano
Admin
ezano


Messages : 59
Date d'inscription : 26/11/2009
Age : 34
Localisation : Lannion

TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Empty
MessageSujet: TP noté 2, sujet du groupe H2 comme base de travail pour le H1   TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Icon_minitimeJeu 14 Jan - 19:19

Salut, le groupe H2 a fait le TP noté mercredi, je me décide de poster le sujet ici, il n'est pas compliqué, et le cours est autorisé, mais c'est mieux de savoir le faire sans =)

En gros c'est des tableaux et des structures:

Exercice 1:

1) Faire un programme principal qui définit un tableau de N = 1000 entiers et l'initialise avec des valeurs aléatoires strictement infèrieures à N

2) Faire une procédure d'affichage du tableau précédent. Elle reçoit en paramètre le tableau de valeur à afficher par ligne, par exemple 20 valeurs qui seront affichées chacune sur 4 caractères

3) Faire une fonction de recherche d'un entier dans le tableau. La fonction reçoit en paramètre le tableau et le nombre à rechercher et retourne l'indice de la case correspondante si le nombre a été trouvé, -1 sinon.

4) Faire une procédure qui trie le tableau par ordre décroissant des valeurs.

5) Faire une fonction de recherche dichotomique d'un entier dans le tableau après qu'il a été trié.

6) Integrer au programme principale un menu proposant les procédures et fonctions précédentes.


Exercice 2:

Réaliser un programme permettant de doner le signe astrologique correspondant à une date de naissance.
Définir pour cela une constante symbolique pour le nombre de mois, égale à 12, puis une type structuré t_zodiaque comprennant trois champs:
-un entier pour le jour
-une chaine d'au moins 9 caractère pour le mois
-une chaine d'au moin 11 caractères pour le signe.

On utilisera aussi le tableau suivant:

Code:

const t_zodiaque zodiaque[12] = {
{23, "decembre", "sagittaire"},
{20, "janvier", "capricorne"},
{20, "fervrier", "verseau"},
{21, "mars", "poisson"},
{20, "avril", "bélier"},
{21, "mai", "taureau"},
{21, "juin", "gémeaux"},
{22, "juillet", "cancer"},
{23, "aout", "lion"},
{23, "septembre", "vierge"},
{23, "octobre", "balance"},
{22, "novembre", "scorpion"}
};

Puis écrire un programme principal qui demande à l'utilisateur un jour (controler que l'entier est bien entre 1 et 31) et un mois (chaine de caractères). Ce programme devra appelmler une fonction qui reçoit le jour et le mois et retourne l'indice de la case où se trouve le mois ou -1 si le mois n'existe pas dans le tableau.
Le programme affichera alors le signe correspondant ou un message d'erreur si le mois n'existe pas. Attention: si la date est supèrieure à celle indiquée par le mois, le signe est celui du mois suivant (le suivant du 12e est le premier).

Ex d'exécution:

date de naissance ?
jour: 42
jour: 14
mois: issure
Ce mois n'existe pas.

Date de naissance ?
jour: 29
mois: avril
votre signe: taureau


Voila, faites les si vous avez le temps, le fait de ne pas avoir de correction exact vous aidera pour demain et vous forcera à réflechir pour trouver une solution =)
Je doute qu'il y en ai mais si il y a des problèmes, posez vos questions on répondra comme on le pourra =).
Revenir en haut Aller en bas
https://forum-du-groupe-h.forumactif.com
Kage

Kage


Messages : 30
Date d'inscription : 26/11/2009
Age : 32
Localisation : Lesneven

TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Empty
MessageSujet: Re: TP noté 2, sujet du groupe H2 comme base de travail pour le H1   TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Icon_minitimeJeu 14 Jan - 20:27

Pour la recherche dichotomique, t'as pas un code type sous la main ?
Revenir en haut Aller en bas
Arkas

Arkas


Messages : 39
Date d'inscription : 27/11/2009
Localisation : Lannion

TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Empty
MessageSujet: Re: TP noté 2, sujet du groupe H2 comme base de travail pour le H1   TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Icon_minitimeJeu 14 Jan - 20:50

On considère un tableau de N valeurs, trié. On prend la case milieu X du tableau, et on compare sa valeur avec celle du chiffre recherché :

si elle est inférieure --> la première moitié du tableau est la bonne, si le chiffre recherché existe, alors il est forcément dans cette moitié--> on jarte la deuxième moitié du tableau, en définissant la case milieu X comme étant la nouvelle borne max de la zone de recherche

si elle est supérieure --> le chiffre se trouve donc dans la deuxième moitié, on jarte la première moitié, et pour ce faire, on définit la case X milieu comme étant la nouvelle borne min de la zone de recherche

on recalcule le milieu et ainsi de suite, la zone de recherche deviendra de plus en plus en petite puisque divisée par 2 à chaque relance de la boucle, si la borne max et la borne min se touchent, le terme recherché n'est pas dans le tableau

voilà pour le principe ( /!\ le principe de manière générale, ya un piège dans l'ex ), j'aimerais te donner le code, mais t'as pas eu cours aujourd'hui alors je me venge rabbit
Revenir en haut Aller en bas
ezano
Admin
ezano


Messages : 59
Date d'inscription : 26/11/2009
Age : 34
Localisation : Lannion

TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Empty
MessageSujet: Re: TP noté 2, sujet du groupe H2 comme base de travail pour le H1   TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Icon_minitimeJeu 14 Jan - 20:56

Citation :
voilà pour le principe, j'aimerais te donner le code, mais t'as pas eu cours aujourd'hui alors je me venge rabbit

^^ pas mal =)

Pour la recherche dichotomique j'ai pas pris la correction, j'ai pas eu le temps de m'attarder sur le problème dans le TP.
J'ai trouvé des exemples de codes sur internet, pas mal en C, mais comme t'as pas eu cours ben, jte le donne en assembleur =)

Code:

recherche:

                    PUSH(LP) |on sauvegarde l'adresse de retour sur la pile
                    PUSH(BP) |on sauvegarde le cadre de pile precedent
                    MOVE(SP,BP) |on initialise le cadre de pile courant
                    PUSH(r1) |sauvegarde du registre r1
                    PUSH(r2) |sauvegarde du registre r2
                    PUSH(r3)
                    PUSH(r4)
                    PUSH(r5)
                    PUSH(r6)
                    PUSH(r7)
                    PUSH(r8) |sauvegarde du registre DI
                    PUSH(r9) |sauvegarde du registre SI

                    LD(BP,-12,r1) |chargement de la taille du tableau dans r1
                    LD(BP,-16,r9) |chargement de l'adresse du 1er elt du tableau dans SI
                    LD(BP,-20,r4) |on charge l'element rechercher
                    MULC(r1,4,r1) | Calcul de l'adresse suivant de dernier element du tableau
                    SUB(r1,4,r1)  |
                    ADD(r9,r1,r8) | Placement de cette adresse dans DI


bsearch_end :
                    CMPLT(r8,r9,r2) |si DI<SI, r2=1
                    BNE(r2,boucle1) |branchement a boucle1 si r2!=0
                 
                    LD(BP,-12,r1) |chargement de la taille du tableau dans r1
                    SHRC(r1,1,r1) |on divise le contenu de r1 par 2
                    MOVE(r1,r7)    |transfert de r1 dans r7
                    MULC(r7,4,r7) |on multiplie par 4
                    ADD(r9,r7,r7) |on obtient l'adresse du milieu du tableau
                    LD(r7,0,r3)  |on charge le contenu du milieu du tableau
                    CMPEQ(r3,r4,r5) | on compare le milieu du tableau a l'element, si r3=r4,alors r5=1
                    BNE(r5,boucle2)
                    CMPLT(r4,r3,r6) |si r4<r3, r6=1
                    BNE(r6,boucle3) |branchement a boucle3 si r6!=0
                    ADDC(r7,4,r7)  | l'element suivant devient le milieu du tableau
                    PUSH(r4) |sauvegarde de l'elt recherché
                    PUSH(r7) |sauvegarde de l'adresse du milieu du tableau qui devient le 1er elt du tableau
                    PUSH(r1) |sauvegarde de la taille du tableau
                    BR(recherche,LP) |nouvel appel de la fonction recherche
                    DEALLOCATE(3)
boucle1: 


                    SUB(0,1,r0) |on retourne -1
                    POP(r1)
                    POP(r2)
                    POP(r3)
                    POP(r4)
                    POP(r5)
                    POP(r6)
                    POP(r7)
                    POP(r8)
                    POP(r9)
                    MOVE(BP,SP)
                    POP(BP)
                    POP(LP)
                    JMP(LP,r31)
boucle2:
                    SUB(r7,r9,r3) |difference entre l'adresse du milieu du tableau et l'adresse du tableau
                    DIVC(r3,4,r3) |on divise par 4
                    MOVE(r3,r0)
                    POP(r1)
                    POP(r2)
                    POP(r3)
                    POP(r4)
                    POP(r5)
                    POP(r6)
                    POP(r7)
                    POP(r8)
                    POP(r9)
                    MOVE(BP,SP)
                    POP(BP)
                    POP(LP)
                    JMP(LP,r31)


boucle3:
                   
       
                    PUSH(r4) |sauvegarde de l'elt recherché
                    PUSH(r9) |sauvegarde de l'adresse du 1er elt du tableau
                    PUSH(r1) |sauvegarde de la taille du tableau
                    BR(recherche,LP) |nouvel appel de la fonction recherche
                    DEALLOCATE(3)

Bonne chance, je sais pas si ça fonctionne =)
Revenir en haut Aller en bas
https://forum-du-groupe-h.forumactif.com
Kage

Kage


Messages : 30
Date d'inscription : 26/11/2009
Age : 32
Localisation : Lesneven

TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Empty
MessageSujet: Re: TP noté 2, sujet du groupe H2 comme base de travail pour le H1   TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Icon_minitimeJeu 14 Jan - 22:17

Ouaaah merci les mecs, vous m'aidez trop, merci Ezano pour le code assembleur, je vais me faire un p'tit prog assembleur qui gère le tri d'un tableau ce soir tiens =D lol!

Aujourd'hui j'ai dormis jusqu'à 12h, c'était bien les cours ? *vengeance*
Revenir en haut Aller en bas
Gautier

Gautier


Messages : 65
Date d'inscription : 27/11/2009
Localisation : Lannion

TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Empty
MessageSujet: Re: TP noté 2, sujet du groupe H2 comme base de travail pour le H1   TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Icon_minitimeSam 16 Jan - 2:19

Et votre TP d'Algo c'était bien? afro
Revenir en haut Aller en bas
Kage

Kage


Messages : 30
Date d'inscription : 26/11/2009
Age : 32
Localisation : Lesneven

TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Empty
MessageSujet: Re: TP noté 2, sujet du groupe H2 comme base de travail pour le H1   TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Icon_minitimeSam 16 Jan - 2:34

Pas vraiment mec !

en fait, le truc c'était de comprendre l'énoncé, y avait pas mal de structures et de tableaux imbriqués les uns aux autres. ça m'a pas trop pris de temps, mais en la fait la plus grosse difficulté c'était de finir le tp dans les temps, ça c'était infaisable.

En plus on a eu a manipuler les fichiers pour gérer notre répertoire téléphonique, et j'ai même du utiliser des fonctions qu'on a malheureusement pas vues en cours (fgets, fprintf, etc).

Donc voila, en gros il y en a qui on ni compris ni eu le temps de comprendre, moi j'ai trouvé ça plutôt facile mais beaucoup trop long --' 2h de plus et c'était niquel ^^
Revenir en haut Aller en bas
ezano
Admin
ezano


Messages : 59
Date d'inscription : 26/11/2009
Age : 34
Localisation : Lannion

TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Empty
MessageSujet: Re: TP noté 2, sujet du groupe H2 comme base de travail pour le H1   TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Icon_minitimeSam 16 Jan - 3:12

Franchement je comprend pas comment notre prof de TP qui est un bon prof nous a pondu un truc aussi simple, et votre prof vous a pondu un truc beaucoup trop long, enfin je suis curieux de voir le sujet pour voir ce que j'aurais pu faire en 2h Wink

Les structures imbriqués dans des tableaux etc ça pose pas de problème particulier si on comprend vite, et la gestion des fichiers c'est toujours la même choses, seulement avec les fonction qu'on utilise en cours je pense que ça peut se compliquer, Yohan a raison de préférer l'usage de fgets, fprintf, fscanf, fputs etc,

Go ici pour plus d'info:
http://www.siteduzero.com/tutoriel-3-14052-lire-et-ecrire-dans-des-fichiers.html

Les fonctions les plus simples à utiliser, sont fgets pour la lecture et fprintf pour l'ecriture, lisez ce chapitre, vous verrez la différence avec fread et fwrite. =)
Revenir en haut Aller en bas
https://forum-du-groupe-h.forumactif.com
Arkas

Arkas


Messages : 39
Date d'inscription : 27/11/2009
Localisation : Lannion

TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Empty
MessageSujet: Re: TP noté 2, sujet du groupe H2 comme base de travail pour le H1   TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Icon_minitimeSam 16 Jan - 17:34

Vous avez été interrogés sur les fichiers ? :/

Ouh le coup de pute !
Revenir en haut Aller en bas
Contenu sponsorisé





TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Empty
MessageSujet: Re: TP noté 2, sujet du groupe H2 comme base de travail pour le H1   TP noté 2, sujet du groupe H2 comme base de travail pour le H1 Icon_minitime

Revenir en haut Aller en bas
 
TP noté 2, sujet du groupe H2 comme base de travail pour le H1
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Des linuxiens dans le groupe H
» Cours reseau pour pas mal de temps
» Regles à respecter applicable pour tous les sujets.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum du groupe H :: Unité d'enseignement 1 :: Algorithmie-
Sauter vers: