begin process at 2008 07 06 17:19:18
1 205 660 membres
227 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : le contour d'une matrice*aidez moi* [ Algorithme / Maths ] (robi987)

le contour d'une matrice*aidez moi* le 14/05/2008 17:40:00

robi987

salut,je suis etudiante en informatique en 1 er annee donc je suis debutante et j'ai recontré quelque difficultés à mes etudes c'est pour cela je vous demande l'aide et merci

-soit un matrice de N lignes et M colonnes de type caracteres
--ecrire l'algorithme qui met des etoiles (*) dans le contour de cette matrice



voici mon essai
Code :
 algorithme_contour   debut       const_n=10;                m=10;       type_T:tableau[1..n,1..m]de caractere;            var_T:tab;            I,J:entier;       I=1;       tantque_I<=n_faire          debut              J=1;                tantque_J<=m_faire                  debut                     lire(T[I,J]);                     J=J+1;                   fin                fin             I=I+1;        fin     fin                                         I=1;          si_I=1 ou I=n_ alors           debut             J=1;               tantque_J<=m_faire                  debut                     T[I,J]=*;                     J=J+1;                   fin                fin                     I=I+1;                fin                  J=1;              sinon              debut                  si_J=1 ou J=m_alors                   debut                      I=1;                        tantque_I<=n_faire                          debut                             T[I,J]=*;                              I=I+1;                           fin                         fin                                              J=J+1;                     fin                     finsi                   fin                 finsi              pour_I_depuis_1_jusqu'a_n_faire             debut                pour_J_depuis_1_jusqu'a_m_faire                  debut                      ecrire(T[I,J]);                  fin                fin              fin            fin          fin
qu'est ce que vous proposez?

Re : le contour d'une matrice*aidez moi* le 14/05/2008 18:35:16

BastienL21
Bonsoir,
Ces fonctions te seront certainement utile:
void gotoxy(int x, int y)
{
     COORD c;
     c.X = x;
     c.Y = y;
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}

// Renvoie la ligne sur la quelle se trouve le curseur
int WhereY( void )
{
    CONSOLE_SCREEN_BUFFER_INFO coninfo;
    GetConsoleScreenBufferInfo (STDOUT, &coninfo);
    return coninfo.dwCursorPosition.Y;
}

// Renvoie la colonne sur laquelle se trouve le curseur
int WhereX( void )
{
    CONSOLE_SCREEN_BUFFER_INFO coninfo;
    GetConsoleScreenBufferInfo (STDOUT, &coninfo);
    return coninfo.dwCursorPosition.X;
}

// Positionne le curseur sur la colonne x
void GotoX(int x)
{
    int y = WhereY();
    COORD dwCursorPosition = { x, y };
    SetConsoleCursorPosition (STDOUT, dwCursorPosition);
}

// Positionne le curseur sur la ligne y
void GotoY(int y)
{
    int x = WhereX();
    COORD dwCursorPosition = { x, y };
    SetConsoleCursorPosition (STDOUT, dwCursorPosition);
}

Ne pas oublier de déclarer
#define STDOUT  GetStdHandle(STD_OUTPUT_HANDLE) avant ces fonctions dans ton code source
exemple de code :

void ContoursMatrice()
{
long i = 0;
gotoxy(0,0);
do{
printf("*");
i++;
}while(i <= (N + 2))
//N étant le nombre de colone
i = 0;
gotoxy(0;0);
do{
printf("*\n");
i++;
}while(i <= (M + 2))//M étant le nombre de ligne
i = 0;
do{
gotoX(N + 2)
printf("*\n");
}while(i <= (M + 2))
i = 0;
GotoX(0);
GotoY(M + 2);
do{
printf("*");
i++;
}while(i <= (N+2))
}//fin ContoursMatrice

Dans le main tu demande le nombre de ligne que tu dtockes dans une variable M et de colonnes dans une variable N puis tu appels la fonction :

int main()
{
long M = 0;
long N = 0;

printf("lignes : ");
scanf("%ld", M);//demande le nombre de lignes

printf("colones : ");
scanf("%ld", N);
//demande le nombre de colones
ContoursMatrice();
return 0;
}

Tiens moi au courant (BUG etc...)
PS: c'est une console en C

//Merci à tous de vous interesser à mon problème,
Cordialement,

Re : le contour d'une matrice*aidez moi* le 14/05/2008 18:39:11

BastienL21
Si tu vois des ERROR SYTAX, j'ai oublié quelques ;


//Merci à tous de vous interesser à mon problème,
Cordialement,

Re : le contour d'une matrice*aidez moi* le 14/05/2008 18:42:15

BastienL21
Et il y a aussi une erreur sur un gotoxy ou j'ai séparé par un ; à la place d'une ,


//Merci à tous de vous interesser à mon problème,
Cordialement,

Re : le contour d'une matrice*aidez moi* le 14/05/2008 18:43:54

BastienL21
Il manque aussi une majuscule à certain gotoY /X

Je te mettrais le code complet correct

//Merci à tous de vous interesser à mon problème,
Cordialement,

Re : le contour d'une matrice*aidez moi* le 14/05/2008 18:56:19

BastienL21
Le code complet, qui fonctionne (sous code::Blocks, en C)
Tiens-moi au courant

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <dos.h>
#include <sys\timeb.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stddef.h>
#include <winsock.h>
#include <string.h>

#include <shellapi.h>
#include <winuser.h>
#include <shlobj.h>
#include <shlwapi.h>

#define STDOUT  GetStdHandle(STD_OUTPUT_HANDLE)

// Renvoie la ligne sur la quelle se trouve le curseur
int WhereY( void )
{
    CONSOLE_SCREEN_BUFFER_INFO coninfo;
    GetConsoleScreenBufferInfo (STDOUT, &coninfo);
    return coninfo.dwCursorPosition.Y;
}

// Renvoie la colonne sur laquelle se trouve le curseur
int WhereX( void )
{
    CONSOLE_SCREEN_BUFFER_INFO coninfo;
    GetConsoleScreenBufferInfo (STDOUT, &coninfo);
    return coninfo.dwCursorPosition.X;
}

// Positionne le curseur sur la colonne x
void GotoX(int x)
{
    int y = WhereY();
    COORD dwCursorPosition = { x, y };
    SetConsoleCursorPosition (STDOUT, dwCursorPosition);
}
void GotoY(int y)
{
    int x = WhereX();
    COORD dwCursorPosition = { x, y };
    SetConsoleCursorPosition (STDOUT, dwCursorPosition);
}

void Color(int couleurDuTexte, int couleurDeFond) // fonction d'affichage de couleurs
{
        HANDLE H = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(H, couleurDeFond*16+couleurDuTexte);
}
long M = 0;
long N = 0;

void gotoxy(int x, int y)
{
     COORD c;
     c.X = x;
     c.Y = y;
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}


void ContoursMatrice()
{
long i = 0;
gotoxy(0,0);
do{
printf("*");
i++;
}while(i <= (N + 2));//N étant le nombre de colone
getch();
i = 0;
gotoxy(0,0);
do{
printf("*\n");
i++;
}while(i <= (M + 2));//M étant le nombre de ligne
getch();
i = 0;
GotoY(0);
do{
GotoX(N + 2);
printf("*\n");
i++;
}while(i <= (M + 2));
getch();
i = 0;
GotoX(0);
GotoY(M + 2);
do{
printf("*");
i++;
}while(i <= (N+2));
}//fin ContoursMatrice

int main(int argc, char *argv[])
{
printf("lignes : ");
scanf("%ld", &M);//demande le nombre de lignes
printf("\ncolones : ");
scanf("%ld", &N);//demande le nombre de colones
system("cls");
ContoursMatrice();
return 0;
}



//Merci à tous de vous interesser à mon problème,
Cordialement,

Re : le contour d'une matrice*aidez moi* le 14/05/2008 19:01:25

BastienL21
Tu peux enlever le getch(); dans la fonction ContoursMatrice pour qu'elle s'execute d'un coup


//Merci à tous de vous interesser à mon problème,
Cordialement,

Re : le contour d'une matrice*aidez moi* le 14/05/2008 19:26:37

BastienL21
ERREUR
Voici le code correct (dans l'ancien, la matrice faisait 1 ligne et une colone de trop)
//il y a sûrement des includews qui ne servent à rien
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <dos.h>
#include <sys\timeb.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stddef.h>
#include <winsock.h>
#include <string.h>

#include <shellapi.h>
#include <winuser.h>
#include <shlobj.h>
#include <shlwapi.h>

#define STDOUT  GetStdHandle(STD_OUTPUT_HANDLE)

// Renvoie la ligne sur la quelle se trouve le curseur
int WhereY( void )
{
    CONSOLE_SCREEN_BUFFER_INFO coninfo;
    GetConsoleScreenBufferInfo (STDOUT, &coninfo);
    return coninfo.dwCursorPosition.Y;
}

// Renvoie la colonne sur laquelle se trouve le curseur
int WhereX( void )
{
    CONSOLE_SCREEN_BUFFER_INFO coninfo;
    GetConsoleScreenBufferInfo (STDOUT, &coninfo);
    return coninfo.dwCursorPosition.X;
}

// Positionne le curseur sur la colonne x
void GotoX(int x)
{
    int y = WhereY();
    COORD dwCursorPosition = { x, y };
    SetConsoleCursorPosition (STDOUT, dwCursorPosition);
}
void GotoY(int y)
{
    int x = WhereX();
    COORD dwCursorPosition = { x, y };
    SetConsoleCursorPosition (STDOUT, dwCursorPosition);
}

void Color(int couleurDuTexte, int couleurDeFond) // fonction d'affichage de couleurs
{
        HANDLE H = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(H, couleurDeFond*16+couleurDuTexte);
}
long M = 0;
long N = 0;

void gotoxy(int x, int y)
{
     COORD c;
     c.X = x;
     c.Y = y;
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}

void ContoursMatrice()
{
long i = 0;
gotoxy(0,0);
do{
printf("*");
i++;
}while(i <= (N + 1));//N étant le nombre de colone
i = 0;
gotoxy(0,0);
do{
printf("*\n");
i++;
}while(i <= (M + 1));//M étant le nombre de ligne
i = 0;
GotoY(0);
do{
GotoX(N + 1);
printf("*\n");
i++;
}while(i <= (M + 1));
i = 0;
GotoX(0);
GotoY(M + 1);
do{
printf("*");
i++;
}while(i <= (N+1));
}//fin ContoursMatrice

int main(int argc, char *argv[])
{
printf("lignes : ");
scanf("%ld", &M);//demande le nombre de lignes
printf("\ncolones : ");
scanf("%ld", &N);//demande le nombre de colones
system("cls");
ContoursMatrice();
return 0;
}


//Merci à tous de vous interesser à mon problème,
Cordialement,

Re : le contour d'une matrice*aidez moi* le 14/05/2008 20:31:19

BastienL21
Faites attention aussi, j'ai inversé, N est le nombre de Colonnes et M de Lignes


//,
Cordialement,

Re : le contour d'une matrice*aidez moi* le 16/05/2008 12:18:24

Pistol_Pete

Salut

Eh bien Bastien, 8 messages consecutifs, des includes a gogo, et un code si compliqué pour un probleme aussi trivial...

Voila ma version qui dessine sur la console, le contours d'une matrice. Donc un rectangle:

#include <iostream>

int main()
{
 int Largeur=20,Hauteur=15,i,j;

 for(j=0;j<Hauteur;j++)
 {
  for(i=0;i<Largeur;i++)
  {
   if(i==0 || i==Largeur-1 ||j==0 ||j==Hauteur-1)
    printf("*");
   else
    printf(" ");
  
  }
  printf("\n");
 }
 return 0;

}

A+
Mon site internet : [ Lien ]



[Page 1 Page 2]
Classé sous : type, algorithme, matrice, contour

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS