| |||||
| Dernière réponse | |
|---|---|
| Sujet : [C++] je débute | |
| Library | 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 :) |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| Library | 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 :) |
| Kristoph | 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. |
| Library | ben j'en ai besoin pour retourner un tableau dans une fonction. C'est possible ? (par une fonction int fonction (tableau) ?) |
| Kristoph | 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. |
| Library | :bounce: svp j'ai vraiment besoin de vous ! |
| Library | j'ai enlevé les deux * comme tu m'as dit, mais maintenant ca me met des erreurs lors de l'appel de la fonction :(
|
| Kristoph | 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 :) |
| Library | 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 :
|
| LeGreg | 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 :P). 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 |
| XuTi | 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++. |
| GhzMsnet | faudra que tu me le passes :) |
| Library | 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 ! |
| Piksou | il rale paske ça renvoie rien
il faut juste ajouter un return j'avais raison pour gcc
|
| Rasta Knight | ben là le compilo à l'air de pas apprécier le "int main", c pkoi je comprends pas :/ |
| Piksou | bah c considéré comme pas propre
il me semble que gcc envoie un warning qu'il renvoie plutot zéro |
| Kristoph | A j'oubliais la plus grosse erreur : le passage de tableau en paramètre.
affiche(tableau[3][3]); Il faut faire ca : affiche(tableau); |
| Rasta Knight | Piksou> Pourquoi, étant donné qu'apparement son prog ne renvoie rien en sortie? :??: |
| Piksou | rasta: :non:: le void poiur main, c mal :non: |
| Kristoph | 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: :) |
| Rasta Knight | chais pa trop méga débutant aussi (6h de cours, et pas à faire des morpions :D )
Par contre pour le deuxième warning, tu devrais remplacer "int main" par "void main", ça devrait passer je pense. |
| Library | 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 ? |
| Rasta Knight | 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 ;) |
| Library | ben ce sont mes premieres lignes en C++...
j'ai corrigé le swich en switch, mais voila les erreurs maintenant :
|
| Piksou |
|
| Piksou | 1ere erreur: t'as tapé swich pour switch :sarcastic: |
| hectoras | :hello: lib
désolé moi déjà php ça va un peu mal mais alors la C... |
| Library | 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 :
[jfdsdjhfuetppo]--Message édité par Library--[/jfdsdjhfuetppo] |




