Vous en pensez quoi?

Fermé
widi Messages postés 34 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 16 décembre 2006 - 6 déc. 2006 à 14:20
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 8 déc. 2006 à 16:57
Bonjour tout le monde j'ai fait un algorithme pour un programme et je voudrais savoir ce que vous en pensez je vous donne l'algo et le programme:
algo:
1/ Description du résultat.

Afficher une zone rectangulaire dont la hauteur et la largeur est donnée par l’utilisateur. A l’intérieur de cette zone rectangulaire sera afficher un disque de centre, de rayon et de motif donnés.

2/ Idée de l’algorithme.

- Afficher la première largeur de la zone rectangulaire.
- Afficher les débuts de ligne
- Afficher le disque à l’endroit choisit par l’utilisateur
- Afficher les fins de ligne
- Afficher la deuxième largeur de la zone rectangulaire.

3/ Lexique local des variables.

colonne (entier) Intermédiaire (???)
ligne (entier) Intermédiaire (???)
longueur (entier) donnée
largeur (entier) donnée
abscisse (reel) donnée
ordonnée (réel) donnée
rayon (réel) donnée
motif (????) donnée

4/ Algorithme

Faire
Écrire « Entrez la largeur positive et inferieur à 80 de la zone d'affichage : »
Largeur affecté de Lire
Tant que 0<largeur<80
Ftant que

Faire
Ecrire « Entrez la longueur positive et inférieur a 60 de la zone d'affichage : »
longueur affecté de Lire
Tant que 0<longueur<60
Ftant que

Ecrire « Entrez l'abscisse du centre du cercle : »
Abscisse affecté de Lire
Ecrire « Entrez l'ordonnée du centre du cercle : »
ordonnée affecté de Lire

Faire
Ecrire « Entrez le rayon positif du cercle : »
rayon affecté de lire
Tant que rayon<0
Ftant que

Faire
Ecrire « Entrez le motif du cercle sauf ('+','-','|',' ') : »
motif affecté de Lire
Tant que motif = « + », motif = « - », motif = « | », motif = « »,
Ftant que

Ecrire « + »
Pour colonne de 1 à inférieur à la largeur
Ecrire « - »
Fpour
Écrire « + »
Ecrire « \n »

Pour ligne de 0 à inférieur à la longueur
Ecrire « | »
Pour colonne de 0 à inférieur à largeur
Si racine carré ((ordonnée-ligne)(ordonnée-colonne)+(abscisse-ligne)(abscisse-colonne))
Ecrire motif
Sinon
Ecrire « »
Fsi
Fpour
Ecrire « | »
Ecrire « \n »
Fpour
Pour colonne de 1 à inférieur ou égale à largeur
Ecrire « - »
Fpour
Ecrire « + »
Ecrire « \n »

Le programme:

#include <iostream>
#include <cmath>
using namespace std;
main (){


int colonne, ligne,longueur, largeur;
float abscisse,ordonnee,rayon;
char motif;

do
{
cout << "Entrez la largeur positive et inférieur à 80 de la zone d'affichage : "<<endl;
cin >> largeur;
}
while(largeur<0 || largeur>80);
do
{
cout << "Entrez la longueur positive et inférieur à 60 de la zone d'affichage : "<<endl;
cin >> longueur;
}
while(longueur<0 || longueur>60);
cout << "Entrez l'abscisse du centre du cercle : "<<endl;
cin >> abscisse;
cout << "Entrez l'ordonnée du centre du cercle : "<<endl;
cin >> ordonnee;
do
{
cout << "Entrez le rayon positif du cercle : "<<endl;
cin >> rayon;
}
while(rayon<0);
do
{
cout << "Entrez le motif du cercle sauf ('+','-','|',' ') : " << endl;
cin >> motif;
}
while(motif=='+' || motif=='-' || motif=='|' || motif==' ');

cout << '+';
for(colonne=1;colonne<=largeur;colonne++)
{
cout << '-';
}

cout << '+';
cout << endl;
for(ligne=0;ligne<longueur;ligne++)
{
cout << '|';
for(colonne=0;colonne<largeur;colonne++)
{
if(sqrt((ordonnee-ligne)*(ordonnee-ligne)+(abscisse-colonne)*(abscisse-colonne))<=rayon)
{
cout << motif;
}
else
{
cout << ' ';
}
}
cout << '|' << endl;
}
cout << '+';
for(colonne=1;colonne<=largeur;colonne++)
{
cout << '-';
}

cout << '+';
cout << endl;


}

Sinon j'ai aussi un problème pour le char motif je ne sais pas comment le définir dans mon lexique des variables.
Les endrois ou j'ai mis des ??? c que je suis pas sur de moi.

Merci de vos réponses
Ne faites pas attention à la mise en forme
Repondez moi svp je doit le rendre pour vendredi

4 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
6 déc. 2006 à 15:45
Ca me semble plutot correct. Apres faut voir la facon dont on te l'a enseigné et ton prof.

Question perso : tu es dans quel établissement, IUT ? Quelle ville ?

~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic
et ya pas de bôg môsieu ! ~
0
widi Messages postés 34 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 16 décembre 2006
7 déc. 2006 à 15:12
Ben moi jui a Belfort. Et toi t'es ou?

Pour mes tit pb:

colonne et ligne on peut considerer ça comme des intermediaire non??
Et pour le programme je pourrais mettre koi comme commentaire pour ma formule, pour expliquer un peu ce que je fait.
Merci de vos réponses
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 déc. 2006 à 15:45
lool

J'en étais sur, rien qu'à la facon dont tu dois faire l'algo ^^
J'ai été aussi à Belfort, je viens de finir ma licence cette année là bas, et j'ai fait l'IUT.
0
widi Messages postés 34 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 16 décembre 2006 > kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
7 déc. 2006 à 16:55
ah ben c parfait alors tu peu me dire si mon algo va plaire a Mr Contassot????
Tu pense kil faut que je divise mon algo (1er partie creer le rectangle, 2ème partie creer le disque) ou comme ça c bon????
Et pour mes intermediaire c bon, c bien des intermediaire et pas otre chose????
Merci bcp de repondre assez vite je le redonne demain et j'aimerais avoir une bonne notes!!!!
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > widi Messages postés 34 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 16 décembre 2006
7 déc. 2006 à 17:14
Le truc pour les algo en fait, c'est les présenter avec un plan, comme il a du te montrer certainement une fois. Et s'il ne l'a pas fait, c'est simplement pour voir votre facon de penser et de résonner.

Normalement s'il vous a déjà montrer un algo de projet, ca doit se présenter sous cette forme :

1 : Enoncé
2 : Buts
3 : Idée de l'algo
4 : Algo
4.1 Partie 1
4.1.1
4.1.2
...
4.2 Partie 2

Tout se fait en fonction de l'idée de l'ago au départ. Celle-ci doit etre tres simple et résumer le fonctionnement global du projet. Dans ton cas c'est relativement simple puisque le traitement du projet ne nécessite pas beaucoup de boucle, d'appel, etc.

En gros pour ton projet, tu aurais une idée comme suis :
- L'utilisateur entre les données
- Affichage du rectangle

Puis tu dévelloppe ton algo à partir de ca de facon dégressive :

Partie 1 : Entrée des données par l'utilisateur
lexique local des variables :
....
algo :
demander à l'utilisateur d'entrer une valeur au clavier pour la longueur
longueur <-- l'utilisateur entre une valeur au clavier
...

Partie 2 : Afficher le rectangle
Ici tu fais un bref descriptif énoncant que cette partie peut se subdivisée en deux grandes partie : les calculs et l'affichage

(puis tu écris un algo générale)
lexique local des variables :
...
algo :
calculerRectangle()
afficherRectangle()

Sous-partie 1 : Fonction calculerRectangle
.... blabla et tu recommence, toujours de facon progressive.
Sous-partie 2 :
... idem.



Bref, voilà un résumé de la méthode à appliquer pour cet IUT, et je pense qu'elle est bonne, elle permet de ne rien oublier (en tout cas généralement on n'oublie rien en faisant ainsi, c'est mon avis apres...)

Pour ce qui est de ton devoir pour demain, laisse comme tu as fais pour l'instant, ca ne sert à rien de vouloir tout refaire pour le lendemain, tu risque de faire des erreurs et de rendre un truc plus pourri :D (conseil d'expert en la matière xD)

Bonne chance et t'inquiète pas trop va... c'est que le début !

* s'en va en ricannant *
0
widi Messages postés 34 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 16 décembre 2006 > widi Messages postés 34 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 16 décembre 2006
7 déc. 2006 à 19:25
merci bcp oui je v laisser comme ça pour se soir, ça sert à rien de risquer .....
De plus on a pa encore appris comme ça ms il nous avai donné des exemples avec le projet quil faisait comme ça c pour ça que j'ai u l'idée.
Sinon pour les intermediaire c bon, c bien des intermediaire??????
Et je peut mettre koi comme commentaire à coté de ma formule pour préciser un peu.

Voila merci bcp
rpd encore une derniere fois STP
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > widi Messages postés 34 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 16 décembre 2006
7 déc. 2006 à 19:55
Oui il s'agit bien d'intermédiaire, je ne sais plus si c'est le mot exact mais il me semble qu'on utilisait ca aussi.

La formule, quelle formule ?

En tout cas, si j'ai un conseil à te donner, c'est de commenter à fond ton code. Même les choses qui te paraissent connes à première vue.
Les commentaires sont tres bien vu simplement parce que c'est un point très important au sein d'un programme, notemment lorsque ce dernier est repris par quelqun d'autre. Ca permet aux autres de comprendre pourquoi tu as fait de telle facon et pas d'une autre. Donc des commentaires sont les bienvenus, surtout pour des passages un peu chauds à comprendre ou plus techniques que d'autres. Pour l'instant ca ne te parle pas car tu n'en es qu'au début et c'est pas bien compliqué, mais tu verra très vite.

Bon courage et désolé j'ai pas pu répondre avant.

0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
7 déc. 2006 à 16:03
Je n'ai pas tout lu en détail, mais
sqrt((ordonnee-ligne)*(ordonnee-ligne)+(abscisse-colonne)*(abscisse-colonne))<=rayon)

serait raisonnablement remplacé par
//déclaration de R2
R2= rayon*rayon;  //calculé à l'extérieur des boucles imbriquées
(ordonnee-ligne)*(ordonnee-ligne)+(abscisse-colonne)*(abscisse-colonne)<=R2


On ne voit pas l'utilité d'extraire une racine carrée ici. Le carré du rayon ne varie pas.


Johan
0
widi Messages postés 34 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 16 décembre 2006
7 déc. 2006 à 16:56
ben si justement le rayon change car le rayon est demandé à l'utilisateur.
Mais c plus un commentaire qui expliquerait un peu ma formule que j'aurais besoin.
Merci
0