Bonjour à tous,
Je suis étudiante en informatique. J'ai un travail à faire et ca fait 2 jours maintenant que j'essaie de trouver une solution à mon probleme. J'espère que quelqu'un saura m'aider.
Je devais faire une matrice dans lequel je devais laisser à l'utilisateur le soin de decider sil dessiner une ligne horizontale vertical des point ou un rectangle. Jusque la tout va bien. Mais ensuite je dois lui donner le choix de sa ligne. Elle peut aller dans tout les sens et dans les demande du profs je dois specifiquement utiliser la formule y=mx+b Sauf que je n'y arrive pas Je vous laisse ce que jai de fait jusqu'à maintenant :
Ps : J'ai essayer la methode drawline apparemment je peux pas l'appliquer avec ma matrice
void DessinerLigneAuChoix(char[,] matrice)
{
int X1 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'origine en X : ", 0, MatriceX);
int X2 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'arrivée en X : ", 0, MatriceX);
int Y1 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'origine en Y : ", 0, MatriceY);
int Y2 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'arrivée en Y : ", 0, MatriceY);
Write("\n");
double m = (Y2 - Y1) / (X2 - X1);
double b = Y1 - (m * X1);
for (int y = Y1; y < MatriceY && y <= Y2; y++)
{
for (int x = X1; x < MatriceX && x <= X2; x++)
{
matrice[x, y] = '*'; ;
}
}
DessinerMatrice(matrice);
}
t'aider à quoi?
tu postes un code incomplet. (LireInt32DansIntervalle? Write? DessinerMatrice?)
tu n'expliques pas ce qui ne fonctionne pas, ce que tu voudrais faire....
tu ne précises même pas ton interfaçage, console, winform, wpf?
Je suis desole c'est la première fois que je fais un post. C'est dans la console
LireInt32DansIntervalle est une méthode dans mon utilitaire qui me permet de demander une valeur a l'utilisateur et qui s'assure que la valeur est dans les limite de la matrice
namespace SÉRIE_E22
{
class Program
{
const int MatriceX = 80;
const int MatriceY = 20;
static void Main(string[] args)
{
new Program().Principale();
}
void Principale()
{
char[,] matrice = new char[MatriceX, MatriceY];
DessinerMatrice(matrice);
for (; ; )
{
char choix = char.ToUpper(LireChar("\n\t Veuillez faire un choix parmi les options suivante : \n" +
"\t\t A : Dessiner un point \n" +
"\t\t B : Dessiner une ligne horizontale \n" +
"\t\t C : Dessiner un ligne verticale \n" +
"\t\t D : Dessiner un rectangle \n" +
"\t\t E : Dessiner un rectangle \n" +
"\t\t F : Quitter \n"));
switch (choix)
{
case 'A': DessinerPoint(matrice); break;
case 'B': DessinerLigneHorizontale(matrice); break;
case 'C': DessinerLigneVerticale(matrice); break;
case 'D': DessinerRectangle(matrice); break;
case 'E': DessinerLigneAuChoix(matrice); break;
default: return;
}
}
}
void DessinerLigneAuChoix(char[,] matrice)
{
int X1 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'origine en X : ", 0, MatriceX);
int X2 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'arrivée en X : ", 0, MatriceX);
int Y1 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'origine en Y : ", 0, MatriceY);
int Y2 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'arrivée en Y : ", 0, MatriceY);
Write("\n");
int m = (Y2 - Y1) / (X2 - X1);
int b = Y1 - (m * X1);
for (int y = Y1; y < MatriceY && y <= Y2; y++)
{
for (int x = X1; x < MatriceX && x <= X2; x++)
{
int a = (y - b) / m;
int s = m * a + b ;
matrice[a,s] = '*';
}
}
DessinerMatrice(matrice);
}
void DessinerRectangle(char[,] matrice)
{
int X1 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'origine en X : ", 0, MatriceX);
int X2 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'arrivée en X : ", 0, MatriceX);
int Y1 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'origine en Y : ", 0, MatriceY);
int Y2 = LireInt32DansIntervalle("Veuillez indiquer la valeur d'arrivée en Y : ", 0, MatriceY);
Write("\n");
//Première ligne horizontale
for (int x = X1; x < MatriceX && x <= X2; x++)
{
matrice[x, Y1] = '*';
if (x == MatriceX) break;
}
//Deuxième ligne horizontale
for (int x = X1; x < MatriceX && x <= X2; x++)
{
matrice[x, Y2] = '*';
if (x == MatriceX) break;
}
//Première ligne verticale
for (int y = Y1; y < MatriceY && y <= Y2; y++)
{
matrice[X1, y] = '*';
if (y == MatriceY) break;
}
//Deuxième ligne verticale
for (int y = Y1; y < MatriceY && y <= Y2; y++)
{
matrice[X2, y] = '*';
if (y == MatriceY) break;
}
DessinerMatrice(matrice);
}
void DessinerLigneVerticale(char[,] matrice)
{
int pointX = LireInt32DansIntervalle("Veuillez indiqué le point d'origine de la ligne verticale en X : ", 0, MatriceX);
int pointOrigineY = LireInt32DansIntervalle("Veuillez indiqué le point d'origine de la ligne verticale en Y : ", 0, MatriceY);
int longueurLigneVerticale = LireInt32Positif("Veuillez indiqué la longueur de la ligner désirée : ");
int fin = pointOrigineY + longueurLigneVerticale;
for (int y = pointOrigineY; y < MatriceY && y < fin; y++)
{
matrice[pointX, y] = '*';
if (y == MatriceY) break;
}
DessinerMatrice(matrice);
}
void DessinerLigneHorizontale(char[,] matrice)
{
int pointOrigineX = LireInt32DansIntervalle("Veuillez indiqué le point d'origine de la ligne horizontale en X : ", 0, MatriceX);
int pointOrigineY = LireInt32DansIntervalle("Veuillez indiqué le point d'origine de la ligne horizontale en Y : ", 0, MatriceY);
int longueurLigneHorizontale = LireInt32Positif("Veuillez indiqué la longueur de la ligner désirée : ");
int fin = pointOrigineX + longueurLigneHorizontale;
for (int x = pointOrigineX; x < MatriceX && x < fin; x++)
{
matrice[x, pointOrigineY] = '*';
if (x == MatriceX) break;
}
DessinerMatrice(matrice);
}
void DessinerPoint(char[,] matrice)
{
int valeurX = LireInt32DansIntervalle("Veuillez indiquer la valeur en X entre 1 et 70: ", 1, MatriceX);
int valeurY = LireInt32DansIntervalle("Veuillez indiquer la valeur en X entre 1 et 20: ", 0, MatriceY);
matrice[valeurX, valeurY] = '*';
DessinerMatrice(matrice);
}
void DessinerMatrice(char[,] matrice)
{
Console.Write(" ");
for (int i = 0; i < MatriceX; i++)
{
Console.Write(i % 10);
}
Console.Write("\n ");
Console.WriteLine(new string('-', 80));
for (int y = 0; y < MatriceY; y++)
{
Console.Write(y % 10 + "|");
for (int x = 0; x < MatriceX; x++)
{
Console.Write(matrice[x, y]);
}
Console.WriteLine("|");
}
Console.Write(" ");
for (int x = 0; x < MatriceX; x++)
{
//Console.Write("\u0305");
Console.Write("-");
}
Console.Write("\n ");
}
}
}
En l'état, je ne peux toujours pas tester ton code, il manque LireChar, Write et LireInt32DansIntervalle.
Cependant grâce à DessinerLigneHorizontale et DessinerLigneHorizontale, je comprends (ou croix comprendre) que dessiner une ligne veut dire mettre des * dans la matrice....
Donc là, c'est purement une mise en application de maths.
Si tu tu devais placer des points d'une droite sur un papier , par exemple y = 2x + 1 (pour x allant de 1 à 10), comment t'y prendrais tu?
Ca ne fonctionne pas ca dit que ca fait une division par 0 jai changer les int pour des doubles mais ca ne fonctionne pas Ca l'arrete pas de dire que je ne peux pas convert des int en doublev ou l'inverse
Si tu tu devais placer des points d'une droite sur un papier , par exemple y = 2x + 1 (pour x allant de 1 à 10), comment t'y prendrais tu?
et tu me réponds
je donnerais une valeur hypothetique en x pour trouver la valeur y
Y'a rien d'hypothétique dans ce que je t'ai demandé.
Pour être capable de d'écrire un algorithme, il faut d'abord savoir faire le truc à la main.
Avant de t'aider à faire cet algorithme (je ne te donnerai pas la solution toute cuite, c'est interdit par la charte du site), j'ai besoin de savoir à quel point tu sais ou pas faire ce qui est demandé à la main.
Non c'était pas l'idée.
Mais vraiment que tu trouves par toi même, en fonction de tes connaissances actuelles.
Il y a des gamins qui codent dès 7-8 ans, les tracés de courbes, il ne connaissent pas.
Donc je suis bien obligé de te demandé ou tu en es.
4 févr. 2018 à 13:59
4 févr. 2018 à 14:03
tu postes un code incomplet. (LireInt32DansIntervalle? Write? DessinerMatrice?)
tu n'expliques pas ce qui ne fonctionne pas, ce que tu voudrais faire....
tu ne précises même pas ton interfaçage, console, winform, wpf?
4 févr. 2018 à 14:06
LireInt32DansIntervalle est une méthode dans mon utilitaire qui me permet de demander une valeur a l'utilisateur et qui s'assure que la valeur est dans les limite de la matrice
4 févr. 2018 à 14:11
tu n'expliques pas ce qui ne fonctionne pas, ce que tu voudrais faire....
4 févr. 2018 à 14:13