01net    Web


Actuellement en ligne : 1177 Utilisateurs dont 48 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, Beno@, smilblick  
01net > Forum de 01net > Programmation et développement > Autres langages
> tableaux en turbo pascal .
Auteur
Message
 
<     1       >
PHENIXghost
  
  :-)
      ?   @     Posté le 02/01/2007 20:20:13  
Voter pour ce message
Bonjour :youpi:
Voila , je dois faire un programme pour un jeu de bataille navale en turbo pascal , mais je n'arrive pas generer des grilles .
Quelqu'un aurait il une solution ? :??:
Minus-et-Cortex
  
   
      ?   @     Posté le 02/01/2007 21:03:43  
Voter pour ce message
Salut!

Tu peux t'inspirer du programme que j'ai donné sur ce post http://forum.telecharger.01net.com/telecharger/programmation_et_developpement(...)
Comme il est écrit en C, il faut l'adapter à Pascal.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 02/01/2007 21:10:15  
Voter pour ce message
je suis désolé , mais je ne comprends absolument rien . :sweat:
Minus-et-Cortex
  
   
      ?   @     Posté le 02/01/2007 21:30:40  
Voter pour ce message
Poste le code que tu as écrit.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 02/01/2007 22:24:57  
Voter pour ce message
le code ?
je ne sais pas faire de programme puisque je n'arrive déja pas a faire un tableau .
Je ne vois pas ce que tu veux dire ... :S
Minus-et-Cortex
  
   
      ?   @     Posté le 03/01/2007 06:50:49  
Voter pour ce message
Salut!

Ton programme est d'abord écrit sous forme de code source (commençant en général par uses crt;...), qui sera ensuite compilé. C'est ce code que je te demande de poster, pour voir ce que tu as déjà fait, et où tu pourrais avoir des problèmes. Evidemment, si tu attends qu'on te fasse ton programme, tu ne dois pas avoir de code source.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 03/01/2007 10:49:10  
Voter pour ce message
Ah ok , désolé je n'avais pas compris .
Voila :
Pour faire les 2 tableaux j'avais commencé par ca :
program bateaux ;
uses crt ;
var tab1 : array [1..10] OF integer ;
tab2 : array [1..10]OF word ;
i:integer;
Begin
for i:=1 to 10 do
Begin
tab1:=1;
write(i);
tab2:=1;
write(i);
end;

Voila , je pensais qu'a partir de la mon tableau aller s'afficher avec control f9 , mais il n'apparait que des chiffres .
Minus-et-Cortex
  
   
      ?   @     Posté le 03/01/2007 12:52:56  
Voter pour ce message
PHENIXghost a écrit :

program bateaux ;
uses crt ;
var tab1 : array [1..10] OF integer ;
tab2 : array [1..10]OF word ;
i:integer;
Begin
for i:=1 to 10 do
Begin
tab1[ i ]:=1;
write(i);
tab2[ i ]:=1;
write(i);
end;



Il y a déjà une petite chose qui me paraît bizarre : normalement, les grilles sont à deux dimensions, donc tu devrait déclarer tes deux tableaux de cette manière :
var tab1 : array [1..10, 1..10] OF integer ;
var tab2 : array [1..10, 1..10] OF integer ;

et quand tu les remplis avec les 1, il te faut une boucle imbriquée :
begin
for i:=1 to 10 do
for j:=1 to 10 do
begin
tab1[i,j]:=1;
write(i, ' ', j);
tab2[i,j]:=1;
write(i, ' ', j);
end;
end;

Pour t'aider, consulte ce site http://cyberzoide.developpez.com/info/turbo/chap21.php3.

@+
-->Message édité par Minus-et-Cortex le 03/01/2007 12:53:41<--
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 03/01/2007 16:53:05  
Voter pour ce message
je ne comprend pas , j'ai toujours des chiffres qui apparaissent mais je n'ais pas de tableau . :??:
Minus-et-Cortex
  
   
      ?   @     Posté le 03/01/2007 19:35:21  
Voter pour ce message
Pour afficher un tableau, il faut faire :
for i:=1 to 10 do
begin
for j:=1 to 10 do
write(tab1[i,j]);
writeln();
end;


@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 03/01/2007 19:55:08  
Voter pour ce message
Bonsoir , j'ai quelque chose qui ressemble a un tableau mais ce sont des 0 a la place des cases , c'est normal ?
Maintenant , j'ai un deuxième problème , pour le touché-coulé , il faut 2 tableaux avec des colonnes de 1 a 10 mais aussi des ligne de A a J , est ce que c'est possible de realiser ca ?
Et est ce que c'est possible d'avoir les 2 tableaux en meme temps ?
Minus-et-Cortex
  
   
      ?   @     Posté le 03/01/2007 21:16:35  
Voter pour ce message
Sur le lien que je t'ai envoyé (http://cyberzoide.developpez.com/info/turbo/chap21.php3), on dit que pour faire un tableau à double entrée, il faut l'écrire
tableau[MinDim1..MaxDim1, MinDim2..MaxDim2]

On te dit également que les indices des tableaux peuvent être des lettres ('A'..'Z' ou 'a'..'z'). Tu peux donc faire un truc genre
var tab1[1..10, 'A'..'J'];
var tab2[1..10, 'A'..'J'];

pour déclarer tes deux tableaux.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 03/01/2007 22:42:08  
Voter pour ce message
je vais te paraitre vraiment nul :sweat: , mais j'y arrive toujours pas .
J'ai toujours des 0 mais je n'ai pas de cases .
je te remet mon programme pour les tableaux , parce que la je nage :sarcastic: .
en tout cas merci pour ton aide ;

program bateau ;
uses crt;
var tab1 : array [1..10 , 'a'..'j'] Of integer;
tab2 :array [1..10,'a'..'j']Of integer;
i:integer;
j:integer;
Begin
for i:=1 to 10 do
Begin
for j:=1 to 10 do
write (tab1);
writeln(i);
for i:=1 to 10 do
Begin
for j :=1 to 10 do
write(tab2);
writeln(i);
end;
end;
end.



-->Message édité par PHENIXghost le 03/01/2007 22:43:19<--
Minus-et-Cortex
  
   
      ?   @     Posté le 03/01/2007 23:49:55  
Voter pour ce message
program bateau ;
uses crt;
(* déclaration des deux tableaux correspondant aux grilles *)
var tab1 : array [1..10 , 'a'..'j'] of integer;
var tab2 :array [1..10, 'a'..'j'] of integer;
i:integer;
j:integer;
(* début du programme *)
BEGIN
for i:=1 to 10 do (* pour chaque ligne du tableau *)
for j:=1 to 10 do (*pour chaque colonne du tableau *)
begin
(* initialisation des cases de chaque tableau avec la valeur 1 *)
tab1[i, 'a'-1+j]:=1;
tab2[i, 'a'-1+j]:=1;
end;
(* chaque case des deux tableaux est initialisée avec la valeur 1 *)

(* affichage du contenu des cases du premier tableau *)
writeln('Affichage du premier tableau');
for i:=1 to 10 do
begin
(* on affiche une ligne *)
for j:=1 to 10 do
write (tab1[i, 'a'-1+j], ' ');
(* on affiche un retour à la ligne pour passer à la ligne suivante *)
writeln();
end;

writeln();
writeln();

(* affichage du contenu des cases du deuxième tableau *)
writeln('Affichage du deuxième tableau');
for i:=1 to 10 do
begin
(* on affiche une ligne *)
for j:=1 to 10 do
write (tab2[i, 'a'-1+j], ' ');
(* on affiche un retour à la ligne pour passer à la ligne suivante *)
writeln();
end;

END.


Ce programme devrait t'afficher le contenu des deux tableaux (donc des chiffres 1 séparés par deux espaces), mais ne t'affiche pas de 'grille'. Pour afficher les bords d'une grille, il faut les dessiner, et ce n'est à priori pas le principal. Tant que ton programme affiche le contenu correct des tableaux, c'est bon.
Tu devrais voir quelque chose comme
Affichage du premier tableau
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1


Affichage du deuxième tableau
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1


@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 04/01/2007 12:02:58  
Voter pour ce message
Bonjour ,
pour le programme , il me met une erreur 26 : type mismatch au niveau du premier + .
Que faut il faire ? c'est une erreur de type ?
Minus-et-Cortex
  
   
      ?   @     Posté le 04/01/2007 12:39:25  
Voter pour ce message
Salut!

Essaye en remplaçant 'a'-1+j par chr(ord('a')-1+j). Il semble que Pascal n'aime pas additionner des lettres et des entiers.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 04/01/2007 12:52:14  
Voter pour ce message
Maintenant , j'ai un tableau , mais je n'ais toujours pas les lettres .
Dans les () du writeln , il ne faut rien mettre ?
Minus-et-Cortex
  
   
      ?   @     Posté le 04/01/2007 13:15:37  
Voter pour ce message
Modifie chaque bout de code affichant les tableaux
for i:=1 to 10 do
begin
(* on affiche une ligne *)
for j:=1 to 10 do
write (tab1[i, 'a'-1+j], ' ');
(* on affiche un retour à la ligne pour passer à la ligne suivante *)
writeln();
end;

comme suit

write(' ');
for i:=1 to 10 do
write(i, ' ');
writeln();
for i:=1 to 10 do
begin
(* on affiche une ligne *)
write(chr(ord('A')-1+i),' ');
for j:=1 to 10 do
write (tab1[i, 'a'-1+j], ' ');
(* on affiche un retour à la ligne pour passer à la ligne suivante *)
writeln();
end;
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 04/01/2007 14:25:56  
Voter pour ce message
Voila j'ai quelque chose qui ressemble a un tableau ,
mais il reste quelques problème :
123456789101010
a11111111111
b11111111112
c11111111113
d11111111114
e11111111115
f11111111116
g11111111117
h11111111118
i11111111119
j111111111110
10

1234567891010
a11111111111
b11111111112
c11111111113
d11111111114
e11111111115
f11111111116
g11111111117
h11111111118
i11111111119
j111111111110

Voila j'ai mis les problème en gras , par exemple , le 1 doit commencé a la première ligne , mais la il commence au dessus de a .

En tout cas , je te remercie parce que la je ne m'en sors plus du tout :sarcastic:
Minus-et-Cortex
  
   
      ?   @     Posté le 04/01/2007 15:03:01  
Voter pour ce message
C'est ton code ou celui que je t'ai écrit ? Si c'est le tien, poste-le.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 04/01/2007 15:19:43  
Voter pour ce message
en fait c'est celui que j'avais fait au départ mais avec les modifications que tu m'a dit d'apportée a mon programme .
je vais quand meme te le reecrire :

program bateau ;
uses crt;
var tab1:array [1..10,'a'..'j'] of integer;
tab2 : array [1..10,'a'..'j']of integer;
i:integer;
j:integer;
Begin
for i := 1 to 10 do
for j:=1 to 10 do
Begin
tab1[i,chr(ord('a')-1+j)]:=1
tab2[i,chr(ord('a')-1+j)]:=1;
end;
writeln('');
for i:=1 to 10 do
write(i,'');
writeln(i);
for i:=1 to 10 do
Begin
write(chr(ord('a')-1+j)],'');
writeln(i);
end;
writeln(i);
writeln('')
for i:= 1 to 10 do
write(i,'');
writeln(i);
for i:= 1 to 10 do
Begin
write(chr(ord('a')-1+j)],'');
writeln(i);
end;
end.



en faisant ca ,j'obtient le tableau ci dessus pour le joueur 1.
Est t'il possible de faire la meme chose pour le joueur 2 mais sans que le joueur 1 voit les tableaux du joueur 2 ?


-->Message édité par PHENIXghost le 04/01/2007 17:31:44<--
Minus-et-Cortex
  
   
      ?   @     Posté le 04/01/2007 21:02:36  
Voter pour ce message
Essaye en remplaçant les 'writeln(i);' par 'writeln();'. Pour ce qui est d'afficher le contenu de l'autre tableau, il faut faire la même chose ; mais pour éviter de dupliquer le code, il faudrait que tu fasses une procédure qui affiche un tableau, et dans ton code principal, tu appelles cette procédure une première fois avec le premier tableau et une deuxième fois avec le deuxième tableau.
Concernant le fait de voir les deux tableaux, le mieux est de faire un programme qui fonctionne en client/serveur et attend deux joueurs pour commencer à jouer. Chaque joueur verrait uniquement sa grille et pas l'autre. Mais ça me semble un peut trop compliqué pour toi, donc il faudra faire sans.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 04/01/2007 21:32:11  
Voter pour ce message
Sans le i dans les () du writeln , il me met :error 42 :error in expression .
Je crois que pour le client/seveur tu as raison , sa me semble un peu compliqué .
J'ai une autre question ( et oui encore :sarcastic: ) , je vroudrais savoir comment mettre un bateau dans le tableau ?
Minus-et-Cortex
  
   
      ?   @     Posté le 04/01/2007 21:38:59  
Voter pour ce message
Si writeln(); ne fonctionne pas, essaye writeln('');.
Pour entrer des bateaux, il faut lire les coordonnées du bateau et modifier les tableaux correspondant aux grilles.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 04/01/2007 22:00:17  
Voter pour ce message
Magnifique :fume: .
j'ai deux tableaux identiques et bon , mais je n'ais pas compris comment faire deux autres tableaux identique pour le joueur 2 ?
Minus-et-Cortex
  
   
      ?   @     Posté le 04/01/2007 23:05:18  
Voter pour ce message
Je ne sais pas à quoi te servais ces deux tableaux (je pensais qu'il y en avait un pour le premier joueur et un autre pour l'autre joueur), mais si tu refais la même chose que pour ce joueur, tu auras deux autres tableaux pour le deuxième joueur.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 04/01/2007 23:28:22  
Voter pour ce message
ok mais quand je recopie la meme chose , je n'ais toujours que deux tableaux .

-->Message édité par PHENIXghost le 05/01/2007 00:18:39<--
Minus-et-Cortex
  
   
      ?   @     Posté le 05/01/2007 17:28:10  
Voter pour ce message
Salut!

program bateau ;
uses crt;
type grille = array [1..10,'a'..'j'] of integer;
procedure AfficheTab ( tableau : grille );
var i,j:integer;
begin
write(' ');
for i:=1 to 10 do
write(i, ' ');
writeln('');
for i:=1 to 10 do
begin
write(chr(ord('a')-1+i), ' ');
for j:=1 to 10 do
write(tableau[i, chr(ord('a')-1+j)], ' ');
writeln('');
end;
end;

var tab1: grille;
tab2 : grille;
tab3: grille;
tab4: grille;
i:integer;
j:integer;
Begin
for i := 1 to 10 do
for j:=1 to 10 do
Begin
tab1[i,chr(ord('a')-1+j)]:=1;
tab2[i,chr(ord('a')-1+j)]:=1;
tab3[i,chr(ord('a')-1+j)]:=1;
tab4[i,chr(ord('a')-1+j)]:=1;
end;
writeln(chr(10), chr(13), 'Premiere grille');
AfficheTab(tab1);
writeln(chr(10), chr(13), 'Deuxieme grille');
AfficheTab(tab2);
writeln(chr(10), chr(13), 'Troisieme grille');
AfficheTab(tab3);
writeln(chr(10), chr(13), 'Quatrieme grille');
AfficheTab(tab4);
end.


Voilà 4 grilles qui sont affichées (mais il se peut que tu n'en voies que deux, mais je ne sais pas pourquoi, cela doit venir de Turbo Pascal).

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
PHENIXghost
  
  :-)
      ?   @     Posté le 05/01/2007 19:41:33  
Voter pour ce message
ok , merci pour ton aide .
a+ :hello:
<     1       >

01net > Forum de 01net > Programmation et développement > Autres langages
> tableaux en turbo pascal .

Aller à :

Page générée en : 0.187s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat

Droppix Recorder
Gravez facilement vos fichiers.
Une suite logicielle extrêmement simple qui répond à tous vos besoins de gravure sur CD, DVD ou Bluray.