Array con Algobuild

Array con Algobuild

In questo tutorial impareremo a trattare gli array con Algobuild.

Ricordiamo che gli array sono delle strutture dati che contengono dati omogenei, cioè dello stesso tipo.

Ogni elemento dell’array viene identificato attraverso il nome dell’array e il suo indice che indica la posizione dell’elemento nell’array.

Per definire gli array monodimensionali utilizziamo anche il termine di vettore.

Gli array in Algobuild si possono indicare con una lettera qualunque (anche più lettere) seguita dalla variabile racchiusa tra parentesi quadre. L’indice è un valore numerico di tipo interno. Ad esempio a[i], vet[i] o ancora a[6] sono alcuni modi possibili che posso utilizzare per indicare un elemento di un vettore.


Esercizio sugli array con Algobuild

Realizziamo un semplicissimo esercizio che prende in input dei numeri e poi li stampa.

Quindi innanzitutto chiediamo quanti numeri vogliamo inserire nell’array e con un ciclo do while facciamo un controllo per verificare che il numero inserito sia maggiore di zero, per avere almeno un numero.

Dopo utilizziamo il ciclo for per inizializzare l’array e con un altro ciclo visualizziamo i dati inseriti.

Ecco il diagramma a blocchi che rappresenta un primo esercizio sugli array con algobuild.

array con algobuild

Potremmo anche voler inizializzare un array con dei numeri random ad esempio da 1 a 10.

Allora dovremo utilizzare la funzione random() che vi ho già accennato in questo articolo: gioco indovina numero con Algobuild.

Quindi per inizializzare l’array con i numeri da 1 a 10 utilizzo questa istruzione:

floor(random()*10+1);

dove con floor, ricordiamo, arrotondo all’intero inferiore.

Ecco il diagramma di flusso dell’algoritmo sugli array con Algobuild.

vettori algobuild

Chiaramente questi sono solo dei semplici esempi di utilizzo degli array con algobuild.

Alcuni link utili

Indice argomenti diagramma a blocchi

Numeri primi da 1 a 100

Triangoli con algobuild

Fibonacci con algobuild

Serie buffa con algobuild

Area del cerchio con Algobuild

Numeri amicabili con algobuild

Numeri perfetti con algobuild

Massimo fra tre numeri

Minore fra tre numeri

Minore tra due numeri

Diagramma a blocchi

Array con numeri random in C

Array con numeri random in C

È possibile caricare un array con numeri random in C, ovvero con dei numeri a caso tra un intervallo di valori.

Ecco un esempio che carica in modo random, con numeri da 1 a 100, un array di 20 numeri.

A questo scopo, viene utilizzata l’istruzione srand(time(0)) che serve a inizializzare il generatore sull’ora attuale dell’elaboratore.

corsi su C, C++, JavaScript, Python, PHP, Front End Developer, Full Stack Developer

Questo infatti garantisce che ogni volta si ottengano valori diversi.
La funzione 1+rand()%100; crea numeri casuali tra 1 e 100.

Quindi con un semplice ciclo for che scandisce tutte le posizioni dell’array vado ad inserire gli elementi nelle varie posizioni.

Ecco dunque il listato completo:

 
#include 
#include  
 
#define N 20

main(){
	int a[N];
	int i;

        /*inizializzamo il generatore sull'ora attuale
        dell'elaboratore time(0), in questo modo si hanno 
        valori diversi*/
	srand(time(0)); 

	for(i = 0; i < N; i++){
	   a[i]=1+rand()%100; //numeri casuali tra 1 e 100
	   printf("%d\t", a[i]);
   	}	
 }
 
```c
#include <stdio.h>
#include <time.h> 
 
#define N 20

main(){
	int a[N];
	int i;

        /*inizializzamo il generatore sull'ora attuale
        dell'elaboratore time(0), in questo modo si hanno 
        valori diversi*/
	srand(time(0)); 

	for(i=0;i<N;i++){
	   a[i]=1+rand()%100; //numeri casuali tra 1 e 100
	   printf("%d\t", a[i]);
   	}	
 }
```

Chiaramente questo è solo un semplice esempio di come generare un array con numeri random in C, nella prossima lezione impareremo a generare dei numeri casuali senza ripetizioni.

Alcuni link utili

Indice argomenti linguaggio C

La funzione fopen

La funzione fclose

Funzione fprintf

Funzione fscanf

Allocazione dinamica della memoria con malloc

Utilizzo di malloc in C

Strutture in C

Typedef struct in C

Esempio sulle struct in C

Esercizio sulle struct in C

Esercitazione sulle struct in C

Realizzare un menù di scelta in C

Strutture complesse in C

Somma elementi diagonale principale di una matrice

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C

Array multidimensionale

Array multidimensionale

Un array multidimensionale è un vettore i cui elementi sono a loro volta degli array, che a loro volta possono essere degli array multidimensionali.

Quindi i vettori che abbiamo visto in precedenza sono monodimensionali.

Invece ad esempio i vettori di vettori sono bidimensionali; i vettori di vettori di vettori sono tridimensionali, ecc…
In genere, sebbene non vi sia alcun limite, non si utilizzano più di tre dimensioni.

Sintassi – array multidimensionale

La sintassi è la seguente:

<TipoElementi><NomeArray>[<Costante>]…[<Costante>];

Il numero dei valori Costante coincide con il numero di dimensioni del vettore.

Una matrice ad esempio richiede due costanti, un vettore tridimensionale richiede tre costanti e così via.

Facciamo degli esempi:

vettore – int a[M]

matrice – int a[M][N]

vettore tridimensionale int a[M][N][P]

Rappresentazione di una matrice

Per rappresentare una matrice facciamo riferimento ad una tabella in cui il primo indice rappresenta la riga, il secondo la colonna.

<TipoElementi><NomeArray>[<Righe>] [ <Colonne>]

dove righe e colonne indicano rispettivamente il numero di righe e di colonne della matrice.

Guardiamo questa matrice di esempio, ho omesso gli indici di riga e colonna.

1221334467
16115834
2324586
1147183
1793478

In questa matrice il numero 8, in grassetto è l’elemento (2,3) cioè di riga 2 e colonna 3 (ricordiamo che gli indici di riga e di colonna partono da 0). L’ultimo numero, 78, sarà l’elemento (4,4) cioè di riga e colonna 4.

Quindi si può accedere ad un singolo elemento di un array bidimensionale usando i doppi indici (per righe e colonne).
Ad esempio A[2][3] seleziona il quarto elemento della terza riga.

Se invece utilizziamo un solo indice, ad esempio A[2], selezioniamo tutta la terza riga, che rappresenta un array monodimensionale.

Facciamo alcuni esempi di array bidimensionali:

int a[20][30];

float a[M][N];

char a[2][3]={{‘a’, ‘b’, ‘c’},{‘d’, ‘e’, ‘f’}}

Alcuni link utili:

Somma elementi diagonale principale di una matrice

Somma elementi cornice esterna

Sommare due matrici

Sommare i numeri di una matrice

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C

Ricerca di un elemento in un array

Ricerca di un elemento in un array

#include <stdio.h>
#include <stdlib.h>
#define MAX 100
 /*Dato un intero ed un vettore di interi determinare se il numero 
 è presente nel vettore e quante volte compare
 */
 int insert_array(int a[]){
     int i, n;
     printf("elementi?:");
     scanf("%d", &n);
     for (i=0;i<n;i++){
         printf("inserisci elemento %d:", i);
         scanf("%d", &a[i]);
     }
     return(n);
 }
 int stampa_array(int a[], int n) {
     int i;
     for (i=0;i<n;i++) {
         printf("\t%d", a[i]);
     }
     return;
 }
 int ricerca(int a[], int n) {
     int i, x, quanto=0;
     printf("\ninserisci un numero da cercare nell'array:");
     scanf("%d", &x);
     for(i=0; i<n; i++) {
       if(x==a[i]) { 
          quanto++;
       }   
     } 
     if(quanto==0) {
          printf("\nil numero non e' stato trovato");
     }
     else {
       printf("\nil numero e' stato trovato %d volte", quanto);
    }
     return;
 }

 int main(){
     int n, a[MAX];
     n=insert_array(a);
     stampa_array(a,n);
     ricerca(a,n);
 }

Link utili:

Array o vettori

Selection sort

Merge sort

Insertion Sort

Ricerca di elementi uguali in un array

Ricerca di elementi uguali in un array

In questa lezione implementeremo un semplice algoritmo per la ricerca di elementi uguali in un array.

Per implementare questo algoritmo utilizziamo le funzioni che poi richiameremo nella funzione principale main.

Quindi realizziamo una prima funzione che permette l’inserimento dei numeri interi nell’array.

Dopo implementiamo una funzione per la stampa degli elementi dell’array.

Poi implementiamo la funzione di ricerca che quando individua elementi uguali li visualizza in output.

Ricerca di elementi uguali in un array – Procedimento

La ricerca funziona in questo modo:

Si prende il primo elemento e si confronta con il secondo, dopo con il terzo e così via fino all’ultimo.

Dopo si prende il secondo elemento e si confronta con il terzo, e così via fino all’ultimo.

Si procede fino al penultimo elemento che verrà confrontato solo con l’ultimo.

Al termine si confronta la variabile che tiene traccia del conteggio e si visualizza in output il messaggio opportuno.

Ecco dunque il listato completo in linguaggio C dell’algoritmo per la ricerca di elementi uguali in un array.

#include <stdio.h>
#include <stdlib.h>
//Ricerca di elementi uguali in un array
#define MAX 100
 int insert_array(int a[]){
     int i, n;
     printf("quanti elementi vuoi inserire?:");
     scanf("%d", &n);
     for(i=0;i<n;i++) {
         printf("inserisci elemento %d:", i);
         scanf("%d", &a[i]);
     }
     return(n);
 }
 int stampa_array(int a[], int n){
     int i;
     for(i=0;i<n;i++) {
         printf("%d\t", a[i]);
     }
      return;
 }
 //ricerca elementi uguali
 int ricerca_uguali(int a[], int n){
     int i, j, f;
     f=0;
     for(i=0;i<n-1;i++) {
         j=i+1;
         while((j<n) && (f==0)) {
             if(a[i]==a[j]) {
                 printf("\nelementi uguali trovati: %d \t%d", a[i], a[j]);
                 f+=1;
             }       
             j++;
         }       
     }
     if(f==0)
         printf("\nnon ci sono uguali");
     else
          printf("\nci sono uguali");
      return;
 }
 int main(){
     int n, a[MAX];
     n=insert_array(a);
     stampa_array(a, n);
     ricerca_uguali(a, n);   
 }

Chiaramente questo è solo un semplicissimo esempio,, più avanti proporrò altri esercizi sugli array.

Alcuni link utili

Indice argomenti linguaggio C

La funzione fopen

La funzione fclose

Funzione fprintf

Funzione fscanf

Allocazione dinamica della memoria con malloc

Strutture in C

Typedef struct in C

Esercitazione sulle struct in C

Realizzare un menù di scelta in C

Strutture complesse in C

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Tavola pitagorica in C