bonjour a tous,
je me mets a la programmation pour m´amuser et j´essaie de definir une plateforme j´ai donc taper mon code mais on me dit que sa ne va pas lors de la compilation et je ne trouve pas pourquoi donc si vous pouvez m´aider sa serait cool!!Merci d´avance!
using namespace std;
char affichage(int colonne,int ligne)
{
char grille[colonne][ligne];// probleme de constante pour le tableau
for(int i=0;i<colonne;i++)
{
for(int j=0;j<ligne;j++)
{
grille[i][j]=´p´;
return grille[i][j];
}
}
}
int main()
{
cout<<affichage(6,9);//exemple de valeur
return 0;
}
en C++ il n´est pas possible de définir un tableau dont la taille est passé en parametre a la fonction.
C´est pas ontre possible en C.
Outre ce probleme fort ennuyeux, il y a un probleme plus general, la fonction affichage n´a pas vraiment de sens. Il faut séparer la construction des données de leur affichage.
je te propose:
http://rafb.net/p/vkSBa628.html
oui ! beaucoup plus malin et surtout beaucoup plus "beau"!!
je te remercie je vais continuer dans cette voie
Je te remercie encore tu me sauves!! si j´ai pas de base la suite n´a pas d´interet!
j´ai continué quelque peu mais je ne comprends pas quelque chose, l´affichage ne se fait pas pour les char alors qu´il se fait pour un simple zero
using namespace std;
const int nbCol = 10;
const int nbLig = 10;
char grille[nbCol][nbLig];
void initialisation()
{
for (int i=0; i< nbCol; i++)
for (int j=0; j< nbLig; j++)
grille[i][j] = ´p´;
}
char valeur(int c, int l)
{
return grille[c][l];
}
int main()
{
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
cout<<valeur(i,j);
cout<<endl;
}
return 0;
}
personne ne sait pourquoi?
ne up pas tes messages. Ça ne sers à rien.
tu asoublié d´appeler initialisation au début de ta fonction main pour remplir ton tableau.
D´autre part, tu n´a pas besoin de l´en tête string.h pour faire ça (c´est d´ailleurs en en tête C et non C++ qui définit des fonction de bas niveau de manipulation de chaîne et de buffer).
je te remercie dnob700 j´ai résolu le probleme!
oui dslé d´avoir up le sujet mais j´avais peur qu´il parte dasn les oubliettes!! en tout cas merci de m´a repondu sa fait plaisir!
"mais j´avais peur qu´il parte dasn les oubliettes"
Mauvaise raison : comment est-ce qu´un sujet qui est dans les 5 premiers topics du forum pourrait partir aux oubliettes ?
Bref, n´hésite pas à poster (quoi qu´il faut quand même que tu cherche par toi même des réponses à tes problèmes de programmation avant de demander de l´aide sur un forum (pas seulement ici) pour progresser efficacement), mais ne up pas tes topics.
bonjour a tous!je reviens vous voir car il y a quelque chose que je ne comprends pas.
je veux saisir la case d´un tableau a deux dimensions.
une fois cela fait je veux tester la valeur de cette case et la comparer a la case d´un autre tableau. Mais lors de la compilation on me dit "un indice recquiert un type tableau ou pointeur"
si vous pouviez m´aider merci bien!
if
(valeurjoueur[a][b]==valeuradverse[a][b])//2erreur
s
{
valeurjoueur[a][b]=´O´;//1erreur
}
else
valeurjoueur[a][b]=´X´;//1erreur
system("cls");// sa ne marche pas non plus, le but est de rafraichir l´ecran
C´est quoi le type des variables valeurjoueur et valeuradverse ?
ce sont des char c´est pourquoi je mets les lettres entre des ´
ce n´est peut etre pas comme sa que l´on fait
Non mais comment tu les as declaré ?
desolé je debute donc je comprends pas tout mais voici mon prgramme peut etre que cela repondra plus simplement
using namespace std;
const int nbCol = 10;
const int nbLig = 10;
char grilleadverse[nbCol][nbLig];
char grillejoueur[nbCol][nbLig];
void initialisationjoueur()
{
for (int i=0; i< nbCol; i++)
for (int j=0; j< nbLig; j++)
grillejoueur[i][j] = ´.´;
}
void initialisationadverse()
{
for (int i=0; i< nbCol; i++)
for (int j=0; j< nbLig; j++)
grilleadverse[i][j] = ´.´;
grilleadverse[2][3] = ´X´;//1
grilleadverse[4][6] = ´X´;//2
grilleadverse[4][7] = ´X´;//3
grilleadverse[4][8] = ´X´;//4
grilleadverse[4][9] = ´X´;//5
grilleadverse[1][1] = ´X´;//6
grilleadverse[1][2] = ´X´;//7
grilleadverse[2][2] = ´X´;//8
grilleadverse[3][2] = ´X´;//9
grilleadverse[4][2] = ´X´;//10
}
char valeurjoueur(int c, int l)
{
return grillejoueur[c][l];
}
char valeuradverse(int c, int l)
{
return grilleadverse[c][l];
}
int main()
{
int a,b;
initialisationjoueur();
initialisationadverse();
//cout<<" A B C D E F G H I J \n";
cout<<" 1 2 3 4 5 6 7 8 9 10";
/* for(int i=0;i<10;i++)
{
if(i<9)
cout<<i+1<<" ";
else
cout<<i+1;
for(int j=0;j<10;j++)
cout<<valeuradverse(i,j)<<" ";
cout<<endl;
}*/
cout<<endl;
do
{
for(int i=0;i<10;i++)
{
if(i<9)
cout<<" "<<i+1<<" ";
else
cout<<i+1;
for(int j=0;j<10;j++)
cout<<valeurjoueur(i,j)<<" ";
cout<<endl;
}
cout<<"Entrez les coordonnées de tir \nla ligne :";
cin>>a;
cout<<"puis la colonne :";
cin>>b;
if (valeurjoueur[a][b]==valeuradverse[a][b])
{
valeurjoueur[a][b]=´O´;
}
else
valeurjoueur[a][b]=´X´;
system("cls");
}
system("pause");
return 0;
}
Ce sont des fonctions et non pas des tableaux, donc il faut faire plutot valeurjoueur(a,b) au lieu de valeurjoueur[a][b]
oh qu´est ce que je suis bete!!!!!!!
je suis désolé de t´avoir déranger mais ce n´est pas evident . en tout cas merci beaucoup pour toutes ces infos car sa va m´aider!!j´essaie de faire une sorte de btaille navale comme tu l´auras compris et je m´amuse bien!!
encore merci c´est super sympa^^
Mais de rien ![]()
bonsoir a tous,
je viens vous solliciter car j´ai un probleme et je ne vois pas comment le resoudre.
j´ai crée un tableau a 2entrées qui me permet de créer un espace 10*10 où est généré aléatoirement 10 planetes et 1 joueur que je peux deplacer. Je voudrais affecter des caracteristiques a chaque planete mais je ne vois pas comment faire.(c´est quelque chose d´assez semblable a konquest sur linux).
donc c´est un tableau de char remplit de ´.´ et de ´O´(planete).
j´ai pensé associé chaque planete a un tableau mais je pense que ce n´est pas la meilleur facon...
si vous pouviez m´aider ou meme me donner des pistes!!merci d´avance
quelles sont les données que tu veux associer à chaque planète ?
Si tu as besoin d´une structure spécial pour ça, tu peut faire que ton tableau bidimensionnel contiennent des pointeurs vers la structure en question, qui seront NULL là où il n´y a pas de planète et un pointeur vers une structure là où il y en a.
Tu peut aussi stocker pour chaque planète, au lieu de mettre ´O´ tu mets en entier qui correspond au numéro de ta planète, et tu as un autre tableau, ailleurs, qui contient dix éléments qui sont les informations que tu veu stocker.
Ou tu peut aussi ne stocker que ce dernier tableau, et pas le premier (avec les 100 cases) si les données de chaque planète indiques leur position.
en fait je voudrais associer un nombre de missile (ou de vaisseaux)pour faire un combat et aussi un pourcentage qui va permettre de calculer les pertes de chaque coté et ainsi savoir qui gagne le combat.
donc pour chaque case attribué d´un ´O´ je voudrais pouvoir lui donner ces deux caracteristiques. Mais je manipule mal les tableaux et je sais pas si c´est possible.
c´est tout à fait possible, mais il faudrait par exemple que tu connaisse les structure. Si tu n´as pas encore vu ça, il faudrait que tu avance dans ton cours de C++.
Le but étant de séparer l´affichage des données : la tu affiche ton tableau à l´écran et là où il y a des 0 tu sais qu´il y a une planête. Il faudrait stocker non pas des char dans le tableau, mais une structure qui dit si la case contient une planète, et si oui, combien elle a de missiles, etc. À l´affichage, tu regarde dans chaque case du tableau s´il y a une planète, et si oui, tu écrit un 0, mais tu n´imprime pas directement le contenu du tableau.