Limbajul C++ Pentru Incepatori (Curs 3)

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ม.ค. 2020
  • AGENDA:
    1. Structura alternativă simplă (if) + exemple
    2. Structura alternativă simplă (cu operatorul ternar ?:) + exemple
    3. Structura alternativă multiplă (switch)+exemple
    4. Temă Pentru Acasă
    Acest videoclip este un suport audio/video gratuit pentru cartea Limbajul C++ Pentru Incepatori, cartile le puteti comanda aici:
    skyexpression.ro/carti-progra...
    Reguli:
    1. Postati doar comentarii referitoare la videoclip (intrebari, teme rezolvate).
    2. Daca videoclipul nu are comentarii care contin rezolvarea (corectata) a unui exercitiu de la tema, puteti posta propria rezolvare si veti fi corectat(a) in mod gratuit indiferent daca ati cumparat sau nu cartea.
    3. Daca videoclipul are comentarii care contin rezolvari (corectate) pentru toate exercitiile de la tema si doriti o corectare special pentru tema rezolvata de Dvs acest lucru este posibil NUMAI DACA ati achizitionat cartea. Altfel puteti cauta rezolvari printre postarile celorlalti vizitatori sau abonati.
    4. Toate comentariile sunt retinute din start pentru examinare si numai cele aprobate vor fi afisate, iar restul sterse.
  • แนวปฏิบัติและการใช้ชีวิต

ความคิดเห็น • 32

  • @SkyexpressionRo
    @SkyexpressionRo  4 ปีที่แล้ว +1

    Acest videoclip este un suport audio/video gratuit pentru cartea Limbajul C++ Pentru Incepatori, cartile le puteti comanda aici:
    skyexpression.ro/index.php/produse-servicii/carti-programare
    Reguli:
    1. Postati doar comentarii referitoare la videoclip (intrebari, teme rezolvate).
    2. Daca videoclipul nu are comentarii care contin rezolvarea (corectata) a unui exercitiu de la tema, puteti posta propria rezolvare si veti fi corectat(a) in mod gratuit indiferent daca ati cumparat sau nu cartea.
    3. Daca videoclipul are comentarii care contin rezolvari (corectate) pentru toate exercitiile de la tema si doriti o corectare special pentru tema rezolvata de Dvs acest lucru este posibil NUMAI DACA ati achizitionat cartea. Altfel puteti cauta rezolvari printre postarile celorlalti vizitatori sau abonati.
    4. Toate comentariile sunt retinute din start pentru examinare si numai cele aprobate vor fi afisate, iar restul sterse.

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Am o nelamurire: in carte, curs si exercitii este trecut ca se evalueaza valoarea expresiei pe fiecare ramura (case) si cand e identica se executa instructiunea (instructiunile) de pe acea ramura dupa care, daca exista break se iese fortat din switch.
    Nu sunt in exemple „{}” (acolade) si nici nu se calculeaza datele de iesire. Aici m-am pierdut deoarece nu inteleg de ce si cum trebuie sa calculez datele de iesire si sa pun „{}”.
    Referitor la acest exercitiu C derutant este si faptul ca functioneaza si fara „{}” si fara calcul date iesire.

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      Amintiti-va ca atunci cand scriu in carte sau online ma confrunt mereu cu lipsa de spatiu si daca pot sa tai ceva atunci tai. Sa le luam pe rand. Folositi INTOTDEAUNA ACOLADE cand aveti o instructiune compusa intr-un bloc (adica mai mult de o singura instructiune), in acest mod SUNTETI SIGUR CA NU GRESITI.
      De exemplu din punct de vedere al compilatorului C++ sunt corecte ambele variante de mai jos:
      Varianta 1:
      if(a==3)
      b=4;
      c=5;
      Varianta 2:
      if(a==3)
      {
      b=4;
      c=5;
      }
      Bineinteles ca din punct de vedere logic cele doua variante produc rezultate TOTAL DIFERITE. In prima varianta, daca a==3 atunci se executa doar prima instructiune pe ramura de DA chiar daca PARE ca se va executa si a doua. A doua instructiune se va executa ORICUM, indiferent daca a==3 sau nu.
      In a doua varianta, daca a==3 atunci se executa AMBELE INSTRUCTIUNI pe ramura de DA.
      Blocul CASE este insa o exceptie, nu este neaparat necesar sa puneti acolade acolo, insa trebuie sa le puneti ca nu cumva sa credeti ca MERGE SI ASA orice. NU MERGE!!!
      Apoi avem de calculat o data de iesire de tip string care va memora un mesaj pe care il vom afisa la sfarsit, pentru aceasta trebuie sa includem biblioteca #include Deci va fi ceva de genul:
      D.I. a
      D.O. mesaj_afisat
      #include
      #include
      using namespace std;
      int main()
      {
      int a;
      string mesaj_afisat;
      cout >a;
      switch(a)
      {
      case 40:
      {
      mesaj_afisat="Bravo, sofer prudent!";
      break;
      }
      case 50:
      {
      mesaj_afisat="Ai atins limita de viteza in localitate!";
      break;
      }
      default:
      mesaj_afisat="Nu cunosc valoarea introdusa!";
      }
      cout

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, am efectuat testul si am obtinut 14 rezultate bune.

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      Daca sunteti lamurit unde ati gresit treceti mai departe si cand sunteti pregatit postati tema verificata in prealabil in cpp.sh

  • @vladmihai8907
    @vladmihai8907 3 ปีที่แล้ว

    buna seara!
    la problema B, am scris acest cod:
    #include
    using namespace std;
    int main()
    {
    int a, b;
    cout > a;
    if
    (a % 2 == 0)
    {
    b = a * a;
    cout

    • @SkyexpressionRo
      @SkyexpressionRo  3 ปีที่แล้ว +1

      1. Lipsesc D.I. si D.O.
      2. Instructiunea if si conditia pusa sunt pe aceeasi linie, nu pe linii separate.
      3. Se presupune prin datele problemei ca numarul "a" are exact trei cifre, nu citim altfel de numere si nu verificam. Nu se cere acest lucru.
      4. Afisarea lui b se face o singura data la final.

    • @vladmihai8907
      @vladmihai8907 3 ปีที่แล้ว +1

      @@SkyexpressionRo va multumesc!

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, postez exercitiul C cu switch
    Punct C cu switch
    D.I.: a
    D.O.: mesaj afisat
    #include
    using namespace std;
    int main ()
    {
    int a;
    couta;
    switch (a)
    {
    case 40:
    cout

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      In continuare aveti probleme cu datele de iesire. In primul rand nu exista data de iesire formata din doua cuvinte, adica "mesaj afisat". Corect ar fi mesaj_afisat.
      Apoi am repetat de multe ori ca data de iesire trebuie CALCULATA si apoi afisata.
      UNDE ati CALCULAT data de iesire mesaj_afisat?
      De asemenea faceti greseli majore la instructiuni compuse. Fiecare "case" are o instructiune compusa formata din doua instructiuni simple, deci folositi acoladele, altfel va executa doar prima instructiune si nu mai executa "break".
      Incercati sa fiti MUUUULT MAI ATENT!!!

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, revin cu exercitiul D
    Punct D v2 cu if
    D.I.: a
    D.O.: mesaj_afisat
    #include
    #include
    using namespace std;
    int main ()
    {
    int a;
    string mesaj_afisat;
    couta;
    if (a==40)
    mesaj_afisat="Bravo, sofer prudent!";
    else
    if (a==50)
    mesaj_afisat="Atentie ai atins limita de viteza in localitate!";
    else
    if (a==60)
    mesaj_afisat="Limita de viteza depasita pericol de accident!";
    else
    mesaj_afisat="Viteza nu este definita!";
    cout

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      Treceti la volumul 2 si rezolvati testul grila recapitulativ. Setati cronometrul la 30 minute. Apoi comunicati-mi rezultatele.

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, postez exercitiul B
    Punct B
    D.I.: a
    D.O.: pdt
    #include
    using namespace std;
    int main ()
    {
    int a, pdt;
    couta;
    if (a%2==0)
    {
    pdt=a*a;
    cout

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      ok, treceti la urmatorul exercitiu. Observatie: nu mai lasati spatiu la afisarea mesajelor dupa semnul =.

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, repostez exercitiul C
    Punct C v2 cu switch
    D.I.: a
    D.O.: v
    #include
    using namespace std;
    int main ()
    {
    int a;
    char v;
    couta;
    switch (a)
    {
    case 40:
    {
    v=40;
    cout

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      Nu inteleg cum de nu reusiti sa faceti legatura intre datele de iesire si ce se intampla in program. Pai daca v este de tip char cum sa primeasca valoarea 40, si mai mult decat atat DE CE sa primeasca valoarea 40 cand 40 este de fapt o data de intrare?
      Apoi aceasta expresie imi spune ca nu ati inteles mare lucru din operatori logici.
      v=(a!=40 || a!=50 || a!=60). Cum adica, daca a!=40 atunci inseamna ca nu am definit viteza? Sau daca a!=50 inseamna ca nu am definit viteza? Sau daca a!=60 inseamna ca nu am definit viteza? Nimic mai fals. Reluati operatorii logici si compunerea lor.

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, postez exercitiul A cu if
    Punct A cu if
    D.I.: a, b
    D.O.: v (de tip char)
    #include
    using namespace std;
    int main()
    {
    char a, b, v;
    couta;
    coutb;
    if (int(a) - int(b) == 1)
    cout

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      Sunt erori majore de logica in algoritm, ca sa nu mai vorbesc de data de iesire v care nu este calculata niciodata.
      Reganditi si Refaceti de la ZERO.

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, repun exercitiul C
    Punct C v3 cu switch
    D.I.: a
    D.O.: mesaj_afisat
    #include
    #include
    using namespace std;
    int main ()
    {
    int a;
    string mesaj_afisat;
    couta;
    switch (a)
    {
    case 40:
    {
    mesaj_afisat="Bravo, sofer prudent!";
    break;
    }
    case 50:
    {
    mesaj_afisat="Atentie ai atins limita de viteza in localitate!";
    break;
    }
    case 60:
    {
    mesaj_afisat="Limita de viteza depasita pericol de accident!";
    break;
    }
    default:
    mesaj_afisat="Nu cunosc valoarea introdusa";
    }
    cout

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, repun exercitiul A cu if
    Punct A cu if v2
    D.I.: a, b
    D.O.: mesaj string
    #include
    using namespace std;
    int main()
    {
    char a, b;
    couta;
    coutb;
    if (int(b) - int(a) == 1)
    cout

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      RECONSIDERATI, REGANDITI TOATA LOGICA. Este eronat modul in care ati rezolvat.
      In afara de logica eronata, daca aveti ca data de iesire variabila "mesaj", de ce nu o calculati nicaieri?

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, postez exercitiul D cu if
    Punct D cu if
    D.I.: a
    D.O.: v
    #include
    using namespace std;
    int main ()
    {
    int a;
    char v;
    couta;
    if (a==40)
    v='B'; // Bravo, sofer prudent!';
    else
    if (a==50)
    v='A'; // Atentie ai atins limita de viteza in localitate!';
    else
    if (a==60)
    v='L'; // Limita de viteza depasita pericol de accident!';
    else
    v='V'; // Nu cunosc valoarea introdusa';
    cout

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      Nu inteleg de ce aveti impresia ca eu sunt UTILIZATOR!, Ei bine, acele comentarii le vad doar programatorii, NU UTILIZATORII!!!
      Declarati v ca string, includeti biblioteca string si rezolvati pentru UTILIZATOR!

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, repostez exercitiul A cu if
    Punct A cu if v3
    D.I.: a, b
    D.O.: " Sortat alfabetic" sau “Nesortat”
    #include
    using namespace std;
    int main ()
    {
    char a, b;
    couta;
    coutb;
    if (((int(a)>=65 && int(b)=97 && int(b)

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      Asa ceva nu exista!!! D.O.: " Sortat alfabetic" sau “Nesortat”
      Data de iesire trebuie sa fie o variabila care se calculeaza, apoi se afiseaza.
      Aveti conditii care efectiv au o logica ERONATA.
      Pot compara doua variabile de tip char, adica pe a cu b deoarece se compara codurile lor ASCII implicit. De exemplu a

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, revin cu exercitiul A cu if
    Punct A cu if v4
    D.I.: a, b
    D.O.: v
    #include
    using namespace std;
    int main ()
    {
    char a, b, v;
    couta;
    coutb;
    if ((v = ((int(a)>=65 && int(b)=97 && int(b)

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      Incetati sa mai folositi asa ceva, NU EXISTA operatori de atribuire in conditii. Abia v-am explicat in raspunsul precedent ca are sens sa compar variabilele a cu b. V-am scris ca are loc o comparatie IMPLICITA intre codurile ascii, NU EXPLICITA.
      Deci inlocuiti:
      if ((v = ((int(a)>=65 && int(b)=97 && int(b)

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, repun exercitiul A cu if
    Punct A cu if v5
    D.I.: a, b
    D.O.: v
    #include
    using namespace std;
    int main ()
    {
    char a, b, v;
    couta;
    coutb;
    if (a

  • @cicero7978
    @cicero7978 ปีที่แล้ว

    Buna ziua, postez exerctiul A cu operator ternar
    Punct A cu operator ternar v2.1
    D.I.: a, b
    D.O.: v
    #include
    using namespace std;
    int main ()
    {
    char a, b, v;
    couta;
    coutb;
    v = (a

    • @SkyexpressionRo
      @SkyexpressionRo  ปีที่แล้ว

      ok, e corect, doar ca D inseamna DOAR descrescator, nu confundati cu NESORTAT.
      Treceti la urmatorul.