Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Exercices] Venez vous entraîner !

(v2)

    2 mars 2014 à 15:30:48

    (c'est vrai)

    Ben vous pouvez écrire un code qui corrige le problème ? :D

    -
    Edité par gbdivers 2 mars 2014 à 15:32:03

    • Partager sur Facebook
    • Partager sur Twitter
    Pour poser des questions ou simplement discuter informatique, vous pouvez rejoindre le discord NaN.
      3 mars 2014 à 11:10:53

      ؛(ɹʇdןןnu =¡q && ɹʇdןןnu=¡ɐ && q =¡ ɐ)ʇɹǝssɐ +

      ˙ıɔı ɹǝpıɐ snou ʇıɐɹɹnod ʇɔıɹʇsǝɹ ıs ssnןd sıɐs ǝu ǝظ ʇǝ

      (www.fliptext.org)

      Ceci dit, j'ai un vague souvenir d'un topic à quizz -- si quelqu'un a encore le lien sous le coude ? Cette question y aurait plus sa place je pense.

      • Partager sur Facebook
      • Partager sur Twitter
      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
        3 mars 2014 à 11:31:24

        Il me semblait aussi qu'il y avait un quizz, mais je ne l'ai pas trouvé non plus

        Je n'arrive pas à utiliser fliptext :(

        La réponse proposée par lmghs est qu'il faut ajouter un assert, pour vérifier que les pointeurs ne sont pas null et qu'ils ne pointent pas sur la même adresse :

        int set_and_add_values(int* a, int* b) {
            assert(a != b && a != nullptr && b != nullptr);
            *a = 1;
            *b = 2;
            return (*a + *b);
        }
        
        void foo(int* a, int* b) {
            int value = set_and_add_values(a, b);
            assert(value == 3);
        }

        Le problème de nullptr est un classique, la règle est de toujours tester si un pointeur n'est pas null avant de l'utiliser.

        L'autre problème est plus pernicieux (ici, il était facile à identifier, mais ça ne sera pas forcement le cas si on utilise une référence, un tableau, etc). C'était effectivement ce que je voulais signaler et qui est moins connu que les pointeurs null, c'est le problème d'aliasing lorsque l'on utilise des pointeurs, c'est-à-dire le cas où l'on manipule sans le savoir la même variable.



        -
        Edité par gbdivers 3 mars 2014 à 11:32:01

        • Partager sur Facebook
        • Partager sur Twitter
        Pour poser des questions ou simplement discuter informatique, vous pouvez rejoindre le discord NaN.
          3 mars 2014 à 12:32:56

          gbdivers a écrit:

          Il me semblait aussi qu'il y avait un quizz, mais je ne l'ai pas trouvé non plus

          Got it ! http://fr.openclassrooms.com/forum/sujet/atelier-quiz-question-pour-un-champion-c.
          • Partager sur Facebook
          • Partager sur Twitter
          Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
            6 mars 2014 à 11:22:32

            Got it too

            -
            Edité par Sogekiing 7 mars 2014 à 11:41:05

            • Partager sur Facebook
            • Partager sur Twitter
            Never give a sword to a man who can’t dance -- Confucius
              22 mars 2014 à 20:52:58

              Solution pour l'interpréteur BF

              [mode alabour=ON] / Lien de l'exercice : http://goo.gl/Afd0xQ

              Principe KISS ! (bon, par contre, y'a un p'tit fail au niveau de l'instruction de sortie)

              #include <iostream>
              #include <fstream>
              using namespace std; // Ergonomie "maximum"
              int main(){
                  // Déclaration et initialisation des variables "principales"
                  char v[30000], l(' ');
                  int i = 29999;
                  string fName(" ");
                  while (i >= 0) { v[i] = 0; i--; }
              
                  i++; // Préparation du "pseudo-pointeur"
              
                  cout << "EXERCICE CPP - INTERPRETEUR BRAINF." << endl;
                  cout << "Entrez le nom du fichier TXT source (sans extension)" << endl;
                  cin >> fName;
                  cout << endl << "> ";
                  string ext(fName+".txt"); // Rapide concaténation
                  ifstream iStr(ext.c_str()); // On ouvre le flux de fichier
                  if (iStr) {
                      while (iStr.good()) { // Tant que le fichier est "bon" à la lecture, on lit
                          iStr.get(l);
                          switch (l) {
                              // Instructions de déplacement du pseudo-pointeur
                              case '<': if (i != 0) { i--; } break;
                              case '>': if (i != 29999) { i++; } break;
              
                              // Instructions de dé/incrémentation
                              case '+': v[i]++; break;
                              case '-': if (v[i] > 0) { v[i]--; } break;
              
                              // Instructions d'entrée/sortie de valeurs
                              case '.': cout << v[i]; break;
                              case ',': cin >> v[i]; break;
                          }
                      }
                  } else { // Si le fichier est illisible/introuvable
                      cout << endl << "ERREUR : Flux de fichier inutilisable" << endl;
                  }
                  cout << endl;
                  return 0;
              }

              Donc voilà, je pense que c'est tellement simple que ça parle de soi-même.

              Par contre, deux cailloux : les boucles ([ et]) ne sont pas prises en compteet le dernier caractère "printé" est sorti deux fois (pas sûr pour les autres instructions).

              Et oui, je suis (super) en retard sur le topic mais bon. M'a fallu quelques heures pour trouver une solution à peu près compréhensible :-°

              Voili voilou, y'a les deux points sus-nommés à "améliorer", et on pourrait ergonomiser encore un peu plus, mais bon.

              @plop'

              • Partager sur Facebook
              • Partager sur Twitter
              Polop all! =D C'moi, Sasukz, aussi connu sous les noms de... Algorithm, Evenkore, Ekeryvinz, Cyclonek, Nocturns, -K3yboard, etc.
                1 avril 2014 à 10:05:13

                Bonjour,

                je sais que la critique est facile mais l'art est difficile, cependant j'aurais quand même une requête:

                serait-il possible de créer une section du forum pour les exos, 1 sujet post-it vérouillé pour le sommaire des exercices et 1 sujet par exercice plutôt qu'un méga long sujet plutôt bor.... ^^ ? Ce n'est pas très compliqué à réaliser par rapport au gain de lisibilité et de clarté. Mtnt s'il y a une bonne raison ne lisez pas plus loin et faites comme si vous m'aviez mis un pain et que je me taisais lol

                Je propose ça seulement car je suis parti de la constatation qu'il est compliqué de retrouver les exos, même avec les liens et que les discussions se mélangent complètement. En fait voila, j'ai voulu faire l'exercice sur le polymorphisme "Le Site du Zéro", je clique sur le lien, Ctrl+F "site du zero" => 0 résultats.... je cherche plusieurs pages avant, rien non plus, il n'y a que la solution.....

                Alors probablement que l'exercice est là, quelque part, attendant que je le trouve, mais c'est justement par soucis de clarté que je dis ça :)

                Voila c'était tout, bien évidemment je sais que avez aussi votre vie, que vous n'avez pas forcément le temps, mais que vous faites malgré tout un boulot formidable, avec beaucoup d'investissement et surtout très pédagogique, ça c'est génial. Donc mon but n'est pas de décourager en pointant ce qui ne va pas, mais plutôt d'essayer de faire une critique constructive ^^ Merci encore

                • Partager sur Facebook
                • Partager sur Twitter
                Dans le doute: Reboot !!     ლ(ಠ益ಠ)ლ
                  1 avril 2014 à 20:18:18

                  Les exercices auront "prochainement" leur propre module sur le site à part du forum (intégration au cours/tuto). Il faudra voir à ce moment là voir si il est possible d'importer ces exercices vers ce nouveau système. Je pense que tu peux quand même soumettre l'idée aux admins du site sur Twitter, ça ne coute rien.

                  Pour l'histoire: 

                  De mémoire, la possibilité de rédiger des exercices sous forme de tutos avait été demandée en 2007 par Nanoc (depuis devenu co-auteur du cours sur le C++). Ca avait été refusé et Nanoc avait alors créé le premier sujet d'exercice C++ en 2008. Depuis ce temps, quelque part entre 2012 et aujourd'hui et d'après la Roadmap du site, il est prévue d'intégrer "quiz, exercices et devoirs corrigés entre étudiants à la plateforme de cours" (voir dans le paragraphe "Les nouveautés à venir").

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
                    2 avril 2014 à 9:20:24

                    Ah ok c'est super tout ça, merci de toutes ces précisions. ça fait presque.... politique tout ça, avec une décision qui peut prendre des années avant d'être entérinée par une commission de 5 membres désignés par vote, validée par divers forumulaires de toutes les couleurs et finalement mise en place lol

                    Mais bon je comprends, si c'est toute une structure qui doit être montée autant faire les choses bien et après tout intégrer d'un coup plutôt que faire les choses par petits bouts et qu'il faudra tout reprendre par la suite :)

                    Ok pour le lien Twitter, oui ça ne coûte rien (à part créer mon compte Twitter car je n'en ai pas, éh non lol)

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Dans le doute: Reboot !!     ლ(ಠ益ಠ)ლ
                      3 juin 2014 à 21:19:42

                      Bonsoir,

                      J'ai pris le temps de revoir en grande partie la solution de l'exercice Crypto 2 : Le chiffre de Vigénère :

                      - précédente solution

                      - nouvelle solution

                      Cette nouvelle solution en C++11 introduit sans excès quelques nouveaux concepts (std::begin, std::end, std::forward).

                      N'hésitez pas à me faire part de vos remarques voir même à forker la solution. Je rédigerai éventuellement une nouvelle description dans un deuxième temps.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
                        9 juin 2014 à 20:44:46

                        Bonjour, travailler "les pointeurs de classes"
                        Le groupe concerné est un groupe de débutant ayants au maximum appris jusqu'au chap 6 deuxième partie de c++.
                        L'énoncé est :
                        • créer une classe
                        • lui donner un objet
                        • pointer vers cet objet
                        • utilisez une copie d'une classe
                        Merci.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 juin 2014 à 21:19:53

                          C'est trop vague.

                          Ecrire une classe matrice, sans recourrir à des conteneurs en sous-main, serait un chouilla plus précis.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                            28 septembre 2014 à 5:39:09 - Message modéré pour le motif suivant : Toute forme de publicité est interdite


                              13 octobre 2014 à 17:41:18

                              Bonjour, Il y a des liens qui ne renvoie pas faire la bonne section du sujet, du coup c'est la galère pour trouver l'énoncer que l'on souhaite et les solutions aussi. 

                              Est-il prévu que ce soit corrigé ? Merci

                              NB : Ou alors spécifier le numéro de page :) 

                              -
                              Edité par r-christopher 13 octobre 2014 à 17:43:04

                              • Partager sur Facebook
                              • Partager sur Twitter
                                15 octobre 2014 à 8:16:10

                                hello,

                                il fut un temps j'avais référencé les exos mais je ne sais pas si les liens ont été corrigés...

                                sur ce post

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 novembre 2014 à 14:44:49 - Message modéré pour le motif suivant : Le flood est strictement interdit


                                    14 novembre 2014 à 4:56:43

                                    Réaliser un programme permettant  d'afficher les 10 première table de multiplication. Aidez moi a résoudre ce programme en C++

                                    -
                                    Edité par zoukouGBAZARE 16 novembre 2014 à 3:58:54

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      16 novembre 2014 à 3:56:21

                                      Le ministère de l'enseignement supérieur et de la recherche scientifique de ton pays  veut accorder une bourse de 45 000 euro au étudiants de votre nationalité . Pour cela on saisie le matricule, le nom et prénoms, la moyenne e la série du bac de l'étudiant. 

                                      Pour être boursier il faut avoir le bac, être de la nationalité de  ton pays , avoir obtenue 12 de moyenne au moins e être âgé au plus de 23 ans.

                                      NB: La date de naissance et le code de nationalité doivent être saisie. 

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        16 novembre 2014 à 4:02:48

                                        Voici ce que je propose . Aidez moi

                                        #include <iostream>

                                        #include <string>

                                        using namespace std;

                                        int main()

                                        {

                                           int  bourse(45000);

                                                double  moyenne(0);

                                                string  matricule(0), nomPrenoms(0), bac(0);

                                                int age(0), dateEnCour(0), dateDeNaissance(0);

                                          cout <<"Entrer le matricule:" << endl;

                                          cin >> matricule;

                                          cout << "Entrer le nom et prenoms:" << endl;

                                          cin >> nomPrenoms;

                                          cout << "Entrer la serie du bac:" << endl;

                                          cin >> bac;

                                          cout << "Entrer la date de naissance:" << endl;

                                          cin >> dateDeNaissance;

                                          cout << "Entrer la moyenne:"<< endl;

                                          cin >> moyenne;

                                          cout << "Entrer la date en cour:" << endl;

                                          cin >> dateEnCour;

                                          age= dateEnCour - dateDeNaissance ;

                                          if (age <= 23)

                                              if (moyenne>= 12)

                                              {

                                              cout << "bourse" << endl;

                                              }

                                          return 0;

                                        }

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          16 novembre 2014 à 20:48:58

                                          la courtoisie et politesse non ? :-°
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            6 janvier 2015 à 15:36:33

                                            Bonjour !!

                                            Je ne sais pas s'il y a un sujet spécial pour ce genre de questions, donc je viens la poser ici.

                                            Dans le cadre d'un cours de programmation, on nous a donné des exercices pour nous entraîner, et sur l'un d'eux je bug, sans comprendre le pourquoi. Je viens solliciter vos connaissances et votre aide. Voici l'énoncé de l'exercice :


                                            Créez un programme qui génère un suite de N nombres aléatoires réels compris entre a et b. Le
                                            programme va trier le tableau par valeur croissante. Dans ce but, chercher l’élément le plus grand du
                                            tableau et intervertissez le avec le dernier élément du tableau. Recommencez la même procédure avec
                                            les éléments restant jusqu’à ce que le tableau soit trié.


                                            Et voici mon code :


                                            #include <iostream>
                                            #include <cstdlib>
                                            #include <ctime>
                                            
                                            using namespace std;
                                            
                                            int main()
                                            {
                                                double *suite=0;
                                                int N=0, a=0, b=0, truc=0;
                                                int compteur=0;
                                                double grand=0.0;
                                                double buffer=0.0;
                                            
                                                cout << "Combien de nombres aleatoires voulez-vous generer ?" << endl;
                                                cin >> N;
                                            
                                                cout << endl << "Entrez la borne inferieure a :" << endl;
                                                cin >> a;
                                            
                                                cout << endl << "Entrez la borne superieure b :" << endl;
                                                cin >> b;
                                            
                                                cout << endl;
                                            
                                                srand(time(NULL));
                                            
                                                suite = new double[N];
                                            
                                                cout << endl << "Voici les " << N << " nombres aleatoires " << endl;
                                            
                                                for(int i=0; i<N; i++)
                                                {
                                                    suite[i] = ((double)rand()/RAND_MAX)*(b-a)+a;
                                            
                                                    cout << suite[i] << " ";
                                                }
                                                truc=N;
                                            
                                                while(N>1)
                                                {
                                                    for(int i=0; i<N; i++)
                                                    {
                                                        if(i==0)
                                                        {
                                                            grand=suite[0];
                                                            compteur=i;
                                                        }
                                            
                                                        if(i>0 && suite[i] > grand)
                                                        {
                                                            grand=suite[i];
                                                            compteur=i;
                                                        }
                                                    }
                                                    buffer=suite[N];
                                                    suite[N]=suite[compteur];
                                                    suite[compteur]=buffer;
                                                    N--;
                                                }
                                            
                                                cout << "test" << endl << endl;
                                            
                                                for(int i=0; i<truc; i++)
                                                {
                                                    cout << suite[i] << " ";
                                                }
                                            
                                                cout << "test 2";
                                            
                                                delete[] suite;
                                                return 0;
                                            }
                                            

                                             Ce qu'il se passe chez moi est que quand je lance le programme, il plante une fois arrivé au dernier for, puisque "test" s'affiche et quand je veux afficher le tableau enfin trié, la console ne l'affiche pas et ça plante. Je ne vois pas ce qu'il y a de mauvais dans ce que j'ai fait. Une idée ?


                                            Merci d'avance :)

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              6 janvier 2015 à 15:51:24

                                              Lu'!

                                              Quand tu as besoin d'aide pour un problème à toi, crée un nouveau topic.

                                              Concernant ton code :

                                              • pré-déclaration de variables : à bannir en C++, on déclare une variable le plus tard possible dans la portée maximale où elle est nécessaire.
                                              • tableau à base de double* + new + delete. A bannir, en C++ : std::vector.
                                              • tu ne contrôles pas le bon fonctionnement de std::cin.
                                              • usage de cast "langage C", en C++ static_cast pour le cas présent.
                                              • depuis 2011, il y a le header random pour l'aléatoire.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
                                                6 janvier 2015 à 15:56:35

                                                Ouvre un nouveau sujet tout simplement. -> on ne détourne pas les sujets.

                                                (et je signale à un modo pour nettoyage)

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                                                  Staff 6 janvier 2015 à 16:29:27

                                                  Salut,

                                                  Kosovar il ne s'agit pas d'un exercice que tu proposes aux autres, mais tout simplement d'une question, dont tu aimerais de l'aide pour en trouver la solution.

                                                  Or le but de ce topic est de proposer des exercices. Je te demanderai donc de créer un nouveau topic pour y poser ta question.

                                                  Je supprimerai ces derniers messages une fois que tu auras eu le temps de récupérer le contenu de ton message (pour pas avoir à tout retaper quand tu en créera un nouveau).

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Are you watching closely ?
                                                    28 février 2015 à 16:11:25 - Message modéré pour le motif suivant : Aucune formule de politesse de base


                                                    Anonyme
                                                      17 mai 2015 à 12:12:38 - Message modéré pour le motif suivant : Message complètement hors sujet


                                                        29 mai 2015 à 23:59:24

                                                        Bonjour Je me lance tout juste dans la programmation mes j'avais une idée d'éxercice plustôt spécial mes je ne sais pas si celui ci est possible alors voilla le but est de faire un programme simple console mes qui fonctionne seulement avec une seul fonction jasi essayer et cela rend un code complexe a juste un nom de variable qui fait tout un programme :p
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Nillix_Hack_Fr
                                                          30 mai 2015 à 12:26:26

                                                          On comprend pas, explique plus clairement
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            30 mai 2015 à 12:26:55

                                                            Fais un peu d'effort quand tu écris un message (au moins la ponctuation et un peu d'orthographe), se relire avant de poster ça te coûte une minute.

                                                            En ce qui concerne ton exercice je pense que ce n'est pas une bonne idée du tout car c'est une très mauvaise pratique de faire des fonctions longues. Une fonction, tu dois pouvoir comprendre ce qu'elle fait (pas nécessairement son fonctionnement), juste en lisant son nom, et tu dois vaguement savoir quelles étapes elle réalise en moins d'une minute de lecture.

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                                                            [Exercices] Venez vous entraîner !

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            • Editeur
                                                            • Markdown