Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercices pour débutants en C

Au menu : zSommeChiffres (nombres, algo)

29 décembre 2009 à 15:32:59

Je ne sais pas si c'est un foutage de gueule, mais le post de pernet est son premier sur le forum.
Donc -> votre témoignage (cher monsieur qui soit disant a 55 ans) n'est pas très crédible.
  • Partager sur Facebook
  • Partager sur Twitter
29 décembre 2009 à 18:26:33

Étant un zéro, je suis bien content que ce site existe, les réponses qu'on y trouve sont très instructive, donc en effet, ce témoignage me semble peu crédible.
  • Partager sur Facebook
  • Partager sur Twitter
31 décembre 2009 à 19:38:09

Il faut proposer une solution pour l'exercice courant (qui a duré 4 mois o_O ), pour pouvoir poursuivre et donner d'autres exercices ! En faite, c'est le seul sujet dans le forum langage C qui propose de belles choses qui nous poussent à réfléchir et à pratiquer le C.
(En même temps je donne ma solution pour cet exercice :-° )

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

void findInFile(FILE *file, char *s);

int main(int argc, char *argv[])
{
    FILE *file = NULL;

    if (argc != 3)
        exit(EXIT_FAILURE);

    file = fopen(argv[2], "r");
    if (file == NULL)
        exit(EXIT_FAILURE);

    findInFile(file, argv[1]);
    fclose(file);

    return 0;
}

void findInFile(FILE *file, char *s)
{
    int c = 0, k = 0, i = 0;
    int l = 1, p = 0, n = 0;

    while ((c = fgetc(file)) != EOF)
    {
        p++;
        if (c == s[0] && !isalnum(k))
        {
            i = 1;
            while ((c = fgetc(file)) == s[i])
                i++;
            if (i == strlen(s) && !isalnum(c))
               printf("Occurrence %d -> ligne %d, colonne %d\n", ++n, l, p);
            p += i;
        }
        if (c == '\n')
            l++, p = 0;
        k = c;
    }
}
  • Partager sur Facebook
  • Partager sur Twitter
31 décembre 2009 à 20:55:08

Malheureusement, HighTam, il a été dit que sur ce sujet, il n'y aurait pas de corrections... Tu as le droit d'insulter Arthurus :p

Plus sérieusement, tu as raison, c'est bien triste d'avoir un topic en post-it si mort :'(

J'ai essayé de relancer Eusébus et shareman, sans réponses...

Je me vois mal proposer des exercices à l'arrache, mais bon...
Il y a une demande, c'est sur! Alors il va falloir que quelqu'un se réveille!

Pour 2010 ;)
  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
31 décembre 2009 à 21:01:44

Oui ba faut pas pleurer non plus.
Il y a eu de magnifique contributions, il suffit d'en choisir une, et la définir comme solution. (je ne suis pas le messi non plus).
En ce qui me concerne, on a beaucoup critiqué l'exo que j'ai posé, car il est soit trop difficile aux yeux de quelques uns, soit trop évident pour d'autre.
Donc bon... Je veux bien penser à un exo pour vous !! Mais voilà, je ne sais pas si mon style plaît à tout le monde.
  • Partager sur Facebook
  • Partager sur Twitter
31 décembre 2009 à 21:07:41

Si on n'a pas de corrigé pour cet exercice, ce n'est pas la fin du monde (et la preuve l'année 2010 :p ).
On peut le laisser sans correction et proposer un autre, et en même temps si quelqu'un aura le courage, il peut donner une correction, c'est bien simple :)
  • Partager sur Facebook
  • Partager sur Twitter
31 décembre 2009 à 21:27:55

Arthurus, c'était bien sur une blague!

On ne pleure pas! D'ailleurs, tes contributions sur les autres sujets suffisent!

Si tous les membres aussi avancés que toi étaient aussi prolifiques, ce serait TOP!(en plus on en supprime!... :-° )



  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
31 décembre 2009 à 21:32:02

Citation : GurneyH

Arthurus, c'était bien sur une blague!


Je sais :lol:
quand j'ai dit qu'il fallait pas pleurer, c'était pour rire aussi ;)
Sinon merci pour ce que tu as dit, ça fait plaisir :D

Citation : GurneyH

(en plus on en supprime!... :-° )


haha, j'adore
  • Partager sur Facebook
  • Partager sur Twitter
1 janvier 2010 à 13:21:17

Citation : Arthurus

Oui ba faut pas pleurer non plus.
Il y a eu de magnifique contributions, il suffit d'en choisir une, et la définir comme solution. (je ne suis pas le messi non plus).
En ce qui me concerne, on a beaucoup critiqué l'exo que j'ai posé, car il est soit trop difficile aux yeux de quelques uns, soit trop évident pour d'autre.
Donc bon... Je veux bien penser à un exo pour vous !! Mais voilà, je ne sais pas si mon style plaît à tout le monde.


Pourquoi ne pas créer deux "parties", je m'explique:

- Une première partie pour les débutants, donc des exercices pas compliqué où la difficulté s'accroît de plus en plus à chaque exercices (En restant assez simple)

- Une autre partie plus complexe, ou l'on commence à la difficulté moyenne et au bout de 5 exercices (d'échauffement? :lol: ) pour ensuite arriver à la difficulté difficile.

Mais pour cela il faudrait que quelqu'un (ou plusieurs personnes) reprennent ce topic en mains.
  • Partager sur Facebook
  • Partager sur Twitter
1 janvier 2010 à 22:39:21

@realmagma: pour 2010
Je vais relancer shareman...
J'ai en tête de proposer des exercices, mais pas seul!

Ton idée, d'exercices pour différents niveaux est très bonne! Seulement, ça demande un travail considérable!
On pourrait proposer un exercice du genre le jeu des allumettes.
tout vas bien je ne peux pas inserer de liste...), Ah, si, j'ai tous les smileys sur une page(merci PHP!...)

Donc, c'est un parcours du combattant pour écrire sur ce forum...
Pour en revenir à ton idée, realMagma, je vais contacter shareman, pour avoir son aval... A mon avis, il préfèrera voir vivre le topic qu'il a créé et soutenu pendant un an!
L'idée de former une équipe, est bonne, et je vais m'y employer dès demain!(toujours pas de smileys...)

Ce topic va revivre dans tous les cas!


  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
2 janvier 2010 à 10:15:36

Citation de GurneyH:

Citation : GurneyH

@realmagma: pour 2010
Je vais relancer shareman...
J'ai en tête de proposer des exercices, mais pas seul!

Ton idée, d'exercices pour différents niveaux est très bonne! Seulement, ça demande un travail considérable!
On pourrait proposer un exercice du genre le jeu des allumettes.
tout vas bien je ne peux pas inserer de liste...), Ah, si, j'ai tous les smileys sur une page(merci PHP!...)

Donc, c'est un parcours du combattant pour écrire sur ce forum...
Pour en revenir à ton idée, realMagma, je vais contacter shareman, pour avoir son aval... A mon avis, il préfèrera voir vivre le topic qu'il a créé et soutenu pendant un an!
L'idée de former une équipe, est bonne, et je vais m'y employer dès demain!(toujours pas de smileys...)

Ce topic va revivre dans tous les cas!



=> Oui se serait super :) .

Mai j'ai aussi une autre idée, pourquoi ne pas supprimer ce topic (Car certaines personnes polluent ce topic "Pourquoi coode::Block ne compile pas, pourquoi dans mon code des 'moyenneTableau' ma variable truc réagit comme ça, pourquoi .... ?" :colere2: ) et en refaire un autre en nommant des "(Co)Dirrigeants" sur le nouveau topic, Je m'explique: :D

- Les "(co)dirrigeants" demandent aux modérateurs de supprimer ce topic et de recréér un post-it portant le même nom que celui-ci: (Pour éviter de s'embrouiller on va nommer topic1 = ce topic là et par topic2 = Le nouveau)

- On copie/colle (ou arrange) le premier post de Sharman du topic1 (avec le système de tableaux) et vous mettez à la suite dans le topic2, d'autres tableaux ayant pour titre: Exercices faciles, moyens, difficiles (vous choisirez les noms ^^ )

- Il y aura donc le même système du topic1 pour l'ennoncé de l'exercice/correction. (Le posteur de l'ennoncé mettra lui même en ligne SA (SES)PROPRE(S) CORRECTION(S) ou celui d'un autre s'ils sont tous les deux daccord.

- Les (co)dirigeants auront un pouvoir de modérateur seulement sur le topic2, en supprimant tous les posts des zéros sur le topic. En effet, il n'y aura que les posts des (co)dirigeants sur le topic, qui éditeront leur premier post (le système de tableaux) à chaque nouveau exercice. Celui qui post l'ennoncé, post la correction de son exercice ce qui signifie que seulement les (co)dirigeants pourront écrire dans le topic2. (Les modérateurs/administrateurs du siteDuZero devront en quelque sorte "donner" le droit aux (co)dirigeants de supprimer des messages du topic2 si par exemple un zéro post un message ici (voir verrouiller le topic pour qu'aucuns autres membres ne puissent écrire dedans).
Comme ICI . Il n'y aura donc que la correction, il n'y aura pas de commentaires comme celui de noob4ever, de Shareman juste après ETC)

- Si un zéro désire montrer son code source, il devra créer un topic dans le furum "Langage C" autre que dans le topic2.


J'ai essayé d'être le plus claire possible, qu'en penssez-vous?
Cordialement; Realmagma :) .
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2010 à 11:26:01

Mouais, pas trop, pourquoi on ne pourrait pas poster son code sur ce topic? :-°
  • Partager sur Facebook
  • Partager sur Twitter
- Il y a un chemin vers chaque sommet, même le plus haut -
2 janvier 2010 à 12:13:33

Citation : artificier59

Mouais, pas trop, pourquoi on ne pourrait pas poster son code sur ce topic? :-°



Parcequ'on à déjà posté pleins de messages, je trouve que ça fait un peu brouillon. Clic ici

Avec ma méthode se sera propre et claire net et ... précis :D
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2010 à 15:00:38

Je suis également pour ne pas poster directement de codes(le système d'envoi à réponse me semble approprié.).
Après, les avis divergent sur ce point. En postant les codes, les autres membres peuvent commenter, corriger...
Dans le même ordre d'idées, une correction est bien nécessaire?...

Pas si simple...
  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
2 janvier 2010 à 15:04:55

Alors ça avance cette histoire de reprendre le topic en main ou pas ?
T'as contacté shareman ? les modos ?
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2010 à 21:16:03

<...>

edit: je me suis mis un coup de pied aux fesses. :pirate:



  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
2 janvier 2010 à 21:35:55

Citation : GurneyH

Si une personne motivée souhaite le faire, c'est possible, et je suis disponible...


Ba écoute, si personne ne se dévoue, moi je veux bien le faire.
Mais je le préviens, je ne ferai pas d'exercices pour ultra super débutants. Je juge que le tuto du site comporte assez d'exos pour débutants. Et puis les exos qui sont déjà passés dans ce topic sont assez suffisants.
Donc voilà, si c'est moi qui reprend le topic, ce sera des exos pour des gens qui manipulent assez bien les bases.
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2010 à 22:01:59

merci comment entrer en possession des exercices
merci
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2010 à 22:05:57

Citation : Nadineric

merci comment entrer en possession des exercices
merci


C'est à dire ?
  • Partager sur Facebook
  • Partager sur Twitter
2 janvier 2010 à 22:39:02

Ben moi je trouve ça plus convivial de poster son code, sur le forum, de voire ce qui va pas :)

Par contre, si les exos se compliquent, moi je pourrai plus les faire, déjà, zGrep, j'ai eu un mal fou, et y m'a pris une semaine et demi :(
  • Partager sur Facebook
  • Partager sur Twitter
- Il y a un chemin vers chaque sommet, même le plus haut -
2 janvier 2010 à 22:46:03

Ba tant mieux :)
Je suppose que ça t'a été plus utile qu'un exo que tu aurais pu faire en moins d'une heure
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2010 à 6:33:56

J'ai réfléchi, et finalement je vais commencer par proposer un exercice.
Il va être difficile de satisfaire tous les niveaux, mais au rythme d'un exercice tous les quinze jours, il y a moyen de voir des exercices de niveau varié.
Si vous avez des idées d'exercices vous pouvez me MP, pour qu'on s'organise.

Titre : z0zéro
Mois : Janvier 2010
Sujet : Ecrire un nombre en toutes lettres.
Connaissances requises : Partie 2 : [Théorie] Techniques avancées du cours de C.
Objectif

Le but de cet exercice est d'écrire en toutes lettres un nombre entier donné(en base 10) sous forme de chiffres.

Exemples:
0 -> zero (on ne tiendra pas compte des accents)
71 -> soixante et onze
81 -> quatre-vingt-un
2 300 -> deux mille trois cents
2 301 -> deux mille trois cent un
400 000 000 -> quatre cents millions

L'une des difficultés de l'exercice est de gérer les multiples exceptions.

Vous trouverez l'ensemble de ces exceptions ici. Je propose qu'on ne tienne pas compte de la recommandation de 1990.

D'autres précisions sur les règles : Les nombres sur Wikipédia ou .
Une applet qui pourra aider en cas de doutes.

On se fixera une limite à 999 999 999 999. Pour ceux qui sont moins à l'aise, vous pouvez vous contenter d'une à limite à 99 dans un premier temps. Cela vous donnera peut-être des idées sur la manière d'aborder la suite. ;)

Notre fonction de traduction aura pour prototype:

char *z0zero(char *src, char *dst);


Un exemple de code l'utilisant


#include <stdio.h>

char *z0zero(char *src, char *dst)
{
    ...
    return dst;
}

int main(void)
{
    char *s = "42";
    char res[256];

    printf("%s -> %s\n", z0zero(s, res));

    return 0;
}



et en sortie

42 -> quarante-deux


Bon courage. ;)


edit : limite à 99 pour ceux qui le désirent.
  • Partager sur Facebook
  • Partager sur Twitter
Zeste de Savoir, le site qui en a dans le citron !
3 janvier 2010 à 9:41:46

Citation : GurneyH

J'ai réfléchi, et finalement je vais commencer par proposer un exercice.
Il va être difficile de satisfaire tous les niveaux, mais au rythme d'un exercice tous les quinze jours, il y a moyen de voir des exercices de niveau varié.



Super ! C'est l'occasion de te souhaiter une bonne année deux mille dix ;)
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2010 à 13:17:36

Supprimé par la censure ...
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
3 janvier 2010 à 13:31:39

Merci GurneyH pour l'initiative ;)

Pouet_Forever > Bravo ;) Je vais essayer de comprendre tout ça ^^

EDIT : J'arrive pas à comprendre pourquoi ton code marche :-° Tu pourrais expliquer un peu plz ?
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2010 à 14:15:42

Normalement le preprocesseur n'est utilisé que pour factoriser le code, et le rendre plus joli.
Le preprocesseur n'est qu'un accessoire pour le langage C
Pouet_forever programme en preprocesseur :lol::lol::lol::lol:
Si on te demande le langage que tu maitrises le plus, tu répondras : le preprocesseur qui va avec le C.
Tu vas tout révolutionner toi :lol:
Franchement bravo !! j'sais pas comment tu fais.
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2010 à 14:32:25

Citation : Arthurus

Pouet_forever programme en preprocesseur :lol::lol::lol::lol:
Si on te demande le langage que tu maitrises le plus, tu répondras : le preprocesseur qui va avec le C.



:lol::lol::lol:

Je suis bluffer, j'aurais pas cru qu'on pouvait faire autant avec le préprocesseur :-°
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2010 à 14:52:09

Je suis en cours de rédaction d'un tuto qui explique tout ça ^^
Je l'ai presque fini il devrait sortir bientôt ;)

Pour tout expliquer ce serait assez long lol
Je te renvoie ici pour quelques explications (c'est pas le même code mais c'est le même principe) : http://www.siteduzero.com/forum-83-471 [...] html#r4494358
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2010 à 15:09:56

Citation : Pouet_forever


Dîtes moi ce que vous en pensez :)



Rien de bien. C'est très très lourd. Le préprocesseur n'est pas fait pour faire ce que tu as fait. Pourquoi écrire avec le préprocesseur ce qu'on peut programmer dans le langage lui-même et en plus beaucoup plus simplement ?
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2010 à 15:10:40

X macros ;) ils arrivent!! faites gaffe, vous pourrez plus vous en passer x) (hein pouet? )
  • Partager sur Facebook
  • Partager sur Twitter