Analizziamo oggi alcuni esempi con gli operatori logici in C++.
Nei precedenti tutorial abbiamo definito cosa sono gli operatori logici e abbiamo realizzato un piccolo esempio.
Facciamo altri esempi con gli operatori logici in C++.
Primo esempio
Preso un numero in input controllare se è interno all’intervallo [10,20].
Basta controllare se il numero è maggiore o uguale a 10 e minore o uguale a 20 per dire che è interno all’intervallo.
Quindi utilizzo: if(numero >= 10 && numero <= 20)
Banner Pubblicitario
Allego il listato completo dell’esempio.
Scatena il tuo potenziale con ’50 Algoritmi per imparare C++’, il libro appena lanciato su Amazon che ti guiderà nel mondo della programmazione con passione e precisione!
#include <iostream>
using namespace std;
int main() {
int numero;
const int a = 10;
const int b = 20;
cout << "Inserisci un numero: ";
cin >> numero;
if (numero >= a && numero <= b) {
cout << "Il numero è interno";
} else {
cout << "Il numero è esterno";
}
return 0;
}
Secondo esempio
Inserire un carattere e dire se è numerico oppure è una lettera dell’alfabeto oppure un’altra cifra qualunque.
if (c >= ‘0’ && c <= ‘9’)
con questa istruzione si vede se il carattere è numerico
if (c >= ‘a’ && c <= ‘z’)
con questa istruzione si vede se il carattere è una lettera minuscola
if (c >= ‘A’ && c <= ‘Z’)
Banner pubblicitario
infine, con questa istruzione si vede se il carattere è una lettera maiuscola.
Ecco dunque il listato completo.
#include <iostream>
using namespace std;
int main() {
char c;
cout << "Inserisci un carattere: ";
cin >> c;
if (c >= '0' && c <= '9') {
cout << "Cifra numerica";
} else if (c >= 'a' && c <= 'z') {
cout << "Carattere dell'alfabeto minuscolo";
} else if (c >= 'A' && c <= 'Z') {
cout << "Carattere dell'alfabeto maiuscolo";
} else {
cout << "Altro carattere";
}
return 0;
}
Terzo esempio
Inserire un carattere in input, se tale carattere è numerico o una lettera dell’alfabeto visualizzare ‘carattere valido’, altrimenti visualizzare ‘carattere non valido’.
Quindi questa volta ad esempio posso fare un solo if dove unisco le tre condizioni:
if ((c >= ‘0’ && c <= ‘9’) || (c >= ‘a’ && c <= ‘z’) || (c >= ‘A’ && c <= ‘Z’))
Se una di queste condizioni si verifica allora il carattere è valido, altrimenti non lo è.
Scatena il tuo potenziale con ’50 Algoritmi per imparare C++’, il libro appena lanciato su Amazon che ti guiderà nel mondo della programmazione con passione e precisione!
#include <iostream>
using namespace std;
int main() {
char c;
cout << "Inserisci un carattere: ";
cin >> c;
if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
cout << "Carattere valido";
} else {
cout << "Carattere non valido";
}
return 0;
}
Quarto esempio
Dati in input 3 caratteri, il primo che rappresenta la classe, il secondo che rappresenta la sezione e il terzo che rappresenta l’indirizzo, dire se la sequenza può essere una classe di un determinato istituto scolastico.
Ipotizziamo che l’istituto abbia le classi che vanno dalla prima alla quinta e che le sezioni possono variare dalla A alla E e che gli indirizzi hanno le seguenti lettere: I=Informatica, E=Elettronica, M=Meccanica e C=Chimica.
Quindi alcune combinazioni possibili possosno essere:
3AI, 2BE, 1CC, 5EM, ecc…
Allora potrei fare questo controllo: prendo in input le variabili c, z e i che rappresentano rispettivamente la classe, la sezione e l’indirizzo.
Controllo se questa condizione è verificata:
if ((c>=1 && c<=5) && (z>=’A’ && z<=’E’) && (i==’I’ || i==’E’ || i==’C’ || i==’M’))
Se vera visualizzo ‘è una classe del nostro istituto’; altrimenti se falsa che non lo è.
Oppure potrei usare delle variabili di tipo booleano, dove vado a memorizzare le operazioni logiche:
flagc=(c>=1 && c<=5);
flags=(z>=’A’ && z<=’E’);
flagi=(i==’I’ || i==’E’ || i==’C’ || i==’M’);
E quindi scrivere:
if (flagc && flags && flagi)
Inoltre, guardando la codifica ASCII, per convertire ciascun carattere da minuscolo a maiuscolo basta effettuare questa operazione:
if (z >= ‘a’ && z <= ‘z’)
z -= 32;
Analogamente per l’indirizzo.
Quindi anche se l’utente dovesse inserire da tastiera ad esempio la sequenza di caratteri 2ai, il programma li convertirà in 2AI.
Scatena il tuo potenziale con ’50 Algoritmi per imparare C++’, il libro appena lanciato su Amazon che ti guiderà nel mondo della programmazione con passione e precisione!
Ecco quindi il listato completo.
#include <iostream>
using namespace std;
int main() {
int c;
char z, i;
bool flagc, flags, flagi;
cout << "Inserisci la classe:\n";
cin >> c;
cout << "Inserisci la sezione:\n";
cin >> z;
cout << "Inserisci l'indirizzo:\n";
cin >> i;
// Trasformo z e i in maiuscolo se sono inseriti in minuscolo
if (z >= 'a' && z <= 'z') {
z -= 32;
}
if (i >= 'a' && i <= 'z') {
i -= 32;
}
flagc = (c >= 1 && c <= 5);
flags = (z >= 'A' && z <= 'E');
flagi = (i == 'I' || i == 'E' || i == 'C' || i == 'M');
if (flagc && flags && flagi) {
cout << c << z << i << " è una classe del nostro istituto";
} else {
cout << "Non può essere una classe del nostro istit
Chiaramente ho proposto possibili soluzioni agli esempi con gli operatori logici in C++. Proponete pure la vostra soluzione.
Scatena il tuo potenziale con ’50 Algoritmi per imparare C++’, il libro appena lanciato su Amazon che ti guiderà nel mondo della programmazione con passione e precisione!
Alcuni link utili
Indice argomenti linguaggio C++
1- Introduzione al linguaggio C++
Commenti recenti