| E-magination ~ S'évader de la banalité... Et entrer dans l'imaginaire ! ~ |
|
| La programmation | |
|
+36pouale meteskis Choco-sama Dragongaze13 Wraithslayer/HD Kotomine Naqqah kilam1110 wolftag valentinos garywiss6 AristA Sogeking Chroniker Falco Empty AlexRE Awakeing Grade Mod Godboy coco Arvester Blizzard Krok Shakuras Raspberyl Slump Antheor guigui kun Quelqu'un krosk Toshibashin Relm Ccd-ToF NeoKakashi 40 participants | |
Auteur | Message |
---|
Invité Invité
| Sujet: Re: La programmation Dim 23 Sep 2007, 13:25 | |
| Merci pour l'explicitation Astram :gice: |
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 23 Sep 2007, 13:42 | |
| - Awakeing a écrit:
- Code:
-
void strcat(char ch1[], char ch2[]) { long i = 0, j = 0; for(i = 0; ch1[i] != '\0'; i++); for(j = 0; ch2[j] != '\0'; j++) { ch1[i] = ch2[j] } }
Ben en même temps je vois pas ce que cette progra pourrait coder... Une fonction VOID qui ne retourne rien et deux boucles conditionelles... T'éssaye de faire quoi en fait? Sinon, excuse moi, je n'avais pas encore fait attention à la page 16 de ce topic !! Pour ce qui est des fautes dans mes codes sur le forum, c'est parce que j'écris ça super vite et je fais pas attention en fait, et puis j'ai tendance à mélanger tous les languages de programmation que je connais de près ou de loin (surtout le Basic et le C) ^^ Maintenant, corriges moi si je me trompe mais pour moi, il n'y a pas de conteneur spécial pour ce qui est des Booléenes (en C) donc... Une Bool peut très bien être de type INTEGER comme elle peut être de type CHAR,LONG,DOUBLE,STRING... N'importe quel type de variable est une booléene en soit car elle peut être activée (1) ou désactivée (0) d'où le principe des interrupeurs/variables sous Rm En gros ça n'affecte en rien sa "valeur". Cela dit c'est vrai qu'il n'existe pas de type "bool" en C mais bien en C++ . Le truc c'est qu'une variable à toujours ce que j'appel une "arrière valeur" qui est de "O" ou "1" derrière celle qu'on lui a assignée(tu me suis?). La seule faute que j'ai fait là est d'encore une fois avoir confondu entre le C et le BASIC ^^ (il n'y a pas d'INTEGER en C il me semble? En tout cas moi je n'utilise que des LONG's et des DOUBLE's). Pour ce qui est de ton rétrécissement de code : - Code:
-
INT nombre = 0; iF (!nombre) { printf ("Aucun texte spécial ne sera affiché ici"); } elseif (nombre) { printf("Texte spécial affiché ici"); } Je ne vois là aucun rétrécissement... Tu as simplement inversé la condition en commençant par un "n'est PAS égale à...( != )" En plus, de cette manière, le programme vérifiera si la valeur de la variable "nombre" est égale à 0 ou pas...Ce qui veut dire que si on met un "SCANF" pour demander à l'utilisateur d'entrer lui-même une valeur à la variable "nombre", même s'il entre "35624.234" le message spécial sera affiché...Ce n'est pas ce que je voulais montrer en fait!! Par contre, tu as répétée mes erreurs en confondant toi aussi le BASIC ( ELSEIF ) et le C ( ELSE IF ) ce n'est qu'une bête erreure mais le programme plantera comme ça aussi :p Et pour ce qui est du : - Code:
-
INT nombre = 0; IF (nombre == FALSE) { printf ("Aucun texte spécial ne sera affiché ici"); } elseif (nombre == TRUE) { printf("Texte spécial affiché ici"); } C'est clair que ça fonctionera pas, mais je l'ai bien mentioné !! C'était juste pour faire comprendre plus facilement ce que je voulais dire...Je ne programmerais tout de même jamais d'erreur de code aussi flagrante hein ^^ Et enfin, pour ce qui est de mon "niveau" en programmation...Je pense que tu t'y connais mieu que moi ! Simplement, j'ai appris le BASIC tout seul il y a super longtemps, j'étais pas encore trop mauvais mais je comprennais absolument rien à ce que j'écrivais (en gros, je retenais les commandes mais je ne comprennais pas leur fonctionement). Et ça fait pas bien longtemps que j'ai commencé à apprendre le C simplement par plaisir, je trouve ce language absolument génial et principalement depuis que j'ai découvert Code::Blocks Enfin...Voila, tout est dit je pense. En tout cas ça fait plaisir de voir des gens motivés qui s'y connaissent un tant soit peu et savent de quoi ils parlent. - Spoiler:
Référence à Xylvan
Ps : Je viens de me rendre compte qu'il y avait effectivement des "INT" en language C ^^ (Il y en a même une dans le code par défaut d'un code source .c : - Code:
-
int main(int argc, char *argv[]) hihi ) Ccd-Tof : T'as fait un rpg en basic? Permet moi d'en douter... Peut-être est-ce simple avec VBA?! En tout cas, le language "basic" (Dbase, Qbasic..) est pas des plus performants et n'est pas des plus simples en ce qui concerne la gestion de ta programmation (on a vite fait de se perdre dans sa progra). Donc si c'est vraiment le cas, félicitation. (Surtout que tu dois galèrer en basic pour faire ça avec le nombre de Header que ça doit demander...) - Relm a écrit:
- Awa est du genre a penser que les "créateurs" de jeu vidéo sont des programmeurs alors que les programmeurs sont seulement des créateurs de logiciels pour créer un jeu vidéo et reproduir les idées des game designers.
Ce qui représente donc les 3/4 de la création d'un jeu... Félicitation pour ton "seulement" ^^ va dire ça a un programmeur il te passera un savon! - Spoiler:
J'ai compris ce que tu voulais dire hein
- Relm a écrit:
- La programmation dans le JV c'est juste la création des éditeurs et de la jouabileté basique.
Raaaah mais tu le fais exprès???!!! :evil: - Spoiler:
Encore une fois...Je décone...
EDIT (pour Awa) : Oui la commande system("pause"); est peut-être vielliote mais j'arrive pas à m'en passer. (Je pourrai taper return 0; à la place mais j'ai pas envie ^^) | |
| | | Awakeing Maker Ultime Lv 34
Nombre de messages : 1779 Age : 36
| Sujet: Re: La programmation Dim 23 Sep 2007, 13:58 | |
| Alors, pour commencer, j'avoue que je savais pas que tu programmais aussi bien (en tout cas surement mieux que tout le monde) mais voici quelques précisions : 1. Mon code est de type void parce que les paramètres sont des tableaux, et les tableaux sont des pointeurs, ils sont modifiés directement, et pas dans une copie. 2. Les valeurs true et false sont faites pour le C++, et étant donné que tu dis codé en C, j'y ai vu une erreur. 3. J'ai écrit "elseif" parce que j'ai copié ton code, je tiens pas sa du basic j'ai jamais programmé en Basic (il y'a bien le python ou j'écrivais "elif" et le Ti Basic, mais c'est exclu) 4.system("pause") n'a rien à voir avec le return de main, ce return est là parce que main est une fonction de type int (non void), Il doit être mis dans tous les cas ! system("pause") est une fonction de windows (qui ne marche donc que sous windows (on dit aussi pas portable)) qui sert à mettre en pause le programme pour qu'il ne se ferme pas en un éclair (utilie pour les vieux IDE come Dev qui ferment leur console en un éclair...) EDIT : Je relaisse le code au cas où un manieur de chaine de caractères manuelle aurait une idée. - Code:
-
void strcat(char ch1[], char ch2[]) { long i = 0, j = 0; for(i = 0; ch1[i] != '\0'; i++); for(j = 0; ch2[j] != '\0'; j++) { ch1[i] = ch2[j] } } P.S : Mex > C'est pas parce que les strings manipulent des bytes qu'il faut avoir des arrières pensées... | |
| | | Invité Invité
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:04 | |
| - Awakeing a écrit:
- Relm > C'est sur que je voie mal un jeu 3D fait sous RM...
Enfin bref, de toute façon, en prog' les frustrations sont les mêmes, par exemple moi y a ce code que j'arrive pas à faire marcher :
- Code:
-
void strcat(char ch1[], char ch2[]) { long i = 0, j = 0; for(i = 0; ch1[i] != '\0'; i++); for(j = 0; ch2[j] != '\0'; j++) { ch1[i] = ch2[j] } }
Je sais pas pourquoi, mais seule la dernière lettre de ch2 est concatener, j'ai oublier des fonctions de bases à force de travailler avec des strings... Tu n'as pas imbriqué les deux boucles! Et il te manque un point virgule. Pourquoi mettre un long lorsq'un int est suffisant et plus léger? EDIT: LOL ton ps Awa
Dernière édition par le Dim 23 Sep 2007, 14:31, édité 1 fois |
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:06 | |
| Hey merci du compliment ^^ Et merci pour l'info concernant le system("pause") ! Ca va peut-être me dissuader de continuer à l'utiliser. Par contre, ce tic me vient effectivement de mes vieilles progras avec Dev-C++ J'ai mis "return 0;" car avec Code::Blocks c'est la dernière commande que je vois dans une fonction "main". Tu mettrais quoi à la place toi? Pour les bools, si si, je t'assure qu'on peut en utiliser en C mais pas en "déclarer" en fait . (J'en utilise moi-même donc...Rarement mais ça m'arrive) Et pour le ELSEIF, moi c'est horrible, je confonds tout le temps et je sais jamais d'où vient l'erreur...Me faut toujours 3 heures pour comprendre que c'est en deux mots séparés ^^ EDIT : Exelent le "PS" Heandel : Franchement, à l'heure actuelle, un INT ou un LONG...Je vois pas la différence.
Dernière édition par le Dim 23 Sep 2007, 14:07, édité 1 fois | |
| | | Awakeing Maker Ultime Lv 34
Nombre de messages : 1779 Age : 36
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:07 | |
| Heandel > Désolé, j'ai oublié de recopier le point virgule, c'est pas ça le problème, seul la dernière lettre du char est recopié, et pis j'en sais rien moi, si ça se trouve c'est un tableau de plusieurs millions de cases !
Le problème n'est pas là, c'est dans la deuxième boucle que ça foire, il faut concatener ch2 dans ch1, mais j'ai du oublier un truc ou pas avoir mis ce qu'il faut.
EDIT : KoZzY > Ben, il faut laisser retun 0 et enlever system("pause") partout, y a pas de magie !
Dernière édition par le Dim 23 Sep 2007, 14:10, édité 1 fois | |
| | | Invité Invité
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:08 | |
| |
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:15 | |
| - Awakeing a écrit:
Le problème n'est pas là, c'est dans la deuxième boucle que ça foire, il faut concatener ch2 dans ch1, mais j'ai du oublier un truc ou pas avoir mis ce qu'il faut.
D'où l'utilité des pointeurs... Mais comme je vois aucun pointeur de déclaré ni rien je saurai pas t'aider...C'est quoi le reste de ta progra? Cette fonction est appellée par quel fichier source? Quelle est la progra de ce dernier? | |
| | | Invité Invité
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:17 | |
| - KoZzY a écrit:
Heandel : Franchement, à l'heure actuelle, un INT ou un LONG...Je vois pas la différence. La je crie NOOB, un long étant deux fois plus lourd qu'un int. Certes c'est rien, mais en programmation 3D, ça devient très vite conséquent, alors on optimise! Awa: oui en fait j'avais mal compris O_O int length = strlen(ch1); int i = -1; while(strlen(ch1) != strlen(ch1) + strlen(ch2) - 1) { ch1[strlen(ch1)+i)] = ch2[i]; i++; } EDIT: HAAAAN le noob que je fais, suffit de mettre un i++ dans la 2nde boucle *genre* |
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:20 | |
| - Heandel a écrit:
int length = strlen(ch1); int i = -1; while(strlen(ch1) != strlen(ch1) + strlen(ch2) - 1) { ch1[strlen(ch1)+i)] = ch2[i]; i++; } super! Et ça sert à quoi ? - Heandel a écrit:
- KoZzY a écrit:
Heandel : Franchement, à l'heure actuelle, un INT ou un LONG...Je vois pas la différence. La je crie NOOB, un long étant deux fois plus lourd qu'un int. Certes c'est rien, mais en programmation 3D, ça devient très vite conséquent, alors on optimise!
Awa: oui en fait j'avais mal compris O_O Si c'est pour crier des "noobs" partout va donc sur le forum de Xylvan Oui je suis un noob en progra et j'ai jamais dit le contraire. Cependant, la progra 3D j'y touche pas encore et vu le piètre morceau de code qu'Awa nous a donné je trouve qu'un INT ou un LONG ça n'a pas d'importance, c'est pas ça qui va te bouffer toute ta mémoire vive... | |
| | | Invité Invité
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:25 | |
| - KoZzY a écrit:
- Heandel a écrit:
int length = strlen(ch1); int i = -1; while(strlen(ch1) != strlen(ch1) + strlen(ch2) - 1) { ch1[strlen(ch1)+i)] = ch2[i]; i++; } super! Et ça sert à quoi ?
ben c'est la fonction réécrite Oo'' En évitant une boucle imbriquée, gain de performances. - KoZzY a écrit:
Si c'est pour crier des "noobs" partout va donc sur le forum de Xylvan
Oui je suis un noob en progra et j'ai jamais dit le contraire. Cependant, la progra 3D j'y touche pas encore et vu le piètre morceau de code qu'Awa nous a donné je trouve qu'un INT ou un LONG ça n'a pas d'importance, c'est pas ça qui va te bouffer toute ta mémoire vive... NOOB! Meuh non je rigole >> Je suis d'accord, dans le cas présent, ça change rien. Mais bon, faut toujours optimiser au maximum, c'est une règle d'or. *__* |
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:28 | |
| Au fait, c'est quoi "strlen" ? | |
| | | Invité Invité
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:30 | |
| ça te donne la longueur d'une chaine (STRing LENgth)
Noob! |
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:33 | |
| Donc : - Code:
-
int length = strlen(ch1); int i = -1; while(strlen(ch1) != strlen(ch1) + strlen(ch2) - 1) { ch1[strlen(ch1)+i)] = ch2[i]; i++; } Tant que la chaine comprise dans "ch1" n'est pas égale à celle comprise dans "ch2", on fait une incrémentation sur "i" ? Ca sert à rien C'est pour ça que je voulais connaître la suite de la progra (ou le début). EDIT : Nan je viens de capter le "strlen(ch1) + strlen(ch2) -1)" et le ch2[i] (que je comprends pas son utilité)...Mais ça m'aide pas | |
| | | Invité Invité
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:36 | |
| Tient du viens de me faire remarquer une erreur.
int length = strlen(ch1); int i = -1; while(strlen(ch1) != length + strlen(ch2) - 1) //Erreur ici, c'était length! { ch1[strlen(ch1)+i)] = ch2[i]; i++; }
EDIT: et l'incrémentation c'est pour passer au caractère suivant |
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:38 | |
| Heandel : Je sais que ça t'amusera pas mais...Met un peu tes codes entre les balises - Code:
-
[code] et [/code] stp Et surtout...Ré-écris moi un peu cette progra en mettant des commentaires derrière chaque ligne histoire que je comprenne, parce que là, je suis perdu ! | |
| | | Invité Invité
| Sujet: Re: La programmation Dim 23 Sep 2007, 14:51 | |
| OK ^^ - Code:
-
int length = strlen(ch1); //Longueur de la chaine CH1! int i = -1; //I = -1, tu vas voir pourquoi while(strlen(ch1) != length + strlen(ch2) - 1) Tant que la longueur de CH1 est inférieure a la longueur de CH2 + la longueur (length) de départ de ch1, on boucle { ch1[strlen(ch1)+i)] = ch2[i+1]; //Le caractère strlen(ch1) + i (c'est la que le moins 1 est utile, on elève ainsi le caractère \0 en trop) est modifié en ch2[i+1] (oui, j'avais oublié le +1, désolé, crie donc au noob) i++; //on augmente i }
|
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 23 Sep 2007, 15:21 | |
| Yeah j'ai compris maintenant ! (gràce à Heandel sur msn ^^) . En fait c'est sympas comme commande, je m'en resservirait | |
| | | Awakeing Maker Ultime Lv 34
Nombre de messages : 1779 Age : 36
| Sujet: Re: La programmation Dim 23 Sep 2007, 18:19 | |
| Désolé Heandel, mais un long fut a une époque plus gros que int, mais avec l'évolution des ordinateurs, ils les ont remis au même niveau : - Code:
-
printf("char : %ld octets\n", sizeof(char)); printf("int : %ld octets\n", sizeof(int)); printf("long : %ld octets\n", sizeof(long)); printf("double : %ld octets\n", sizeof(double)); donne : - Citation :
- char : 1 octets
int : 4 octets long : 4 octets double : 8 octets Ils peuvent tous les deux stocker un nombre allant de -2 147 483 648 à 2 147 483 647... | |
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 14 Oct 2007, 17:40 | |
| Question : Quand on veut écrire dans un fichier en C/C++, on déclare la chose de cette manière : - Code:
-
int main() { FILE* nom_du_pointeur = NULL; }
Puis on vérifie l'authénticité du fichier: - Code:
-
int main() { FILE* nom_du_pointeur = NULL; fopen nom_du_pointeur(fichier.txt,r+);
IF (nom_du_pointeur != NULL) { printf("Ca devrait fonctioner\n"); }
}
Maintenant, si je veux utiliser plusieurs fichiers, puis-je utiliser plusieurs fois le "FILE*" devant mon pointeur? Ou dois-je à chaque fois donner un nom différent? En gros, est-ce une fonction? Une commande? Ou un simple nom...? Par exemple, est-ce que cette progra semble logique pour vous (Awa, Heandel ^^) : - Code:
-
#include <stdio.h> #include <stdlib.h> //---Directive de préprocesseur. int main() { FILE* nom_du_pointeur = NULL; FILE* autre_pointeur = NULL; //---Double déclaration.
fopen nom_du_pointeur(fichier.txt,r+);
IF (nom_du_pointeur != NULL) { fopen autre_pointeur(fichier2.txt,w); IF (autre_pointeur != NULL) { /*Lecture du second fichier après ouverture du premier*/ } }
} Je vous le demande car chez moi, ça marche une fois sur deux...Et je sais pas ce qui foire... Est-ce le "FILE*" qui doit changer? | |
| | | krosk Maker confirmé Lv 7
Nombre de messages : 204 Age : 36
| Sujet: Re: La programmation Dim 14 Oct 2007, 18:12 | |
| Bah, d'après ma connaissance (limitée) du C, l'ouverture de plusieurs fichiers fait nécessairement intervenir plusieurs pointeurs, tous déclarés par FILE*.
Donc je ne vois pas d'aberations dans ton dernier code...
Mais je ne suis pas pro, hein. | |
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 14 Oct 2007, 19:17 | |
| C'est juste ce que je voulais savoir, merci Donc maintenant, je sais que c'est la là que se trouve mon erreur et ça me permettra de chercher dans la bonne voie... Et pas celle du 339...^^ | |
| | | Invité Invité
| Sujet: Re: La programmation Dim 14 Oct 2007, 19:23 | |
| J'ai pas compris ce que tu fait là O_o
pourquoi tu fais pas tout simplement FILE * monfichier = NULL;
monfichier = fopen("ololololo.mdr", "r" ); et ensuite tes if(monfichier != null)
j'ai pas trop compris en fait, désolé |
| | | krosk Maker confirmé Lv 7
Nombre de messages : 204 Age : 36
| Sujet: Re: La programmation Dim 14 Oct 2007, 19:33 | |
| Mmm... la syntaxe ne me parraissait pas familière aussi. En C on aurait écrit comme Heandel. Mais c'est du C++, non? => différence au niveau des syntaxes | |
| | | Invité Invité
| Sujet: Re: La programmation Dim 14 Oct 2007, 19:36 | |
| Non, c'est la même je crois, je programme également en C#, et c'est identique aussi. Même en PHP c'est pareil, sauf qu'on ne déclare pas le pointeur de fichier avec FILE *. |
| | | Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: La programmation Dim 14 Oct 2007, 20:10 | |
| - Heandel a écrit:
- J'ai pas compris ce que tu fait là O_o
pourquoi tu fais pas tout simplement FILE * monfichier = NULL;
monfichier = fopen("ololololo.mdr", "r" ); et ensuite tes if(monfichier != null)
j'ai pas trop compris en fait, désolé C'est exactement ce que j'ai fait... En plus c'est < fopen = monfichier > et pas l'inverse ^^ | |
| | | Contenu sponsorisé
| Sujet: Re: La programmation | |
| |
| | | | La programmation | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|