Rechercher : dans
Par :

Exo algorithme pour correction s'il vous plai

Dernière réponse le 26 mar 2008 à 01:58:32 bansan, le 10 mar 2008 à 19:43:14 
 Signaler ce message aux modérateurs

Bonjour,
Est ce que quelqu'un peut m'aider sur ces 2 exo, je les ai commencé mais je ne sais pas comment continuer...en tout cas pour le dernier..merci

Exercice 10 - Nombre de voyelles
Ecrire un algorithme dont le role est de compter (et d'afficher) le nombre de voyelles (accentuees et non accentuees) presentes dans une chaine de caracteres saisie au clavier par l'utilisateur.

10) Nombre de voyelle

Variables
lettre, maj : caractères
i, j, k : entiers
chaine, chaine_2 : chaine de caractère

Début

Afficher (« Saisir une chaine »)
Saisir (chaine)
l<--LONGUEUR (chaine)
chaine_2<--« »
Pour i de 1 à l
lettre<--sschaine(chaine,l,1)
Si lettre= « a » ou lettre = « e»ou lettre = « i » ou lettre = « o » ou lettre = « u» ou
lettre= « A » ou lettre = « E»ou lettre = « I » ou lettre = « O » ou lettre = « U»

chaine_2<--chaine_2+a
FinSi
FinPour
Afficher (LONGUEUR chaine_2)
Fin


Exercice 11 - Chaine representant une grandeur numèrique entière
Ecrire un algorithme dont le role est de permettre a l'utilisateur de saisir tine chaine de caracteres, puis de verifier si la chaine de caracteres contient uniquement des chiffres precedes ou non d'un signe negatif ou positif (si le chaine respecte ce format. l'algorithme dolt convertir cette chaine de caracteres en entier et afficher le resuitat de 0 conversion).

(Je n'ai pas encore declaré les variables...)

Debut
Afficher(« Saisir une chaine »)
Saisir(chaine)
l<--LONGUEUR(chaine)
Pour i de 1 à l
a<-- sschaine(chaine,l,1)
Si a = « + » Alors

Convert_num<--CVNOMBRE(chaine)

Configuration: Windows XP
Firefox 2.0.0.12

Meilleures réponses pour « exo algorithme pour correction s'il vous plai » dans :
Correcteurs d'orthographe gratuits VoirCorrecteur orthographique intégré aux logiciels de traitement de texte Correcteurs d'orthographe gratuits sur internet Les correcteurs orthographiques existent sur plusieurs supports : soit intégré à un traitement de texte (Word, Open...
Activer le correcteur d'orthographe VoirActiver le correcteur d'orthographe De nombreux utilisateurs peuvent avoir des petits soucis d'orthographe sur les forums, sites web, etc. Je vais donc vous montrer comment activer le correcteur d'orthographe sous Mozilla Firefox.   Ouvrez...
Introduction à l'algorithmique VoirNotion d'algorithme La mise au point d'un programme informatique se fait en plusieurs étapes. Il s'agit de fournir la solution à un problème, la première étape consiste donc à analyser le problème, c'est-à-dire en cerner les limites et le mettre...

1

amigo, le 10 mar 2008 à 22:26:24

Bonjour,

Exercice 11:

Dans cet exercice je n'ai pas utilisé la boucle POUR ... A ... FAIRE mais la boucle REPETER ... JUSQUA_CE_QUE
En effet, pas besoin de tester tous les caractères, il suffit qu'un seul soit mauvais pour que toute la chaine soit mauvaise.
J'utilise deux boucles imbriquées

La premiere boucle verifie chaque caractère de chaine , si un seul est mauvais tout est mauvais
La seconde boucle compare chaque caractère de chaine à chaque caractère de ChaineNum
S'il y a un signe + ou - il doit etre le premier caractère de chaine

Variables
i, j , ok , Convert_num , l1 , l2 : entiers   l'entier ok sert de signal : ok=0 pas bon, ok=1 c'est bon
a , b , chaine, ChaineNum : chaine de caractère  a et b sont des chaines parce que tu utilises sschaine()

DEBUT
ChaineNum<-- "0123456789"  ChaineNum contient tout les caractères valides.
l1<--LONGUEUR(ChaineNum)
Afficher("Saisir une chaine ")
Saisir(chaine)
l2<--LONGUEUR(chaine)
i=0
Repeter
   i=i+1
   a<--sschaine(chaine,i,1)
   j=0
   faire
      j=j+1
      b<--sschaine(chaineNum,j,1)
      si a=b alors ok<--1
      sinon si ((a="+" ou a="-") et i=1) alors ok<--1
      sinon ok<--0
      fin si
   Jusqua_Ce_Que ok=1 ou j=l1  si ok=1 le caractère est valide , on sort de la boucle , on verifie le suivant
Jusqua_Ce_Que ok=0 ou i=l2     si ok=0 caractère invalide, chaine invalide, on sort de la boucle
si ok=0 alors
    afficher(a," n'est pas un chiffre")
sinon
    Convert_num<--CVNOMBRE(chaine)
    afficher("chaine valide")
    afficher(Convert_num)
finsi
FIN

Répondre à amigo

2

bansan, le 10 mar 2008 à 23:33:59

Merci
Interessant avec la boucle repeter...
Je m'en souviendrais pour que mes lignes soient plus siimples
Merci

Répondre à bansan

3

bansan, le 10 mar 2008 à 23:48:16

Pardon , désolé de revenir sur cet exo,
il y a des lignes que je ne comprends pas:

......
i=i+1
a<--sschaine(chaine,i,1)
j=0
faire
j=j+1
b<--sschaine(chaineNum,j,1)
si a=b alors ok<--1
sinon si ((a="+" ou a="-") et i=1) alors ok<--1
sinon ok<--0
fin si
.......
On repete i=i+1,
a sesigne la sous chaine a chaque boucle
Pareil pour j
et b represente la sous chaine a chaque boucle
Mais par contre "Si a=b" n'est pas possible...comment est ce que a pourrait etre egale a b???

imaginons que l'utilisateur saisit: 4512+6583, sachant que sela represnete la chaine et donc chaque sous schaine de A et que 0123456789 reprensente chaineNum et chaque souschaine de b, la probabilité pour trouver a=b..est minime...

L4autre chose que je ne comprends pas c'est pourquoi "..si((........ et i=1) c'est le i=1 que je ne comprends pas....
Merci

Répondre à bansan

4

amigo, le 11 mar 2008 à 10:37:37

Bonjour,

Je te préviens, l'explication va etre assez longue.

D'abord une rectification, j'ai ecrit Faire mais il fallait ecrire Repeter pour rester cohérent

Pour expliquer on va prendre ton exemple: chaine<-"4512+6583" : chaineNum<-"0123456789"

....
i=0 ;index de position dans chaine, initialisé à 0
Repeter
   i=i+1 ;a chaque tour on avance de 1, i varie de 1 à L2 (longueur de chaine)
   a<--sschaine(chaine,i,1) ; a prend la valeur du caractère pointé par i
                                      sschaine(chaine,i,1) veut dire que a prend la valeur de chaine à partir de la position i
                                      sur une longueur de 1 caractère
   j=0 ;index de position dans chaineNum, initialisé à 0
   Repeter
      j=j+1 ;a chaque tour on avance de 1, j varie de 1 à L1 (longueur de chaineNum)
      b<--sschaine(chaineNum,j,1) ;b prend la valeur du caractère pointé par j

ici commence la comparaison
pour i=1 a="4"
pour j=1 b="0"
si a=b ;Faux on regarde deuxième condition
sinon si ((a="+" ou a="-") et i=1) ;Faux donc condition par défaut
sinon ok<--0 ;les deux premières conditions sont fausses, on applique ce cas.

Jusqua_Ce_Que ok=1 ou j=L1 ; ok=0 et j=1, la codition de sortie de boucle est fausse
                             donc on refait un tour

j=j+1 ; j=2
a toujours egale 4 (a="4")
b="1"
on compare a et b ; c'est pareil que ci-dessus, on refait un tour

j=j+1 jusqu'a j=5
a toujours egale 4 (a="4")
b="4"
si a=b ; Vrai alors ok<- 1; condition satisfaite, on va à fin si

Jusqua_Ce_Que ok=1 ou j=L1 ; ok=1 et j=5, la condition de sotie de boucle est vraie, on sort de la boucle
Jusqua_Ce_Que ok=0 ou i=L2 ; ok=1 et i=1, a condition de sotie de boucle est fausse donc on refait un tour
i=i+1
a="5"
j=0 ;on remet à 0 le pointeur de caractère de chaineNum et on recommence 
Repeter
   j=j+1 ;   j=1 -> b="0" -> comparer a?=b etc...

Maintenant pour i=5 -> a="+"    j=1 -> b="0"
a ?= b faux
((a ?= "+" ou a ?= "-") et i ?= 1)) faux puisque i>1
alors ok<-0 ;  on refait un tour j=j+1 etc..
mais les conditions 1 et 2 seront toujours fausses car "+" et "-" ne sont pas dans chaineNum et i>1,
ok sera toujours à 0 pour i=5
alors quand arrive j=10 (L1)
Jusqua_Ce_Que ok=1 ou j=L1 est Vrai (l1=10) ; sortie de boucle
Jusqua_Ce_Que ok=0 ou i=L2 est Vrai (ok=0) ; sortie de boucle

on est sorti des deux boucles, on enchaine le programme
si ok=0 alors
    afficher(a," n'est pas un chiffre"); VRAI puisque ok=0
sinon
    Convert_num<--CVNOMBRE(chaine)
    afficher("chaine valide")
    afficher(Convert_num)
finsi
FIN

Bon, je sais, ça fait un peu plat de nouilles, mais des qu'on fait des boucles imbriquées ça se complique un peu.

Ce qu'il faut retenir:
-la boucle Repeter ... Jusqua_Ce_Que(condition) tourne jusqu'a ce que condition soit Vraie
(ou tant que condition est fausse).
-le test SI ... SINON SI .... SINON ... FINSI se fait dans l'ordre ou on l'ecrit, des qu'un test est vrai on va à FINSI
si auncun test n'est vrai on applique la valeur par défaut SINON.

Fais le test avec des petites chaines, "10", "-1", "1-", "0A"
Sur un papier tu mets tes variables i= , j= , ok= .... que tu mets à jour
à chaque changement en suivant pas a pas le deroulement du programme.

Si ça coince encore, fait moi signe, Salut.

Répondre à amigo

5

bansan, le 11 mar 2008 à 12:57:20

Bonjour,
J'ai donc compris que la boucle a l'interieur de la boucle se répete jusqu'a la fin de chaque carractere de la chaine pour ensuite refaire une boucle de la grande boucle et puis repartir pour faire x petites boucles...
JE comprends mieux...
C'est interessant...
Quelque chose que je devrais retenir

Mais pour le "Si a=b "ET i=1...euh...je ne vois pas pkoi et i=1...

Répondre à bansan

6

amigo, le 11 mar 2008 à 13:16:05

Content que tu profites de la leçon

sinon si ((a="+" ou a="-") et i=1) alors ok<--1

i=1 parce le signe "+" ou "-" n'est valable que s'il est en première position dans chaine, donc pour i=1, sinon ça ne veut plus rien dire, "-1" c'est bon, "1-" c'est incorrect .

Répondre à amigo

7

bigupblg, le 11 mar 2008 à 19:03:15

Bonjour j'aimerais que l'on m'aide pour mon algorithme je n'y arrive pas aidez moi svp

voici l'enoncé:

Le professeur de gestion de 1ere stg 1 souhaite calculer la moyenne de ses eleves au second trimestre en leur ajoutant un bonus de 0.5 point sur la moyenne globale. Si la moyenne du second trimestre a augmenté de +5% par rapport au 1er trimestre, la moyenne sera augmenté d'un demi point sinon le programme affichera le résultat suivant:"poursuivez vos efforts". Il ya 3 notes au second trimestre toutes affectées du coefficient 1.
Vous calculerez la moyenne en affichant le résultat sous la forme:
"l'eleve"; nom,prénom, "a une moyenne de ", moyenne.


meci d'avance

Répondre à bigupblg

8

 niza, le 26 mar 2008 à 01:58:32
  • +1

Bsr,
svp aidez moi à trouvé la solution de ce prolème: écricre un algorithe qui permet d'écrire un nom quelquonque en étoile. je ne qsais plus mème la mèthode à suivre pour le résoudre.
merci d'avance.

Répondre à niza