begin process at 2012 02 11 18:01:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

le contour d'une matrice*aidez moi*


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

le contour d'une matrice*aidez moi*

mercredi 14 mai 2008 à 17:40:00 | le contour d'une matrice*aidez moi*

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?
mercredi 14 mai 2008 à 18:35:16 | Re : le contour d'une matrice*aidez moi*

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,
mercredi 14 mai 2008 à 18:39:11 | Re : le contour d'une matrice*aidez moi*

BastienL21

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


//Merci à tous de vous interesser à mon problème,
Cordialement,
mercredi 14 mai 2008 à 18:42:15 | Re : le contour d'une matrice*aidez moi*

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,
mercredi 14 mai 2008 à 18:43:54 | Re : le contour d'une matrice*aidez moi*

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,
mercredi 14 mai 2008 à 18:56:19 | Re : le contour d'une matrice*aidez moi*

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,
mercredi 14 mai 2008 à 19:01:25 | Re : le contour d'une matrice*aidez moi*

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,
mercredi 14 mai 2008 à 19:26:37 | Re : le contour d'une matrice*aidez moi*

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,
mercredi 14 mai 2008 à 20:31:19 | Re : le contour d'une matrice*aidez moi*

BastienL21

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


//,
Cordialement,
vendredi 16 mai 2008 à 12:18:24 | Re : le contour d'une matrice*aidez moi*

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 ]


1 2

Cette discussion est classée dans : type, algorithme, matrice, contour


Répondre à ce message

Sujets en rapport avec ce message

Template matrice [ par anisdilou ] Je souhaite q'on s'aide a fin d'meliorer nos nivauxSalut : Je veux implémenter une classe qui représente des matrices de dimensions et type de donnés Question matrice "indéfini" [ par LordBob ] Bonjour a tous,voila je me pose une question, j'aimerais pourquoi quand j'ecris une fonction, je peux faire:Type MaFonction(int Tab[])mais je ne peux compilation mai erreur a l execution [ par touny23 ] bon j ai fai une amélioration de mon programme . je galere un peu avec le C mai bon  c est un projet , soit disan la base de la methode num.(je croi q opencv BIBLIO [ par atefensi ] ds la bibliotheque opencv quel est la différence entre iplimage et cvmat? est ce qu'on peut utiliser simultanement la matrice comme  de type iplimage matrices et c++ [ par anne-lise ] Bonjour, je debute en c++ et j'ai quelques problemes avec les tableaux... D'abord, y a t'il un moyen d'avoir pour resultat d'une fonction un tableau ? prob d'algorithme dans matrice [ par gregorian ] Bonjour, Voila je dois écrire un prg en C qui joue avec des matrices booléennes.J'ai déjà fait la partie addition, multiplication, je suis entrain d'i Inversion de matrices [ par Stubbornman ] Bonjour a tous, Mon probleme est le suivant: je cherche à inverser une matrice de taille tres importante (environ 2000x2000), malheureusement, mon al quantifier une image [ par far3ousa ] j'ai  réussi a transformer mon image de type QImage en une matrice  de type  QRgb je veut mnt multiplier les élément de ma matrice par un reel ,alors Recherche : Algorithme Matrice d'Adjacence -> Dessin du graphe [ par olafleur ] Bonjour, je suis à la recherche d'un algorithme qui me permettrait de prendre la matrice d'adjacence d'un graphe et de dessiner celui-ci. Quelqu'un a transposé d'une matrice avec un algorithme parallèle sur pvm [ par houri83 ] bonsoir j'ai besoin d'un algorithme parallèle qui fait la transposition d'une matrice et qui fonctionne sur pvm


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales