je débute [C++] - Programmation
Marsh Posté le 09-02-2002 à 20:15:17
lib
désolé moi déjà php ça va un peu mal mais alors la C...
Marsh Posté le 09-02-2002 à 20:16:51
Citation : E:\programmation\morpion.cpp(16) : error C2065: 'swich' : undeclared identifier |
c pas clair ?
Marsh Posté le 09-02-2002 à 20:19:45
ben ce sont mes premieres lignes en C++...
j'ai corrigé le swich en switch, mais voila les erreurs maintenant :
Citation : Compiling... |
merci de ton aide en tous cas
Marsh Posté le 09-02-2002 à 20:25:19
je comprends pas un truc, tes "cases" doivent prendre d'après ton prog NULL, 0, 1 ou 2 or tu fais switch(tableau(i,j)) et je ne vois pas comment tableau(i,j) pourrait prendre une de ces valeurs...
PS : Je raconte peut-être des conneries aussi, chuis super débutant en C
Marsh Posté le 09-02-2002 à 20:28:15
pour l'instant j'ai voulu faire que le sous programme qui "affiche" les cases du morpion, plus tard (des que les joueurs auront commencé a jouer, je mettrai des 1 ou des 2 dans la matrice "tableau", ce qui devrait afficher des croix et des ronds)
c pas comme ca qu'il faut faire ?
Marsh Posté le 09-02-2002 à 20:32:57
chais pa trop méga débutant aussi (6h de cours, et pas à faire des morpions )
Par contre pour le deuxième warning, tu devrais remplacer "int main" par "void main", ça devrait passer je pense.
Marsh Posté le 09-02-2002 à 20:33:56
Tu a mis un ; à la fin de ton switch et avant ton bloc {} c'est pas bon, retire le.
De plus, enleve completement la section case NULL: parceque ca ne sert à rien. En général il n'y a que les pointeurs qui contiennent NULL et ici c'est des entiers.
En fait je ne vois pas a quoi pouvait servir cette partie avec case NULL:
Marsh Posté le 09-02-2002 à 20:36:02
Piksou> Pourquoi, étant donné qu'apparement son prog ne renvoie rien en sortie?
Marsh Posté le 09-02-2002 à 20:36:09
A j'oubliais la plus grosse erreur : le passage de tableau en paramètre.
affiche(tableau[3][3]);
Il faut faire ca :
affiche(tableau);
Marsh Posté le 09-02-2002 à 20:36:40
bah c considéré comme pas propre
il me semble que gcc envoie un warning
qu'il renvoie plutot zéro
Marsh Posté le 09-02-2002 à 20:37:48
ben là le compilo à l'air de pas apprécier le "int main", c pkoi je comprends pas
Marsh Posté le 09-02-2002 à 20:38:48
il rale paske ça renvoie rien
il faut juste ajouter un return
j'avais raison pour gcc
Citation : test.c: In function `main': |
Marsh Posté le 09-02-2002 à 20:38:54
yes, merci a tous, j'ai remplacé le tableau[3][3] par tableau, viré le ; apres le switch et viré le case NULL et maintenant ca marche tres bien. Merci a tous !
Marsh Posté le 09-02-2002 à 22:00:36
au fait! ce n est pas de la programmation C++ que tu fais la... mais du C (l utilisation de cout<< et cin>> n est qu une facilite pour remplacer le printf et le scanf).
Quand tu feras des classes, la tu programmeras en C++.
Marsh Posté le 09-02-2002 à 22:47:05
oui enfin le C++ c'est un langage multiparadigme
(dixit son auteur)
Tu n'es pas oblige de faire de l'objet pour
programmer en C++.
La plupart des regles C->C++ sont optionnelles
mais facilitent la tache du programmeur
quand elles sont utilisees donc tu aurais
tort de ne pas les utiliser sauf quand
tu sais que ca te penalise au niveau performance.
(mais pour un morpion les performances ca devrait
aller ).
Sinon le int main c'est pas optionnel
c'est la norme parce que main est une fonction
qui est appelee par l'init du programme
et que cette init attend une valeur de retour.
A+
LEGREG
Marsh Posté le 09-02-2002 à 23:40:57
j'ai continué un peu le programme, au moment ou j'en suis il n'y a pas d'erreur quand je compile et que je crée le .exe mais pourtant lorsque j'execute le .exe ca bug (histoire de mémoire)
la source actuelle est :
Citation : #include<iostream.h> |
j'ai mis la ligne ou il me donne l'erreur lorsqu'il passe en mode débuggage.
Ca doit etre un probleme avec les pointeurs, mais j'y comprend pas grand chose a ces machins...
Marsh Posté le 10-02-2002 à 00:01:25
Bah, il va falloir apprendre
En fait, dans ton tableau "int tableau[3][3];", tableau est un pointeur deguisé. Donc quand tu dit "void affiche (int tableau[3][3])", affiche prend déja un pointeur en paramètre sans que tu ne le sache. Ensuite, pour utiliser ce tableau, tout ce que tu a à faire c'est :
void affiche(int tableau[3][3])
...
tableau[i][j];
et non :
void affiche(int *tableau[3][3])
...
*tableau[i][j];
Et pour appeler affiche, c'est comme tu as fais.
En fait, ( mais je ne suis pas sur ), int * tableau[3][3]; n'est pas un tableau d'entiers mais un tableau de pointeurs vers des entiers
Marsh Posté le 10-02-2002 à 10:47:15
j'ai enlevé les deux * comme tu m'as dit, mais maintenant ca me met des erreurs lors de l'appel de la fonction
Citation : #include<iostream.h> |
les erreurs :
Citation : Compiling... |
Marsh Posté le 10-02-2002 à 14:59:01
en fait, il faut enlever TOUTE les * devant tableau dans tout ton programme, même dans le main : int tableau[3][3]; à la place de int * tableau[3][3];
Tu n'as pas besoin de pointeurs ici.
Marsh Posté le 10-02-2002 à 15:26:58
ben j'en ai besoin pour retourner un tableau dans une fonction. C'est possible ? (par une fonction int fonction (tableau) ?)
Marsh Posté le 10-02-2002 à 15:32:27
En fait, la tu manipule des tableaux de pointeurs vers des int
Si tu fais :
int tableau[3][3];
affiche(tableau);
Tu passes déjà un pointeur en paramètre car tableau est équivalent à un pointeur . Dans ce cas prècis tu n'as pas à t'en faire, ça passe tout seul. La où il y aurait des problèmes se serait si ton tableau n'avait pas une taille fixée à l'avance et alors il faudrait vraiment travailler avec des pointeurs.
Marsh Posté le 10-02-2002 à 15:41:41
d'accord, je vais virer tous les pointeurs, t'as surement raison, je dois pas en avoir besoin encore (j'en aurai besoin pour une autre partie de mon programme, mais bcp bcp plus tard)
merci a toi
Marsh Posté le 09-02-2002 à 20:11:45
Bonjour
J'aimerai créer un programme en C++ pour jouer au morpion (sous dos bien sur). J'ai commencé mais deja 7 erreurs lors de la compilation !
j'ai essayé plein de trucs mais a chaque fois c'est pire. Quelqu'un pourrait me dire ce qui ne va pas ?
Le programme :
#include<iostream.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
void affiche (int tableau[3][3])
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout<<" ";
switch (tableau[i][j]);
{
case NULL:
cout<<" ";
break;
case 0:
cout<<" ";
break;
case 1:
cout<<"X";
break;
case 2:
cout<<"O";
break;
default:
break;
}
}
cout<<"\n\n";
}
}
int main()
{
int tableau [3][3];
affiche(tableau[3][3]);
}
les erreurs :
Compiling...
morpion.cpp
E:\programmation\morpion.cpp(16) : error C2065: 'swich' : undeclared identifier
E:\programmation\morpion.cpp(18) : error C2046: illegal case
E:\programmation\morpion.cpp(21) : error C2046: illegal case
E:\programmation\morpion.cpp(24) : error C2046: illegal case
E:\programmation\morpion.cpp(27) : error C2046: illegal case
E:\programmation\morpion.cpp(30) : error C2047: illegal default
E:\programmation\morpion.cpp(43) : error C2664: 'affiche' : cannot convert parameter 1 from 'int' to 'int [][3]'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
E:\programmation\morpion.cpp(45) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Error executing cl.exe.
morpion.obj - 7 error(s), 1 warning(s)
merci d'avance
[jfdsdjhfuetppo]--Message édité par Library--[/jfdsdjhfuetppo]