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>
| Gruppo | Funzioni | Descrizione |
|---|---|---|
| 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.
- Libreria
<cstdlib> rand()esrand()atoi()eatof()- Funzioni di allocazione 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.