da Cristina | Feb 21, 2019 | Algoritmi in C
#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
da Cristina | Feb 21, 2019 | Algoritmi in C
Realizziamo un algoritmo che permetta di inserire dati in una matrice, definita anche array bidimensionale, in cui le dimensioni sono definite dall’utente. Potete consultare un piccolo tutorial sulle matrici al seguente link.
Quindi i passaggi da seguire sono semplicemente questi:
- Richiesta delle dimensioni
- Inserimento dati
- Visualizzazione matrice
Algoritmo in linguaggio C per inserire i dati in una matrice
Per prima cosa includiamo la libreria stdio.h tramite il comando
#include <stdio.h>
Poi definiamo il numero massimo di righe e di colonne, impostandole ad esempio al valore 100.
#define N 100
#define M 100
Quindi procediamo chiedendo di inserire il numero di righe e controllando che il valore inserito non sia maggiore di 100 (come definito sopra) e non sia minore di 1.
In poche parole se inserisco un numero minore di 1 oppure maggiore della dimensione massima delle righe il valore viene scartato e si richiede di nuovo l’inserimento.
do {
printf("Dammi il numero di righe: ");
scanf("%d", &m);
} while ((m>M) || (m<1));
Lo stesso ragionamento lo facciamo pure per le colonne.
do {
printf("Dammi il numero di colonne: ");
scanf("%d", &n);
} while ((n>N)|| (n<1));
Un semplice controllo dell’input insomma.
Adesso possiamo inserire i dati nella nostra matrice.
Quindi utilizziamo due cicli, uno più esterno che scandisce mediante la variabile i le righe e un altro più interno che percorre per mezzo della variabile j le colonne.
Iniziamo allora ad inserire l’elemento di posto (0,0) ovvero di riga zero e colonna zero poi l’elemento di posto (0,1) e così via.
Cioè si riempie tutta la prima riga, poi si passa alla seconda riga e così via.
printf("\nInseriamo i dati nella matrice \n");
for (i=0;i<m;i++)
for (j=0;j<n;j++) {
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d", &a[i][j]);
}
Infine non ci resta che visualizzare la nostra matrice. Per fare ciò utilizzeremo sempre due cicli for annidati uno nell’altro.
printf("\nStampiamo i dati \n");
for (i=0;i<m;i++) {
printf("\n");
for(j=0;j<n;j++)
printf("\t%d", a[i][j]);
}
Programma completo per inserire e visualizzare i dati in una matrice.
#include <stdio.h>
#define N 100
#define M 100
int a[M][N];
main() {
int n,m,i,j;
do {
printf("Dammi il numero di righe: ");
scanf("%d", &m);
} while ((m>M) || (m<1));
do {
printf("Dammi il numero di colonne: ");
scanf("%d", &n);
} while ((n>N)|| (n<1));
printf("\nInseriamo i dati nella matrice \n");
for (i=0;i<m;i++)
for(j=0;j<n;j++) {
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d", &a[i][j]);
}
printf("\nStampiamo i dati \n");
for (i=0;i<m;i++) {
printf("\n");
for(j=0;j<n;j++)
printf("\t%d", a[i][j]);
}
}
Chiaramente ci possono essere altre soluzioni per implementare questo algoritmo, proponete pure la vostra.
Alcuni link utili:
Somma elementi diagonale principale di una matrice in C
Somma elementi cornice esterna in C
Sommare due matrici in C
Sommare i numeri di una matrice in C
Matrice trasposta in C
Prodotto tra matrici in C
Ricerca elementi in una matrice in C
Inserire dati in una matrice in C
Tavola pitagorica in C
Array multidimensionali in C
Programma sui triangoli in C
Media dei numeri in un array in C
Array con numeri random in C
Quick sort in C
Selection sort in C
Merge sort in C
Insertion Sort in C
da Cristina | Feb 21, 2019 | Algoritmi in C
Realizziamo un programma che permetta di visualizzare la tavola Pitagorica in C.
Notiamo che la tavola pitagorica è una matrice di numeri naturali caratterizzata dal fatto che il valore presente nella posizione individuata dalla riga i e dalla colonna j è il prodotto di i per j.
In ambito scolastico vediamo tavole pitagoriche di 10 righe e 10 colonne, quindi un tavola pitagorica è formata da 100 numeri naturali. Ogni riga e/o colonna è chiamata tabellina.
Per risolvere questo algoritmo ricorriamo alle matrici. Ne abbiamo parlato nell’articolo sugli array multidimensionali.
Utilizzando i due cicli inseriremo dapprima nell’elemento a(0,0) il valore (0+1)*(0+1); poi nell’elemento a(0,1) l’elemento (0+1)*(1+1) e così via.
a[i][j]=(i+1)*(j+1);
#include <stdio.h>
#include <stdlib.h>
#define N 10
#define M 10
main() {
int a[M][N], i, j;
//inseriamo gli elementi della tavola pitagorica
for(i=0; i<M; i++) {
for(j=0; j<N; j++) {
a[i][j]=(i+1)*(j+1);
}
}
//visualizziamo la tavola pitagorica
printf("Tavola Pitagorica:\n");
for(i=0; i<M; i++) {
for(j=0; j<N; j++) {
printf("%d\t", a[i][j]);
}
printf("\n");
}
}
Alcuni link utili:
Somma elementi cornice esterna
Sommare due matrici
Somma dei numeri di una matrice
Matrice trasposta
Prodotto tra matrici
Ricerca elementi in una matrice
Inserire dati in una matrice
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