Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4686 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10
Auteur Sujet :

recrutement debutants et confirmés pour mini defis en c

n°834617
swixm
Posté le 27-08-2004 à 20:45:04  profilanswer
 

Reprise du message précédent :
bon mi je retire ma candidature  
parceque c'ets un peu le fouillie peut etre que j participerai au prochain  
 
PS: si t'en fais un autre dis pour les debutant faudra réaliser ca les dcriters sont  ca ca et ca enfin essaye de torganisé un peu plus )
voila c'es tout
a++ tout le monde


Message édité par swixm le 27-08-2004 à 20:45:15
mood
Publicité
Posté le 27-08-2004 à 20:45:04  profilanswer
 

n°834645
Joel F
Real men use unique_ptr
Posté le 27-08-2004 à 21:04:02  profilanswer
 

Taz a écrit :

on peux faire un chiffreur/déchiffreur base64 ?


 
J'en ai un en templatez si faut :sol:

n°834646
printf
Baston !
Posté le 27-08-2004 à 21:04:41  profilanswer
 

Taz a écrit :

on peux faire un chiffreur/déchiffreur base64 ?


 
C'est pas mal ça.
 
Il faut quelque chose de simple, qui ne nécessite que la bibliothèque standard et qui permette de s'exprimer.

n°834648
rider62
Posté le 27-08-2004 à 21:06:42  profilanswer
 

bon la ça part en sucette ya eu trop de bla bla
on ce fixe quelque chose et voila sinon ça va souler tous ça


Message édité par rider62 le 27-08-2004 à 21:08:02
n°834649
rider62
Posté le 27-08-2004 à 21:09:00  profilanswer
 

oué c'est pas mal un chiffreur/déchiffreur

n°834653
printf
Baston !
Posté le 27-08-2004 à 21:11:06  profilanswer
 

Encodeur/décodeur serait peut-être plus approprié comme terme [:aloy]
 
Enfin il me semble, non :??:


Message édité par printf le 27-08-2004 à 21:11:55
n°834656
Taz
bisounours-codeur
Posté le 27-08-2004 à 21:13:46  profilanswer
 

bien au contraire

n°834788
cris56
Posté le 27-08-2004 à 23:16:42  profilanswer
 

pour l'affichage, quels seraient les 64 symboles ? ( 0-9,A-Z,a-z ca fais que 62 :( )

n°834793
printf
Baston !
Posté le 27-08-2004 à 23:18:28  profilanswer
 

+ /
 
 
(et =)

n°834798
cris56
Posté le 27-08-2004 à 23:20:05  profilanswer
 

ouai, ca fera bizar

mood
Publicité
Posté le 27-08-2004 à 23:20:05  profilanswer
 

n°834800
printf
Baston !
Posté le 27-08-2004 à 23:22:22  profilanswer
 

Bizarre ou pas, c'est défini comme ça dans les RFC :D

n°834803
cris56
Posté le 27-08-2004 à 23:22:57  profilanswer
 

a ok désolé

n°834805
printf
Baston !
Posté le 27-08-2004 à 23:24:01  profilanswer
 
n°834808
cris56
Posté le 27-08-2004 à 23:30:00  profilanswer
 

merci pour les liens ;)

n°834810
printf
Baston !
Posté le 27-08-2004 à 23:31:00  profilanswer
 

Si y'a des insomniaques qui passent par ici, ça pourra toujours servir [:ddr555]

n°834837
pains-aux-​raisins
Fatal error
Posté le 28-08-2004 à 00:08:22  profilanswer
 

printf a écrit :

Si y'a des insomniaques qui passent par ici, ça pourra toujours servir [:ddr555]


les RFCs, toujours aussi imbuvables...  :sleep:

n°834942
blackgodde​ss
vive le troll !
Posté le 28-08-2004 à 01:50:47  profilanswer
 

sans limites de chiffres ?


---------------
-( BlackGoddess )-
n°834946
leneuf22
Posté le 28-08-2004 à 02:03:58  profilanswer
 

et hop, je m'inscris pour le chiffreur/déchiffreur de base64, c'est interessant (j'aurai appris quelque chose aujourd'hui...)
voilà un premier jet, j'ai pas trop chercher à optimiser le bousin mais ça marche (je me mets d'office 0 sur 20 pour les commentaires inexistants, désolé)
 
http://leneuf22.free.fr/base64.c
compilé en
gcc -Wall -W -pedantic -std=c99
 
edit: je vais même poster le code sur le forum tiens...

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4. #include <ctype.h>
  5. #include <stdbool.h>
  6. int action_prompt(void);
  7. void chiffre_base64(void);
  8. const unsigned char* uchar2base64(const unsigned char* const, const int);
  9. void dechiffre_base64(void);
  10. void init_base64_table_inverse(char* const);
  11. const unsigned char* base642char(const unsigned char* const, const char* const);
  12. inline bool isbase64(const int c) {
  13. return (isalnum(c) || c == '+' || c == '/' || c == '=');
  14. }
  15. int main(void) {
  16. int
  17.  choix;
  18. while((choix = action_prompt()) != 3) {
  19.  if(choix == 1)
  20.   chiffre_base64();
  21.  else
  22.   dechiffre_base64();
  23. }
  24. return EXIT_SUCCESS;
  25. }
  26. int action_prompt(void) {
  27. char
  28.  saisie[4],
  29.  *ret;
  30. int
  31.  choix;
  32. puts( "\n**************** BASE64 ****************\n"
  33.   "Sélectionnez l'action à effectuer :\n"
  34.   "1 - Chiffrer\n"
  35.   "2 - Déchiffrer\n"
  36.   "3 - Quitter\n"
  37.   "****************************************\n" );
  38. ret = fgets(saisie, sizeof saisie, stdin);
  39. choix = *saisie - '0';
  40. if(ret == NULL || saisie[1] != '\n' || choix < 1 || choix > 3) {
  41.  puts("\nAu revoir." );
  42.  exit(EXIT_FAILURE);
  43. }
  44. return choix;
  45. }
  46. void chiffre_base64(void) {
  47. int
  48.  c,
  49.  i=0;
  50. static unsigned char
  51.  car[3];
  52. puts("\n\nEntrez la chaîne à chiffrer :" );
  53. while((c = getchar()) != EOF && c != '\n') {
  54.  car[i] = (unsigned char)c;
  55.  if(++i == 3) {
  56.   i = 0;
  57.   printf("%s", uchar2base64(car, 3));
  58.  }
  59. }
  60. if(i) printf("%s", uchar2base64(car, i));
  61. puts("\n****************************************\n" );
  62. }
  63. const unsigned char* uchar2base64(const unsigned char* const car, const int nbcar) {
  64. static unsigned char
  65.  resultat[5];
  66. static const char
  67.  base64_table[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"};
  68. resultat[0] = base64_table[ car[0] >> 2 ];
  69. resultat[1] = (car[0] & 0x03) << 4;
  70. if(nbcar > 1) {
  71.  resultat[1] |= car[1] >> 4;
  72.  resultat[2] = (car[1] & 0x0F) << 2;
  73.  if(nbcar == 3) {
  74.   resultat[2] |= car[2] >> 6;
  75.   resultat[3] = base64_table[ car[2] & 0x3F ];
  76.  }
  77.  else
  78.   resultat[3] = '=';
  79.  resultat[2] = base64_table[ resultat[2] ];
  80. }
  81. else {
  82.  resultat[2] = '=';
  83.  resultat[3] = '=';
  84. }
  85. resultat[1] = base64_table[ resultat[1] ];
  86. return resultat;
  87. }
  88. void dechiffre_base64(void) {
  89. int
  90.  c,
  91.  i=0;
  92. bool
  93.  fin = false,
  94.  egal = false;
  95. static unsigned char
  96.  car[4];
  97. char
  98.  base64_table_inverse[1 << CHAR_BIT];
  99. init_base64_table_inverse(base64_table_inverse);
  100. puts("\n\n\nEntrez la chaîne à déchiffrer :" );
  101. while((c = getchar()) != EOF && c != '\n') {
  102.  if(c == '=')
  103.   egal = true;
  104.  if(!isbase64(c) || fin || (egal && c != '=')) {
  105.   puts("........... !!\nCeci n'est pas en base64 : au revoir." );
  106.   exit(EXIT_FAILURE);
  107.  }
  108.  car[i] = (unsigned char)c;
  109.  if(++i == 4) {
  110.   i = 0;
  111.   fin = egal;
  112.   printf("%s", base642char(car, base64_table_inverse));
  113.  }
  114. }
  115. if(i) {
  116.  puts("........... !!\nTu t'es foutu de moi, salaud :p" );
  117.  exit(EXIT_FAILURE);
  118. }
  119. puts("\n****************************************\n" );
  120. }
  121. void init_base64_table_inverse(char* const base64_table_inverse) {
  122. for(int c=0; c < 1<<CHAR_BIT; ++c) {
  123.  if(isalnum(c)) {
  124.   if(isalpha(c)) {
  125.    if(isupper(c))
  126.     base64_table_inverse[c] = c - 'A';
  127.    else
  128.     base64_table_inverse[c] = c - 'a' + 26;
  129.   }
  130.   else
  131.    base64_table_inverse[c] = c - '0' + 52;
  132.  }
  133. }
  134. base64_table_inverse[(size_t)'+'] = 62;
  135. base64_table_inverse[(size_t)'/'] = 63;
  136. base64_table_inverse[(size_t)'='] = 0;
  137. }
  138. const unsigned char* base642char(const unsigned char* const car, const char* const base64_table_inverse) {
  139. static unsigned char
  140.  resultat[4];
  141. char
  142.  base64_code[4];
  143. base64_code[0] = base64_table_inverse[car[0]];
  144. base64_code[1] = base64_table_inverse[car[1]];
  145. base64_code[2] = base64_table_inverse[car[2]];
  146. base64_code[3] = base64_table_inverse[car[3]];
  147. resultat[0] = (base64_code[0] << 2) | (base64_code[1] >> 4);
  148. resultat[1] = ((base64_code[1] & 0x0F) << 4) | ((base64_code[2] & 0x3C) >> 2);
  149. resultat[2] = ((base64_code[2] & 0x03) << 6) | base64_code[3];
  150. return resultat;
  151. }


 
edit 2 : tazification :jap: et quelques modifs


Message édité par leneuf22 le 29-08-2004 à 01:02:22
n°834951
blackgodde​ss
vive le troll !
Posté le 28-08-2004 à 02:35:34  profilanswer
 

    while((choix = action_prompt()) != 3) {  
        if(choix == 1)  
muh ?


---------------
-( BlackGoddess )-
n°834952
leneuf22
Posté le 28-08-2004 à 02:38:11  profilanswer
 

    puts("\n**************** BASE64 ****************" );  
     puts("Sélectionnez l'action à effectuer :" );  
     puts("1 - Chiffrer" );  
     puts("2 - Déchiffrer" );  
     puts("3 - Quitter" );  
     puts("****************************************\n" );  
 
tant qu'il veut pas quitter, on demande à l'utilisateur ce qu'il veut faire...
il est ou le priblème ?

n°834954
blackgodde​ss
vive le troll !
Posté le 28-08-2004 à 02:41:58  profilanswer
 

fiou dsl il est tard je fatigue :p


---------------
-( BlackGoddess )-
n°834955
leneuf22
Posté le 28-08-2004 à 02:43:56  profilanswer
 

Ouais c'est pas des heures ça...
'fin bon, c'est vrai que si j'avais mis des constantes ça aurait été plus explicite
 
sur ce bonne nuit...

n°834968
Joel F
Real men use unique_ptr
Posté le 28-08-2004 à 09:26:00  profilanswer
 

[:le kneu] c'est ce que je redoutais ...

n°834969
Taz
bisounours-codeur
Posté le 28-08-2004 à 09:27:15  profilanswer
 

1)
     static char  
      base64_table[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"};
 
 
oh que c'est pas beau ça, il manque un gros const
 
2)
(unsigned char)'+'
 
superbe cast inutile. cast en size_t
 
3)
 puts("\n**************** BASE64 ****************" );  
     puts("Sélectionnez l'action à effectuer :" );  
     puts("1 - Chiffrer" );  
     puts("2 - Déchiffrer" );  
     puts("3 - Quitter" );  
     puts("****************************************\n" );
 
5 puts alors que tu peux tout faire avec un seul  
 
5) certaines fonctions devraient être statique
 
6) moi je quitte toujours quoi que ce soit pas un CTRL+D. ton menu de saisie il va en chier terrible
 
7) ta fonction inline est au choix :
- mal déclarée
- déclarée à un endroit qui empêche les optimisations sur 2 nombreux compilateurs

n°834974
cris56
Posté le 28-08-2004 à 09:56:47  profilanswer
 

oui, il fallait au moins que sa definition soit avant le main, c'est ca?
 
et en c99 ya un type bool, autant s'en servir plutot qu'un int à valeur booleenne

n°834992
leneuf22
Posté le 28-08-2004 à 11:23:58  profilanswer
 

Joel F> précise ta pensée...
J'ai ptet pas choisi la meilleure solution en prenant les caractères par paquet de 3, j'aurais pu faire ça à la volée ça aurait été un peu plus court c'est vrai... si c'est ce que tu voulais dire
 
Taz>
1) oups... !
2) inutile oui, j'ai pas maté la table ascii avant d'écrire ça...
ok pour le size_t, mais je faisais la supposition que la valeur de '+' pouvait être négative. même si c'est faux vu que dans la table ascii standard; mais dans ce cas le cast direct en size_t aurait donné n'importe quoi
3) je sais... il était tard !
4) yen a pas ?
5) tu peux préciser stp ? je vois pas trop à quoi ça servirait
6) mettre EOF dans stdin ça ne veut pas dire que le prog doit se fermer...
pour fermer je vois pourquoi tu n'utilises pas CTRL+C qui est fait pour ça contrairement à CTRL+D
(en tous cas c'est vrai que je dois tester le retour de fgets)
7) oups... :jap:
 
cris56> c'est vrai qu'un bool aurait été parfait...
 
en tous cas merci pour vos remarques


Message édité par leneuf22 le 28-08-2004 à 14:40:42
n°835137
Kristoph
Posté le 28-08-2004 à 15:51:42  profilanswer
 

leneuf22 a écrit :

et hop, je m'inscris pour le chiffreur/déchiffreur de base64, c'est interessant (j'aurai appris quelque chose aujourd'hui...)
voilà un premier jet, j'ai pas trop chercher à optimiser le bousin mais ça marche (je me mets d'office 0 sur 20 pour les commentaires inexistants, désolé)


 
De toute façon, le commentaires ça pue et ça sert à rien :o

n°835299
vanilla
datoune's revival
Posté le 28-08-2004 à 21:48:04  profilanswer
 

[:drapal]
 
Je m'inscris pas, je veux juste lire du code pour m'entrainer :o
 
Je suis une quiche en C :o


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
n°835424
Tamahome
⭐⭐⭐⭐⭐
Posté le 29-08-2004 à 11:20:01  profilanswer
 

HelloWorld a écrit :

Bah faut arrêter pour la taille. Les plus grosses variations seront dues au compilo utilisé. Faut pisser pas mal de code pour faire 1Ko de binaire.
Mon critère serait le moins de lignes de codes en utilisant la STL, boost, ...
1 appel de fonction = 1 ligne de code (pour donner le droit de faire 1 ligne par argument pour rendre lisible). Genre si le mec fait une boucle for pour calculer un max => 4 / lignes face à 1 ligne pour std::max_element...


 
la STL ? en C ? tu confonds avec le C++...


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°835431
printf
Baston !
Posté le 29-08-2004 à 11:31:13  profilanswer
 

Faut suivre un peu :o

n°835501
Max2000
Posté le 29-08-2004 à 14:51:01  profilanswer
 

il faut quoi comme logiciel pour coder en C :D ?
 
j'ai un serveur avec Linux dessus donc je pourrais compiler (vu que ya GCC) ?

n°835503
printf
Baston !
Posté le 29-08-2004 à 14:52:30  profilanswer
 

Coder sur un serveur c'est une bonne idée ça :o
 
Ben sinon il te faut un éditeur de texte et un compilateur.
Le reste n'est pas indispensable quand on débute, mais devient très vite pratique (débogueur, make, gestion de révisions, etc.).


Message édité par printf le 29-08-2004 à 14:53:54
n°835505
Taz
bisounours-codeur
Posté le 29-08-2004 à 14:58:49  profilanswer
 

VFS powa : emacs + tramp via ssh et c'est tout bon

n°835506
vanilla
datoune's revival
Posté le 29-08-2004 à 15:00:33  profilanswer
 

Tiens ce serait marrant de faire un client/serveur de je sais pas quoi en C histoire de voir un peu les sockets et tout ça :o


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
n°835518
leneuf22
Posté le 29-08-2004 à 15:18:57  profilanswer
 

Si ça vous branche pas plus que ça la base64 je suis partant, mais il serait temps de se décider... :bounce:

n°835526
Taz
bisounours-codeur
Posté le 29-08-2004 à 15:32:26  profilanswer
 

attends, t'as loosé en balancant ta daube directement ... il est fini le concours :o

n°835533
leneuf22
Posté le 29-08-2004 à 15:40:00  profilanswer
 

héhé, au moins j'aurai eu le prix de la rapidité
 
alors trouvons autre chose
ya un truc que j'avais trouvé pas mal à faire :
l'utilisateur entre une série de caractères de longueur inconnue, par exemple "abcd"
et le programme sort toutes les possibilités :
abcd
abdc
dcba
etc...
 
bonus de difficulté : le faire de manière itérative


Message édité par leneuf22 le 29-08-2004 à 15:41:06
n°835536
Taz
bisounours-codeur
Posté le 29-08-2004 à 15:41:26  profilanswer
 

cai nul : on a dit qu'on donnait l'algo :o

n°835540
leneuf22
Posté le 29-08-2004 à 15:45:22  profilanswer
 

ben j'en sais rien moi, il devait pas nous scanner ses exos l'autre ?

n°835548
vanilla
datoune's revival
Posté le 29-08-2004 à 15:55:15  profilanswer
 

j'ai une petite question (qui ne mérite pas un topic) : j'ai vu dans un magazine ce code :
 

Code :
  1. /* premier.c */
  2. short int  cava = 1;
  3. static short int matin = 1;
  4. void dire_bonjour (void/* Définition de la fonction */
  5. {
  6. if (matin == 1)
  7. printf ("Bonjour\n" );
  8. matin = 0;
  9. return 0;
  10. }
  11. /* second.h */
  12. void dire_bonjour (void);  /* Prototype */
  13. extern short int cava;  /* cava est défini dans premier.c */
  14. /* second.c */
  15. #include "second.h"
  16. int main (void)
  17. {
  18. dire_bonjour ();
  19. cava = 0;
  20. return 0;
  21. }


 
Ils ont pas oublié un #include <stdio.h>  dans le second.c ou le premier.c :??:
je croyais qu'il fallait déclaré la fonction avant de l'appeler...
 
Pourtant le code compile sans erreur et fonctione ?


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
n°835550
leneuf22
Posté le 29-08-2004 à 15:57:58  profilanswer
 

gcc -Wall

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10

Aller à :
Ajouter une réponse
 

Sujets relatifs
questions pour débutantsdébutants
[Recrutement] d'un programmeur pour le Mod D-Day On Omaha Call of DutyMini moteur de recherche sous access
Recrutement de quelqu'un qui est bon en PHPMini disc sony
mini messages sous guppyrecherche d'une fonction ou d'un mini prog sur excel!
Livre PHP pour les débutants ?un mini-prog qui ouvre 2 applis
Plus de sujets relatifs à : recrutement debutants et confirmés pour mini defis en c


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)