cs_robi987
Messages postés1Date d'inscriptiondimanche 11 mai 2008StatutMembreDernière intervention14 mai 2008
-
14 mai 2008 à 17:40
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 2013
-
17 mai 2008 à 14:13
<hr style="COLOR: #d1d1e1" size="1" />
<!-- / icon and title -->
<!-- message -->
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
<!-- BEGIN TEMPLATE: bbcode_code -->
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
<!-- END TEMPLATE: bbcode_code -->qu'est ce que vous proposez?
<!-- / message --><!-- edit note -->
BastienL21
Messages postés172Date d'inscriptiondimanche 10 décembre 2000StatutMembreDernière intervention12 février 20092 14 mai 2008 à 18:35
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,
// 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 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,
BastienL21
Messages postés172Date d'inscriptiondimanche 10 décembre 2000StatutMembreDernière intervention12 février 20092 14 mai 2008 à 19:26
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
#include <stddef.h>
#include <winsock.h>
#include <string.h>
// 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 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,
BastienL21
Messages postés172Date d'inscriptiondimanche 10 décembre 2000StatutMembreDernière intervention12 février 20092 16 mai 2008 à 18:27
Désolé, mais vu que je ne sais pas quoi est dans quelle include...
et puis pour faire VRAIMENT simple, on pourrais carrement faire :
printf("**********************\n");
printf("* *\n");
...
printf("**********************");
mais dans ce cas, les dimentions sont fixes (c'est vrai, elles ne devaient pas forcément être variables) mais je pensais que ce code pouvait être interressant...
//Cordialement,
ps: je l'ai précisé il me semble qu'il y avait sûrement des includes en trop
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 17 mai 2008 à 14:13
J'ai vu que tu l'as précisé qu'il y avais des include en trop, mais la quand meme!!!
Tu as des includes pour les entrées sorties en C ET en C++, pour la
console ET pour les api windows, pour le formatage de la console, pour
les sokets!!!!, et y'en a un packet d'autre que je n'ai jamais utilisé.... Et tout cela pour faire un printf !
Si tu ne sais pas quel include ajouter à ton programme, prend chaque fonction que tu appelles et tu la colles dans google pour savoir de quel include il depend et tu vires toutes les dépendances inutiles.
Quand on répond à une question, il faut essayer de ne pas trop embrouiller la personne.