Algoritmo per la simulazione dinamica di "cellule"
Questo è un programma che simula il comportamento di alcune cellule, che si dividono in cellule bianche e cellule nere con particolari condizioni. Si consideri un array 2D 40x40. Ogni elemento dell’array è detto ‘cellula’. Una cellula può essere bianca o nera. Una cellula bianca viene visualizzata con uno spazio (blank ‘ ‘), una cellula nera con ‘X’. All’inizio vi è solo una cellula nera, al 60-simo posto della prima riga; tutte le altre cellule sono bianche.
Algoritmo iterativo
Sviluppare un algoritmo iterativo che, a partire dalla prima riga, a ogni passo aggiorna una sola riga dell’array, ovvero al secondo passo aggiorna la seconda riga, al terzo passo aggiorna la terza riga e così via, fino all’ultima riga. Al passo i-simo, la riga i-sima viene aggiornata considerando solo la riga (i-1)-sima, secondo le seguenti regole:
- La cellula j della riga i-sima diventa nera se:
- Nella riga (i-1)-sima la cellula j e la cellula j-1 sono nere e la cellula j+1 è bianca;
- Nella riga (i-1)-sima le cellule j-1 e j+1 sono nere e la cellula j è bianca;
- Nella riga (i-1)-sima la cellula j e la cellula j+1 sono nere e la cellula j-1 è bianca;
- Nella riga (i-1)-sima la cellula j è nera e le cellule j+1 e j-1 sono bianche;
- Nella riga (i-1)-sima la cellula j+1 è nera e le cellule j e j-1 sono bianche;
Codice del programma
// Main.c
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
// All'interno del main sono andato ad inserire la condizione iniziale
// della matrice per poi stamparla
int main() {
int i=0, j;
int righe = 40, colonne = 40; // Variabili che indicano
// il numero di righe e colonne della matrice
char v1[40][40]; // Dichiarazione della matrice
for (i=0; i<righe; i++) { // Ciclo for annidato che
// permette lo scorrimento di tutta la matrice
for (j=0; j<colonne; j++) {
v1[i][j] = ' '; // Stampo in tutte le posizioni della matrice un '-' che indica che
// la cellula in quella posizione è BIANCA
}
}
v1[0][19] = 'X'; // TRANNE IN QUESTA
// POSIZIONE, v1[0][19], CHE RAPPRESENTA LA CONDIZIONE INIZIALE DELLA
// MATRICE, QUI VIENE STAMPATA UNA 'X',
// CHE INDICA CHE LI LA CELLULA È NERA
stampa_matrice(v1); // Richiamo della
// function stampa matrice, che stamperà la matrice iniziale
simulazione_cellule(v1); // Richiamo della
// function simulazione cellule che permetterà invece di stampare, sempre
// dopo comando dell'utente,
// la stessa matrice ma aggiornata di una riga.
}
// Function.c
#include "header.h"
/* Function che permette di stam
-
Informatica I - Esercizi algoritmo di Euclide
-
Algoritmo Matlab analisi modale2D
-
Algoritmo calcolo del Pi greco
-
Cos’è un algoritmo