




{"id":9,"date":"2025-10-06T16:08:23","date_gmt":"2025-10-06T16:08:23","guid":{"rendered":"https:\/\/paulc94.ovh\/index.php\/efrei-exercices\/"},"modified":"2025-10-08T23:34:31","modified_gmt":"2025-10-08T23:34:31","slug":"efrei-exercices","status":"publish","type":"page","link":"https:\/\/paulc94.ovh\/index.php\/efrei-exercices\/","title":{"rendered":"Exercices"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"9\" class=\"elementor elementor-9\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2959270e e-flex e-con-boxed e-con e-parent\" data-id=\"2959270e\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-650f5286 elementor-widget elementor-widget-text-editor\" data-id=\"650f5286\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t\n<!-- EFREI \u2014 Exercices + Solutions C++\/Java\/PHP + IDE int\u00e9gr\u00e9 -->\n<style>\n  :root{\n    --ef:#1677ff; --ef2:#62a8ff; --ink:#0f172a; --mut:#64748b;\n    --line:#e5e7eb; --bg:#f7f9fc; --card:#fff;\n  }\n  .page-wrap{max-width:1200px;margin:0 auto;padding:24px}\n  .headline{font-size:34px;margin:8px 0 12px}\n  .subline{color:var(--mut);margin-bottom:18px}\n\n  \/* Cards *\/\n  .grid{display:grid;grid-template-columns:repeat(12,1fr);gap:22px}\n  .card{\n    grid-column:span 12; background:var(--card); border:1px solid var(--line);\n    border-radius:18px; padding:18px 18px 14px; box-shadow:0 10px 24px rgba(22,119,255,.08);\n    transition:.25s ease; position:relative; overflow:hidden;\n  }\n  .card:hover{transform:translateY(-3px); box-shadow:0 18px 40px rgba(22,119,255,.15)}\n  .card h3{margin:0 0 6px;font-size:22px}\n  .meta{color:var(--mut);font-size:14px;margin-bottom:10px}\n  .enonce{line-height:1.55}\n  .enonce code{background:#eef2ff;padding:1px 6px;border-radius:6px}\n\n  .btnbar{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}\n  .pill{\n    border:0;border-radius:999px;padding:10px 14px;font-weight:700;cursor:pointer;\n    background:#eef4ff;color:#1f3b8f; transition:.15s ease;\n  }\n  .pill:hover{background:linear-gradient(135deg,var(--ef),var(--ef2)); color:#fff; transform:translateY(-1px)}\n\n  .sol{margin-top:12px;border:1px solid var(--line);border-radius:14px;padding:10px;background:#0b1020;color:#cde3ff;display:none}\n  .sol-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}\n  .copy{border:1px solid #2a3a66;background:#101a36;color:#cde3ff;border-radius:8px;padding:6px 10px;cursor:pointer}\n  .copy:hover{box-shadow:0 8px 18px rgba(22,119,255,.25)}\n  pre{margin:0;white-space:pre;overflow:auto}\n\n  \/* IDE *\/\n  .ide{margin-top:28px;padding:18px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 10px 24px rgba(22,119,255,.08)}\n  .ide-title{display:flex;align-items:center;justify-content:space-between;margin:0 0 12px}\n  .ide-tabs{display:flex;gap:8px;flex-wrap:wrap}\n  .ide-tab{border:1px solid var(--line);background:#f3f6ff;color:#11337e;padding:8px 12px;border-radius:999px;font-weight:700;cursor:pointer}\n  .ide-tab.active{background:linear-gradient(135deg,var(--ef),var(--ef2));color:#fff;border-color:transparent}\n  .ide-frame{width:100%;height:540px;border:0;border-radius:14px;display:none}\n  .ide-frame.active{display:block}\n\n  @media(min-width:900px){\n    .card{grid-column:span 6}\n  }\n<\/style>\n\n<div class=\"page-wrap\">\n  <h2 class=\"headline\">Exercices \u2014 Efrei Paris<\/h2>\n  <div class=\"subline\">Clique un langage pour afficher la solution. En bas de page, un IDE int\u00e9gr\u00e9 te permet d&#8217;ex\u00e9cuter ton code en C++, Java ou PHP.<\/div>\n\n  <div class=\"grid\">\n    <!-- ================== EXO 1 ================== -->\n    <section class=\"card\" data-exo=\"rect\">\n      <h3>Exo 1 \u2014 Rectangle : p\u00e9rim\u00e8tre &#038; surface<\/h3>\n      <div class=\"meta\">Bases \u2022 Entr\u00e9es \/ calculs \u2022 Types r\u00e9els<\/div>\n      <div class=\"enonce\">\n        Lire la <strong>longueur<\/strong> <code>lg<\/code> et la <strong>largeur<\/strong> <code>lr<\/code> d\u2019un rectangle.<br>\n        Calculer le <em>p\u00e9rim\u00e8tre<\/em> <code>p = 2 \u00d7 (lg + lr)<\/code> et la <em>surface<\/em> <code>s = lg \u00d7 lr<\/code>.\n      <\/div>\n      <div class=\"btnbar\">\n        <button class=\"pill\" data-lang=\"cpp\">Solution C++<\/button>\n        <button class=\"pill\" data-lang=\"java\">Solution Java<\/button>\n        <button class=\"pill\" data-lang=\"php\">Solution PHP<\/button>\n      <\/div>\n\n      <div class=\"sol\" data-sol=\"cpp\">\n        <div class=\"sol-head\"><strong>C++<\/strong><button class=\"copy\">Copier<\/button><\/div>\n<pre>#include &lt;bits\/stdc++.h&gt;\nusing namespace std;\nint main(){\n  ios::sync_with_stdio(false); cin.tie(nullptr);\n  double lg, lr; \n  if(!(cin &gt;&gt; lg &gt;&gt; lr)) return 0;\n  double p = 2*(lg+lr), s = lg*lr;\n  cout.setf(ios::fixed); cout&lt;&lt;setprecision(2)&lt;&lt;p&lt;&lt;\"\\n\"&lt;&lt;s&lt;&lt;\"\\n\";\n  return 0;\n}<\/pre>\n      <\/div>\n\n      <div class=\"sol\" data-sol=\"java\">\n        <div class=\"sol-head\"><strong>Java<\/strong><button class=\"copy\">Copier<\/button><\/div>\n<pre>import java.util.*;\npublic class Main{\n  public static void main(String[] args){\n    Locale.setDefault(Locale.US);\n    Scanner sc=new Scanner(System.in);\n    double lg=sc.nextDouble(), lr=sc.nextDouble();\n    double p=2*(lg+lr), s=lg*lr;\n    System.out.printf(\"%.2f%n%.2f%n\", p, s);\n  }\n}<\/pre>\n      <\/div>\n\n      <div class=\"sol\" data-sol=\"php\">\n        <div class=\"sol-head\"><strong>PHP<\/strong><button class=\"copy\">Copier<\/button><\/div>\n<pre>&lt;?php\n$lg = floatval(trim(fgets(STDIN)));\n$lr = floatval(trim(fgets(STDIN)));\n$p = 2*($lg + $lr);\n$s = $lg * $lr;\necho number_format($p,2,'.','').\"\\n\";\necho number_format($s,2,'.','').\"\\n\";<\/pre>\n      <\/div>\n    <\/section>\n\n    <!-- ================== EXO 2 ================== -->\n    <section class=\"card\" data-exo=\"tva\">\n      <h3>Exo 2 \u2014 Prix TTC &#038; valeur de la TVA<\/h3>\n      <div class=\"meta\">Bases \u2022 Calcul financier<\/div>\n      <div class=\"enonce\">\n        Lire le <strong>prix unitaire<\/strong> <code>pu<\/code>, la <strong>quantit\u00e9<\/strong> <code>qte<\/code> et le <strong>taux de TVA<\/strong> (en %) <code>tva<\/code>.<br>\n        Calculer <code>tvaVal = pu \u00d7 qte \u00d7 tva\/100<\/code> et <code>ttc = pu \u00d7 qte + tvaVal<\/code>.\n      <\/div>\n      <div class=\"btnbar\">\n        <button class=\"pill\" data-lang=\"cpp\">Solution C++<\/button>\n        <button class=\"pill\" data-lang=\"java\">Solution Java<\/button>\n        <button class=\"pill\" data-lang=\"php\">Solution PHP<\/button>\n      <\/div>\n\n      <div class=\"sol\" data-sol=\"cpp\">\n        <div class=\"sol-head\"><strong>C++<\/strong><button class=\"copy\">Copier<\/button><\/div>\n<pre>#include &lt;bits\/stdc++.h&gt;\nusing namespace std;\nint main(){\n  ios::sync_with_stdio(false); cin.tie(nullptr);\n  double pu; long long qte; double tva;\n  if(!(cin&gt;&gt;pu&gt;&gt;qte&gt;&gt;tva)) return 0;\n  double tvaVal = pu*qte*(tva\/100.0);\n  double ttc = pu*qte + tvaVal;\n  cout.setf(ios::fixed); cout&lt;&lt;setprecision(2)&lt;&lt;tvaVal&lt;&lt;\"\\n\"&lt;&lt;ttc&lt;&lt;\"\\n\";\n  return 0;\n}<\/pre>\n      <\/div>\n\n      <div class=\"sol\" data-sol=\"java\">\n        <div class=\"sol-head\"><strong>Java<\/strong><button class=\"copy\">Copier<\/button><\/div>\n<pre>import java.util.*;\npublic class Main{\n  public static void main(String[] args){\n    Locale.setDefault(Locale.US);\n    Scanner sc=new Scanner(System.in);\n    double pu=sc.nextDouble(); long qte=sc.nextLong(); double tva=sc.nextDouble();\n    double tvaVal = pu*qte*(tva\/100.0);\n    double ttc = pu*qte + tvaVal;\n    System.out.printf(\"%.2f%n%.2f%n\", tvaVal, ttc);\n  }\n}<\/pre>\n      <\/div>\n\n      <div class=\"sol\" data-sol=\"php\">\n        <div class=\"sol-head\"><strong>PHP<\/strong><button class=\"copy\">Copier<\/button><\/div>\n<pre>&lt;?php\n$pu  = floatval(trim(fgets(STDIN)));\n$qte = intval(trim(fgets(STDIN)));\n$tva = floatval(trim(fgets(STDIN)));\n$tvaVal = $pu*$qte*($tva\/100.0);\n$ttc    = $pu*$qte + $tvaVal;\necho number_format($tvaVal,2,'.','').\"\\n\";\necho number_format($ttc,2,'.','').\"\\n\";<\/pre>\n      <\/div>\n    <\/section>\n\n    <!-- ================== EXO 3 ================== -->\n    <section class=\"card\" data-exo=\"date\">\n      <h3>Exercice 3 \u2014 Date : validit\u00e9, hier &#038; demain<\/h3>\n      <div class=\"meta\">Interm\u00e9diaire \u2022 Conditions \u2022 Bissextile<\/div>\n      <div class=\"enonce\">\n        Saisir une date <code>jour mois ann\u00e9e<\/code>, v\u00e9rifier sa <strong>validit\u00e9<\/strong>, puis afficher la date d\u2019<em>hier<\/em> et de <em>demain<\/em> (format <code>dd\/mm\/yyyy<\/code>).\n      <\/div>\n      <div class=\"btnbar\">\n        <button class=\"pill\" data-lang=\"cpp\">Solution C++<\/button>\n        <button class=\"pill\" data-lang=\"java\">Solution Java<\/button>\n        <button class=\"pill\" data-lang=\"php\">Solution PHP<\/button>\n      <\/div>\n\n      <div class=\"sol\" data-sol=\"cpp\">\n        <div class=\"sol-head\"><strong>C++<\/strong><button class=\"copy\">Copier<\/button><\/div>\n<pre>#include &lt;bits\/stdc++.h&gt;\nusing namespace std;\n\nbool leap(int y){ return (y%400==0)||((y%4==0)&&(y%100!=0)); }\nint mdays(int m,int y){ int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; return (m==2&&leap(y))?29:d[m]; }\nbool valid(int d,int m,int y){ return !(y&lt;=0||m&lt;1||m&gt;12||d&lt;1||d&gt;mdays(m,y)); }\n\nint main(){\n  ios::sync_with_stdio(false); cin.tie(nullptr);\n  int d,m,y; if(!(cin&gt;&gt;d&gt;&gt;m&gt;&gt;y)) return 0;\n  if(!valid(d,m,y)){ cout&lt;&lt;\"Date invalide\\n\"; return 0; }\n  int dh=d-1,mh=m,yh=y; if(dh&lt;1){ mh=m-1; if(mh&lt;1){ mh=12; yh=y-1;} dh=mdays(mh,yh); }\n  int dn=d+1,mn=m,yn=y; if(dn&gt;mdays(mn,yn)){ dn=1; mn=m+1; if(mn&gt;12){ mn=1; yn=y+1; } }\n  cout&lt;&lt;setfill('0')&lt;&lt;\"Hier: \"&lt;&lt;setw(2)&lt;&lt;dh&lt;&lt;\"\/\"&lt;&lt;setw(2)&lt;&lt;mh&lt;&lt;\"\/\"&lt;&lt;yh&lt;&lt;\"\\n\";\n  cout&lt;&lt;setfill('0')&lt;&lt;\"Demain: \"&lt;&lt;setw(2)&lt;&lt;dn&lt;&lt;\"\/\"&lt;&lt;setw(2)&lt;&lt;mn&lt;&lt;\"\/\"&lt;&lt;yn&lt;&lt;\"\\n\";\n  return 0;\n}<\/pre>\n      <\/div>\n\n      <div class=\"sol\" data-sol=\"java\">\n        <div class=\"sol-head\"><strong>Java<\/strong><button class=\"copy\">Copier<\/button><\/div>\n<pre>import java.util.*;\npublic class Main{\n  static boolean leap(int y){ return (y%400==0)||((y%4==0)&&(y%100!=0)); }\n  static int mdays(int m,int y){ int[]d={0,31,28,31,30,31,30,31,31,30,31,30,31}; return (m==2&amp;&amp;leap(y))?29:d[m]; }\n  static boolean valid(int d,int m,int y){ return !(y&lt;=0||m&lt;1||m&gt;12||d&lt;1||d&gt;mdays(m,y)); }\n  public static void main(String[] args){\n    Scanner sc=new Scanner(System.in);\n    int d=sc.nextInt(), m=sc.nextInt(), y=sc.nextInt();\n    if(!valid(d,m,y)){ System.out.println(\"Date invalide\"); return; }\n    int dh=d-1,mh=m,yh=y; if(dh&lt;1){ mh=m-1; if(mh&lt;1){ mh=12; yh=y-1;} dh=mdays(mh,yh); }\n    int dn=d+1,mn=m,yn=y; if(dn&gt;mdays(mn,yn)){ dn=1; mn=m+1; if(mn&gt;12){ mn=1; yn=y+1; } }\n    System.out.printf(\"Hier: %02d\/%02d\/%d%n\", dh,mh,yh);\n    System.out.printf(\"Demain: %02d\/%02d\/%d%n\", dn,mn,yn);\n  }\n}<\/pre>\n      <\/div>\n\n      <div class=\"sol\" data-sol=\"php\">\n        <div class=\"sol-head\"><strong>PHP<\/strong><button class=\"copy\">Copier<\/button><\/div>\n<pre>&lt;?php\nlist($d,$m,$y)=array_map('intval',[trim(fgets(STDIN)),trim(fgets(STDIN)),trim(fgets(STDIN))]);\nfunction leap($y){return ($y%400==0)||(($y%4==0)&amp;&amp;($y%100!=0));}\nfunction mdays($m,$y){$d=[0,31,28,31,30,31,30,31,31,30,31,30,31];return ($m==2 &amp;&amp; leap($y))?29:$d[$m];}\nfunction valid_dt($d,$m,$y){return !($y<=0||$m&lt;1||$m&gt;12||$d&lt;1||$d&gt;mdays($m,$y));}\nif(!valid_dt($d,$m,$y)){echo \"Date invalide\\n\";exit;}\n$dh=$d-1;$mh=$m;$yh=$y;if($dh&lt;1){$mh=$m-1;if($mh&lt;1){$mh=12;$yh=$y-1;}$dh=mdays($mh,$yh);}\n$dn=$d+1;$mn=$m;$yn=$y;if($dn&gt;mdays($mn,$yn)){$dn=1;$mn=$m+1;if($mn&gt;12){$mn=1;$yn=$y+1;}}\nprintf(\"Hier: %02d\/%02d\/%d\\n\",$dh,$mh,$yh);\nprintf(\"Demain: %02d\/%02d\/%d\\n\",$dn,$mn,$yn);<\/pre>\n      <\/div>\n    <\/section>\n  <\/div>\n\n  <!-- ================== IDE int\u00e9gr\u00e9 ================== -->\n  <section class=\"ide\">\n    <div class=\"ide-title\">\n      <h3 style=\"margin:0\">IDE int\u00e9gr\u00e9 (ex\u00e9cutable)<\/h3>\n      <div class=\"ide-tabs\">\n        <button class=\"ide-tab active\" data-ide=\"cpp\">C++<\/button>\n        <button class=\"ide-tab\" data-ide=\"java\">Java<\/button>\n        <button class=\"ide-tab\" data-ide=\"php\">PHP<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Trois iframes vers OneCompiler (embeds officiels) -->\n    <iframe class=\"ide-frame active\" data-ide=\"cpp\"  src=\"https:\/\/onecompiler.com\/embed\/cpp?theme=light\"><\/iframe>\n    <iframe class=\"ide-frame\"        data-ide=\"java\" src=\"https:\/\/onecompiler.com\/embed\/java?theme=light\"><\/iframe>\n    <iframe class=\"ide-frame\"        data-ide=\"php\"  src=\"https:\/\/onecompiler.com\/embed\/php?theme=light\"><\/iframe>\n  <\/section>\n<\/div>\n\n<script>\n  \/\/ === Solutions toggle ===\n  document.querySelectorAll('.card').forEach(card=>{\n    const btns = card.querySelectorAll('.pill');\n    const sols = card.querySelectorAll('.sol');\n    btns.forEach(b=>{\n      b.addEventListener('click', ()=>{\n        const lang = b.dataset.lang;\n        sols.forEach(s=> s.style.display = (s.dataset.sol===lang)?'block':'none');\n      });\n    });\n    \/\/ copier\n    card.querySelectorAll('.copy').forEach(c=>{\n      c.addEventListener('click', ()=>{\n        const code = c.closest('.sol').querySelector('pre').innerText;\n        navigator.clipboard.writeText(code).then(()=>{\n          const old=c.textContent; c.textContent='Copi\u00e9 \u2714';\n          setTimeout(()=>c.textContent=old, 1200);\n        });\n      });\n    });\n  });\n\n  \/\/ === IDE tabs ===\n  const tabs = document.querySelectorAll('.ide-tab');\n  const frames = document.querySelectorAll('.ide-frame');\n  tabs.forEach(t=>{\n    t.addEventListener('click', ()=>{\n      tabs.forEach(x=>x.classList.remove('active'));\n      t.classList.add('active');\n      const target = t.dataset.ide;\n      frames.forEach(f=> f.classList.toggle('active', f.dataset.ide===target));\n    });\n  });\n<\/script>\n\n\n\n<p><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Exercices \u2014 Efrei Paris Clique un langage pour afficher la solution. En bas de page, un IDE int\u00e9gr\u00e9 te permet d&#8217;ex\u00e9cuter ton code en C++, Java ou PHP. Exo 1 \u2014 Rectangle : p\u00e9rim\u00e8tre &#038; surface Bases \u2022 Entr\u00e9es \/ calculs \u2022 Types r\u00e9els Lire la longueur lg et la largeur lr d\u2019un rectangle. Calculer [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/paulc94.ovh\/index.php\/wp-json\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paulc94.ovh\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/paulc94.ovh\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/paulc94.ovh\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paulc94.ovh\/index.php\/wp-json\/wp\/v2\/comments?post=9"}],"version-history":[{"count":19,"href":"https:\/\/paulc94.ovh\/index.php\/wp-json\/wp\/v2\/pages\/9\/revisions"}],"predecessor-version":[{"id":282,"href":"https:\/\/paulc94.ovh\/index.php\/wp-json\/wp\/v2\/pages\/9\/revisions\/282"}],"wp:attachment":[{"href":"https:\/\/paulc94.ovh\/index.php\/wp-json\/wp\/v2\/media?parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}