School-Coding-Cpp/sfusi/esercizio3_10.01.2025.cpp

92 lines
2.5 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 10/01/2025
Completare il programma dato il main (da
non modificare)
Il programma dovrà:
● riempire una matrice di valori casuali;
● impostare le colonne 2 e 4 con almeno 3
valori consecutivi successivi (es: ..., 14,
15, 16. ...);
● analizzare lintera matrice alla ricerca
di eventuali colonne contenenti almeno 3
valori consecutivi successivi e stamparle;
● altro come richiesto dal main (da non
modificare);
*/
#include<iostream>
#include <iomanip>
using namespace std;
typedef struct {
int x, r;
bool y;
char z;
int w[10];
} studente, insegnante;
void generaMatrice(int m[][10], size_t righe, size_t colonne);
void stampaMatrice(int m[][10], size_t righe, size_t colonne);
void modificaColonne(int m[][10], size_t righe);
void stampaColonneConsecutive(int m[][10], size_t righe, size_t colonne);
int main() {
srand(time(0));
int matrice[5][10];
int righe = 5, colonne = 10;
generaMatrice(matrice, righe, colonne);
cout << "Matrice generata:" << endl;
stampaMatrice(matrice, righe, colonne);
modificaColonne(matrice, righe);
cout << "\nMatrice modificata (colonne 2 e 4 con valori successivi):" << endl;
stampaMatrice(matrice, righe, colonne);
cout << endl << "Colonne con valori consecutivi: " << endl;
stampaColonneConsecutive(matrice, righe, colonne);
return 0;
}
void generaMatrice(int m[][10], size_t righe, size_t colonne) {
for(size_t i=0; i<righe; i++)
for(size_t j=0; j<colonne; j++)
m[i][j] = rand()%40+10;
}
void stampaMatrice(int m[][10], size_t righe, size_t colonne) {
for(size_t i=0; i<righe; i++) {
for(size_t j=0; j<colonne; j++)
cout << setw(4) << m[i][j];
cout << endl;
}
}
void modificaColonne(int m[][10], size_t righe) {
size_t riga = rand()%(righe-2)+1;
m[riga-1][2] = m[riga][2]-1;
m[riga+1][2] = m[riga][2]+1;
riga = rand()%(righe-2)+1;
m[riga-1][4] = m[riga][4]-1;
m[riga+1][4] = m[riga][4]+1;
}
void stampaColonneConsecutive(int m[][10], size_t righe, size_t colonne) {
for(size_t j=0; j<colonne; j++) {
for(size_t i=1; i<righe-1; i++) {
if(m[i-1][j] == m[i][j]-1 && m[i+1][j] == m[i][j]+1) {
for(size_t k=0; k<righe; k++)
cout << setw(4) << m[k][j];
cout << endl;
}
}
}
}