Sei sulla pagina 1di 6

1) Verificare se una parola inserita dall'utente è palindroma

#include <iostream>
using namespace std;

// Funzione per verificare se una parola è palindroma


bool isPalindroma(char parola) {
int lunghezza = sizeof(parola)/sizeof(char);
int inizio = 0;
int fine = lunghezza - 1;

while (inizio < fine) {


if (parola[inizio] != parola[fine]) {
return false;
}
inizio++;
fine--;
}

return true;
}

int main() {
char parola[];

cout << "Inserisci una parola: ";


cin >> parola;

if (isPalindroma(parola)) {
cout << "La parola inserita è palindroma." << endl;
} else {
cout << "La parola inserita non è palindroma." << endl;
}

return 0;
}

2) Calcolare il prodotto di una matrice e di un vettore

#include <iostream>
using namespace std;

const int ROWS = 3;


const int COLS = 3;
const int SIZE = 3;

void prodottoMatriceVettore(int matrice[][COLS], int vettore[], int risultato[]) {


for (int i = 0; i < ROWS; i++) {
risultato[i] = 0;
for (int j = 0; j < COLS; j++) {
risultato[i] += matrice[i][j] * vettore[j];
}
}
}

int main() {
int matrice[ROWS][COLS];
int vettore[SIZE];
int risultato[ROWS];
cout << "Inserisci gli elementi della matrice:" << endl;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
cout << "Elemento (" << i << ", " << j << "): ";
cin >> matrice[i][j];
}
}

cout << "Inserisci gli elementi del vettore:" << endl;


for (int i = 0; i < SIZE; i++) {
cout << "Elemento " << i << ": ";
cin >> vettore[i];
}

prodottoMatriceVettore(matrice, vettore, risultato);

cout << "Il risultato del prodotto della matrice per il vettore è:" << endl;
for (int i = 0; i < ROWS; i++) {
cout << risultato[i] << " ";
}
cout << endl;

return 0;
}

3) Invertire una stringa

#include <iostream>
using namespace std;

void invertiStringa(char str) {


int lunghezza = sizeof(str)/sizeof(char);
int inizio = 0;
int fine = lunghezza - 1;

while (inizio < fine) {


char temp = str[inizio];
str[inizio] = str[fine];
str[fine] = temp;

inizio++;
fine--;
}
}

int main() {
char frase[];

cout << "Inserisci una frase: ";


cin >> frase;

invertiStringa(frase);

cout << "La frase invertita è: " << frase << endl;

return 0;
}
4) Scrivi una funzione che prenda in input una matrice quadrata e restituisca true
se la matrice è diagonale (ovvero tutti
gli elementi al di fuori della diagonale principale sono uguali a zero),
altrimenti restituisca false. Utilizza cicli annidati per scorrere gli elementi
della matrice e verifica la condizione richiesta.

#include <iostream>
using namespace std;

const int SIZE = 3;

bool isMatriceDiagonale(int matrice[SIZE][SIZE]) {


for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (i != j && matrice[i][j] != 0) {
return false;
}
}
}
return true;
}

int main() {
int matrice[SIZE][SIZE];

cout << "Inserisci gli elementi della matrice:" << endl;


for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
cout << "Elemento (" << i << ", " << j << "): ";
cin >> matrice[i][j];
}
}

bool isDiagonale = isMatriceDiagonale(matrice);

if (isDiagonale) {
cout << "La matrice inserita è diagonale." << endl;
} else {
cout << "La matrice inserita non è diagonale." << endl;
}

return 0;
}

5) Esercizio dell'interrogazione

#include <iostream>
#include <ctime>
using namespace std;

void trovaValoriMassimi(int matrice[N][M], int& max1, int& max2) {


max1 = matrice[0][0];
max2 = matrice[0][0];

for (int i = 0; i < N; i++) {


for (int j = 0; j < M; j++) {
if (matrice[i][j] > max1) {
max2 = max1;
max1 = matrice[i][j];
} else if (matrice[i][j] > max2 && matrice[i][j] < max1) {
max2 = matrice[i][j];
}
}
}
}

int main() {
int matrice[N][M];
int max1, max2;

srand(time(0));

cout << "Inserisci la dimensione della matrice (prima le righe poi le colonne):
";
cin >> N, M;

for (int i = 0; i < N; i++) {


for (int j = 0; j < M; j++) {
matrice[i][j] = rand()%100;
}
}

trovaValoriMassimi(matrice, max1, max2);

cout << "Valore massimo: " << max1 << endl;


cout << "Secondo valore massimo: " << max2 << endl;

return 0;
}

6) Esercizio Bonus: Creare una funzione per calcolare il prodotto di ogni riga di
una matrice
e creare una funzione per trovare la riga con il maggior prodotto

#include <iostream>
using namespace std;

const int N = 3;
const int M = 4;

int calcolaProdottoRiga(int matrice[][M], int riga) {


int prodotto = 1;

for (int j = 0; j < M; j++) {


prodotto *= matrice[riga][j];
}

return prodotto;
}

int trovaRigaMaxProdotto(int matrice[][M]) {


int rigaMaxProdotto = 0;
int maxProdotto = calcolaProdottoRiga(matrice, 0);

for (int i = 1; i < N; i++) {


int prodotto = calcolaProdottoRiga(matrice, i);
if (prodotto > maxProdotto) {
maxProdotto = prodotto;
rigaMaxProdotto = i;
}
}

return rigaMaxProdotto;
}

int main() {
int matrice[N][M];

cout << "Inserisci gli elementi della matrice:" << endl;


for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cout << "Elemento (" << i << ", " << j << "): ";
cin >> matrice[i][j];
}
}

int rigaMaxProdotto = trovaRigaMaxProdotto(matrice);

cout << "La riga con il prodotto massimo è la riga " << rigaMaxProdotto << endl;

return 0;
}

7) Data una matrice di numeri random mi trovi il numero più grande e il numero più
piccolo
e verifichi se il numero più piccolo è divisore del numero più grande

#include <iostream>
#include <ctime>
using namespace std;

const int N = 3;
const int M = 4;

int generaNumeroCasuale(int min, int max) {


return min + rand() % (max - min + 1);
}

int trovaNumeroMax(int matrice[][M]) {


int max = matrice[0][0];

for (int i = 0; i < N; i++) {


for (int j = 0; j < M; j++) {
if (matrice[i][j] > max) {
max = matrice[i][j];
}
}
}

return max;
}

int trovaNumeroMin(int matrice[][M]) {


int min = matrice[0][0];

for (int i = 0; i < N; i++) {


for (int j = 0; j < M; j++) {
if (matrice[i][j] < min) {
min = matrice[i][j];
}
}
}

return min;
}

bool isDivisore(int numero, int divisore) {


return numero % divisore == 0;
}

int main() {
int matrice[N][M];
int numeroMax, numeroMin;

srand(time(0));

for (int i = 0; i < N; i++) {


for (int j = 0; j < M; j++) {
matrice[i][j] = generaNumeroCasuale(2, 100);
}
}

numeroMax = trovaNumeroMax(matrice);
numeroMin = trovaNumeroMin(matrice);

cout << "Il numero più grande nella matrice è: " << numeroMax << endl;
cout << "Il numero più piccolo nella matrice è: " << numeroMin << endl;

if (isDivisore(numeroMax, numeroMin)) {
cout << numeroMin << " è un divisore di " << numeroMax << endl;
} else {
cout << numeroMin << " non è un divisore di " << numeroMax << endl;
}

return 0;
}

Potrebbero piacerti anche