Linguaggio C++

Libreria Cstdlib

Introduzione alla libreria cstdlib del C++: funzioni per numeri casuali, gestione memoria C, conversione stringhe, matematica di base e altro.

La libreria <cstdlib> contiene numerose funzioni della vecchia libreria C, ancora oggi molto utilizzate. Include strumenti per:

  • numeri casuali (rand(), srand())
  • conversione stringhe → numeri (atoi(), atof())
  • allocazione memoria in stile C (malloc(), free())
  • gestione del programma (exit(), system())
  • matematica di base (abs(), labs())

1️⃣ Inclusione della libreria


#include <cstdlib>

2️⃣ Funzioni principali di <cstdlib>

GruppoFunzioniDescrizione
Numeri casuali rand()
srand()
RAND_MAX
Generazione numeri pseudo-casuali
Conversione stringhe atoi()
atol()
atof()
Converte stringhe in numeri (stile C)
Memoria dinamica malloc()
calloc()
realloc()
free()
Allocazione e rilascio memoria
Controllo programma system()
exit()
abort()
Esegui comandi esterni / termina programma
Matematica base abs()
labs()
Valore assoluto
Ordinamento e ricerca qsort()
bsearch()
Algoritmi generici stile C

3️⃣ rand() e srand()

rand() genera un numero tra 0 e RAND_MAX. Per ottenere un numero tra min e max:


int n = min + rand() % (max - min + 1);

Per inizializzare il generatore:


srand(time(NULL));

4️⃣ Conversione stringhe


int n = atoi("123");    // 123
double x = atof("3.14"); // 3.14

Nota: preferisci stoi e stod di <string> nei programmi moderni.


5️⃣ Memoria dinamica stile C


int* p = (int*)malloc(5 * sizeof(int));

if (p != NULL) {
    p[0] = 10;
}

free(p);

Nel C++ moderno è consigliato usare new/delete o smart pointer, ma queste funzioni sono ancora utili nel basso livello.


6️⃣ Esecuzione comandi esterni


system("cls");   // Windows
system("clear"); // Linux/Mac

7️⃣ Ordinamento con qsort()


int cmp(const void* a, const void* b) {
    return (*(int*)a - *(int*)b);
}

int v[] = {5, 2, 9, 1};

qsort(v, 4, sizeof(int), cmp);
LABORATORIO

Uso delle funzioni principali di cstdlib

In questo laboratorio utilizzerai le funzioni della libreria <cstdlib> per generare numeri casuali, convertire stringhe e gestire memoria.


1 Numeri casuali

Genera 10 numeri casuali tra 1 e 100.


srand(time(NULL));

for (int i = 0; i < 10; i++) {
    cout << 1 + rand() % 100 << endl;
}

2 Conversione

Converti una stringa in intero e una in double usando atoi e atof.


string s1 = "150";
string s2 = "3.14";

int n = atoi(s1.c_str());
double x = atof(s2.c_str());

3 Memoria dinamica

Alloca un array dinamico di 5 interi con malloc, riempilo con numeri casuali, poi libera la memoria.


int* v = (int*)malloc(5 * sizeof(int));

for (int i = 0; i < 5; i++) {
    v[i] = 1 + rand() % 10;
}

free(v);

4 Esercizi

  • Simula il lancio di un dado 100 volte usando rand().
  • Converte una lista di stringhe numeriche (es. ["10","20","30"]) in interi usando atoi.
  • Ordina un vettore di interi con qsort().
  • Alloca dinamicamente un blocco di 100 interi e riempilo con valori casuali.