Înapoi la curs

Cursul de programare pentru performanță - clasa a 5-a, anul 2024 - 2025

0% Finalizat
0/0 Etape
  1. Informații administrative

    Prezentarea instructorilor
  2. Prezentarea cursului de programare pentru performanță
  3. Despre conținutul cursului
  4. Rezultate teme
  5. Cursuri
    1. Algoritmi și scheme logice
    4 Subiecte
    |
    1 Evaluare
  6. 2. Operatori, structura liniară și alternativă și exerciții
    5 Subiecte
    |
    1 Evaluare
  7. 3. Structura repetitivă de tip WHILE-DO și exerciții
    5 Subiecte
    |
    1 Evaluare
  8. 4. Exerciții cu structura repetitivă WHILE-DO
    4 Subiecte
    |
    1 Evaluare
  9. 5. Recapitulare scheme logice
    4 Subiecte
  10. 6. Rezolvarea testelor de calificare, introducere în limbajul C, citire/scriere/atribuire
    7 Subiecte
    |
    1 Evaluare
  11. 7. Limbajul C: instrucțiunea if și instrucțiunea while
    5 Subiecte
    |
    1 Evaluare
  12. 8. Exerciții cu instrucțiunile if și while în limbajul C: palindrom, divizori, numere prime
    3 Subiecte
    |
    1 Evaluare
  13. 9. Descompunere în factori primi, algoritmul lui Euclid și interschimbare de variabile (swap)
    5 Subiecte
    |
    1 Evaluare
  14. 10. Fișiere, radical și exerciții
    6 Subiecte
    |
    1 Evaluare
  15. 11. Exerciții și recapitulare
    6 Subiecte
    |
    1 Evaluare
  16. 12. Secvențe și operații pe bază de secvențe
    6 Subiecte
    |
    1 Evaluare
  17. 13. Instrucțiunea de incrementare/decrementare și instrucțiunea for
    8 Subiecte
    |
    1 Evaluare
  18. 14. Recapitulare
    4 Subiecte
  19. 15. Acomodare concurs (în sală)
    3 Subiecte
  20. 16. Discutare probleme
    4 Subiecte
  21. 17. Concurs (în sală)
    1 Subiect
Parcursul lecției
0% Finalizat

Exercițiul 1

Pentru următoarea problemă, scrieți programul în limbajul C și testați-l în aplicația CodeBlocks: să se calculeze suma numerelor de la 1 la n.

#include <stdio.h>
int main() {
int n;
scanf( "%d", &n );
printf( "Suma este %d", n * (n + 1) / 2 );
return 0;
}

Exercițiul 2

Alin vrea să construiască un zid între doi stâlpi verticali, aflați la distanța D unul de altul. El dispune de n cărămizi de lungime l și înălțime h pe care le așează orizontal, una după alta, ca în figură. Pe fiecare rând orizontal, Ionel așează câte cărămizi încap, lăsând eventual un gol la capătul din dreapta. În sus, el se oprește atunci când se termină cărămizile.

Scrieți o schemă logică care citește Dnl și h și afișează înălțimea maximă a zidului construit.

În exemplul din figură: dacă D = 11, n = 8, l = 3 și h = 2 atunci înălțimea maximă a zidului va fi 6 (3 cărămizi fiecare de înălțime 2).

Rezolvare

Alin va așeza numărul maxim posibil de cărămizi pe fiecare rând orizontal. Acest număr este câtul împărțirii lui D (distanța dintre stâlpi) la l (lungimea unei cărămizi). Acest cât se calculează în mod natural cu operatorul împărțire întreagă, /.

Vom avea, deci, D/l cărămizi pe rând.

Câte rânduri va așeza Alin? Deoarece avem n cărămizi și D / l cărămizi pe orizontală, pentru a calcula numărul de cărămizi pe verticală vom împărți n la numărul de cărămizi pe orizontală, adică D / l

n / ( D / l ) este numărul de cărămizi pe verticală, dacă n se împarte la D / L, altfel trebuie să adunăm unu, deoarece ultimul rând de cărămizi nu va fi complet.

Pentru a acoperi ambele cazuri vom împărți ( n + D / l  – 1 ) la D / L. Acesta este numărul maxim de cărămizi pe verticală.

Pentru a afla înălțimea zidului vom înmulți acest număr cu h, înălțimea unei cărămizi. Iată o soluție posibilă, schema logică și programul C:

#include <stdio.h>
int main() {
int D, n, l, h;
scanf( "%d%d%d%d", &D, &n, &l, &h );
printf( "%d", (n + D/ l - 1) / (D / l) * h );
return 0;
}

Răspunsuri