Clasa a IX-a lecția 14 - 8 feb 2020

From Algopedia
Jump to navigationJump to search

Clasament teme lecțiile 1 - 13

Old School

Clasamente avansați

Avansați Infoarena
Avansați Varena

Clasamente începători

Începători Varena
Începători Infoarena

New School

Probleme OȘI
Probleme OJI

To be continued: clasamente pe categorii (divizori/numere prime, vectori frecventa/caracteristici, sortari, cautare binara, caractere, baze de numeratie/operatii pe biti, etc.)

Lecție

Funcții în limbajul C

Am discutat despre funcții folosind ca sursă principală lecția de la IQAcademy: Funcții în limbajul C

Adăugiri în limbajul C++

Modificarea parametrilor cu efect la ieșirea din funcție

Cum majoritatea dintre voi folosiți deja elemente de C++ în cod, este util să știți că C++ permite trimiterea variabilelor către funcții prin referință:

Exemplu: functia swap

#include <stdio.h>

void swap( int &pa, int &pb ) {
  int aux;
  
  aux = pa;
  pa = pb;
  pb = aux;
}

int main() {
  int a, b;

  a = 100;
  b = 200;
  swap( a, b );
  printf( "a=%d b=%d\n", a, b );

  return 0;
}

După cum se poate observa, referințele permit accesarea directă a variabilelor înauntrul funcției, nemaifiind nevoie de utilizarea operatorului *(pointer).

Aplicații

V-am pregătit un Concurs Virtual.

Pentru cei care au lucrat deja problemele acestea, o listă de probleme pe care le vom discuta și în lecțiile următoare:

infoarena - defrag
infoarena - betasah
infoarena - elicop

Temă

varena - țintă
infoarena - cifre5
infoarena - placare (Greuță)
infoarena - triang (Grea)

În plus pentru începători

Ca temă adițională aveți următoarele probleme, ca aplicații la divizori, descompunere în factori primi și ciurul lui Eratostene:

infoarena - cufar
infoarena - divmul

Soluțiile problemelor pot fi găsite aici. Problema cufăr este explicată detaliat aici.