Clasa a V-a lecția 7 - 05 oct 2019

From Algopedia
Jump to navigationJump to search

Anunțuri

  • Lecția numărul 6 a avut niște informații neconcordante. Am adus modificări, nu vă alarmați.
  • Anunțul cu grupul de email a fost pus din greșeală la acea lecție, urma să fie disponibil pentru această lecție. Dacă nu ați primit răspuns, este normal, nu aveți acces la Clubul Curioșilor.

Grup de discuții

Grupul de informatică al grupelor de informatică de clasa a 5a se numește clubul savanților. Înscrierea este obligatorie pentru cei selecționați la cursul de informatică și opțională pentru elevii din grupa de începători. Se pot înscrie şi părinţii, dacă doresc. Atenţie: grupul clubul savanților este modul prin care pot face anunţuri urgente. El este, de asemenea, locul unde puteți primi ajutor de la colegii voștri și de la instructori, orice întrebări ați avea:

Tema - rezolvări

Comentarii generale

  • Toate exercițiile au fost date pentru a vă obișnui cu mediul de programare Code::Blocks.
  • Este prima temă, încă ne obișnuim cu stilul. Motiv pentru care nu iau în calcul penalizări. Însă încercați să țineți pasul și să respectați instrucțiunile.
  • Termenul limită trebuie respectat. Acesta este în fiecare zi de joi, ora 23:59. Cine trimite după termen, voi corecta doar dacă am timp. Altfel voi considera tema nefăcută.
  • Mulți dintre voi mi-ați trimis fișiere individuale, denumite main.c. Nu mă ajută. Îmi ia timp să îmi dau seama ce ați vrut să rezolvați. Aici mă refer la Maria Dinu, Luca Zamfir, Vladimir Gavriș. Denumiți fișierele cu numele problemei. Ex.: problema1.c .
  • Nu mai trimiteți surse fără să le rulați și să le testați. Atenționări speciale către: Codrin Rău, Mara Florian, Luca Zamfir, Vladimir Gavriș. Programele voastre nu funcționau corect.

Rezolvări aici [1]

Lecție

Instrucțiunea if compusă

Instrucțiunea if permite cîte o singură instrucțiune pe fiecare ramură. Ce facem dacă avem mai multe instrucțiuni pe o ramură? Folosim instrucțiunea compusă, folosind acolade.

Exercițiu: ecuația de gradul 1

Fie ecuația :a · x = b

Să se calculeze x. Atenție! Ecuația poate avea multiple soluții, sau nici o soluție!

Schemă logică
#include <stdio.h>

int main() {
  int a, b, x;

  scanf( "%d%d", &a, &b );
  if ( a == 0 )
    if ( b == 0 )
      printf( "x oricare\n" );
    else
      printf( "x nu exista\n" );
  else {
    x = b / a;
    printf( "x este %d\n", x );
  }
  return 0;
}

if-uri imbricate

Exercițiu cu if-uri unul într-altul (numite și if-uri imbricate):

Exercițiu: an bisect

Să se spună dacă un an este bisect

Schemă logică
#include <stdio.h>

int main() {
  int a;

  scanf( "%d", &a );
  if ( a % 4 == 0 )
    if ( a % 100 == 0 )
      if ( a % 400 == 0 )
        printf( "da\n" );
      else
        printf( "nu\n" );
    else
      printf( "da\n" );
  else
    printf( "nu\n" );
  return 0;
}

Instrucțiunea while

Exerciții cu instrucțiunea while:

Exercițiu: afișarea tuturor cifrelor unui număr

Să se afișeze toate cifrele unui număr.

Schemă logică
#include <stdio.h>

int main() {
  int n, ult;

  scanf( "%d", &n );
  while ( n > 0 ) {
    printf( "Ultima cifra este %d\n", n % 10; );
    n = n / 10;
  }
  return 0;
}

Exercițiu: suma cifrelor unui număr

Să se afișeze suma cifrelor unui număr n.

Schemă logică
#include <stdio.h>

int main() {
  int n, s;

  scanf( "%d", &n );
  s = 0;
  while ( n > 0 ) {
    s = s + n % 10;
    n = n / 10;
  }
  printf( "Suma este %d\n", s );
  return 0;
}

Exercițiu: inversul unui număr

Să se afișeze inversul unui număr n.

Schemă logică
#include <stdio.h>

int main() {
  int n, r;

  scanf( "%d", &n );
  r = 0;
  while ( n > 0 ) {
    r = r * 10 + n % 10;
    n = n / 10;
  }
  printf( "Rasturnatul lui n este %d\n", r );
  return 0;
}

Tema

  • Să se rezolve următoarele probleme (schemă logică + program C în CodeBlocks). Acestea le veți trimite pe email doar către mine, nu pe grup! Nu trebuie să le trimiteți între voi și să le copiați, sunt doar pentru mine.
    • Calculați x11 cu număr minim de înmulțiri: Care este numărul minim?
    • Se citește un număr n. Să se spună cîte cifre pare are el. Exemple: dacă n=3528 el are 2 cifre pare (2 și 8), dacă n=49285640 el are 6 cifre pare (4, 2, 8, 6, 4, 0).
    • Se citește un număr n. Să se afișeze cel mai mare divizor propriu al lui n (strict mai mic decît n). Exemplu: dacă n=24 cel mai mare divizor propriu este 12. Dacă n=7 cel mai mare divizor propriu este 1. Dacă n=125 cel mai mare divizor propriu este 25. Dacă n = 175 cel mai mare divizor propriu este 35.
  • Problemă de logică: filozoful Immanuel Kant a ajuns acasă unde a constatat că ceasul de perete a stat deoarece a uitat să-l întoarcă. El a plecat către prietenul lui bun. Acolo a stat o vreme la discuții filozofice, apoi s-a întors înapoi acasă unde a potrivit ceasul la ora exactă! Cum a procedat Kant? Se știe că:
    • Prietenul lui Kant are un ceas care merge bine
    • Pe vremea lui Kant nu existau ceasuri de mînă sau alte dispozitive mobile cu ceas
    • Kant merge cu viteză constantă, de ani de zile aceeași, dar nu ştie cît este.

Rezolvări aici [2]