http://www.cplusplus.com/reference/
STRUTTURE ITERATIVE E VETTORI
versione 19/12/2012
|
Costruire un programma che legge un numero intero e dice se è pari o dispari
|
|
SOLUZIONE:
/**************************************************************************
* Nome: pari_dispari.c *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da strcpy()
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int n;
char soluzione[20];
// INPUT
printf("Digita un numero intero : ");
scanf("%d", &n);
// ALGORITMO
if(n % 2 == 0)
strcpy(soluzione,"pari");
else
strcpy(soluzione,"dispari");
// OUTPUT
printf("%d: %s!\n", n, soluzione);
// metto in stop il programma prima della sua chiusura
fflush(stdin);
getchar();
return(0);
}
|
Costruire un programma che legge due numeri interi e visualizza il minore
|
|
SOLUZIONE:
/**************************************************************************
* Nome: minimo.c *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system("pause");
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int a,b,minimo;
// INPUT
printf("Digita il primo numero intero : ");
scanf("%d", &a);
printf("Digita il secondo numero intero : ");
scanf("%d", &b);
// ALGORITMO
if(a < b)
minimo=a;
else
minimo=b;
// OUTPUT
printf("Il minimo tra %d e %d e': %d\n", a , b, minimo);
// metto in stop il programma prima della sua chiusura
system("pause");
return(0);
}
|
Costruire un programma che legge due numeri interi e visualizza il loro Massimo Comune Divisore (il Massimo Comune Divisore MCD di due numeri interi A e B è il più grande intero positivo che divide sia A che B).
|
|
SOLUZIONE:
Soluzione Intuitiva
/**************************************************************************
* Nome: mcd.cpp *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system("pause");
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int A,B,minimo,MCD;
// INPUT
printf("Digita il numero intero A: ");
scanf("%d", &A);
printf("Digita il numero intero B: ");
scanf("%d", &B);
// ALGORITMO: Considero come numero X di partenza il min(A,B)
// Se il resto della divisione di A per X e di B per X è zero allora
// X è il MCD altrimenti considero come X il numero intero precedente
// e ripeto
minimo=(A < B ? A : B);
for (MCD=minimo ; ((A%MCD)+(B%MCD))>0 ; MCD--);
// OUTPUT
printf("Il MCD(%d,%d)=%d\n", A , B, MCD);
// metto in stop il programma prima della sua chiusura
system("pause");
return(0);
}
Soluzione - Algoritmo di Euclide
/**************************************************************************
* Nome: MCD.cpp - Algoritmo di Euclide *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system("pause");
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int A, B, tA, tB, Resto,MCD;
// INPUT
printf("Digita il numero intero A: ");
scanf("%d", &A);
printf("Digita il numero intero B: ");
scanf("%d", &B);
tA=A;
tB=B;
// ALGORITMO:
Resto = tA % tB;
while(Resto != 0)
{
tA = tB;
tB = Resto;
Resto = tA % tB;
}
MCD=tB;
// OUTPUT
printf("Il MCD(%d,%d)=%d\n", A , B, MCD);
// metto in stop il programma prima della sua chiusura
system("pause");
return(0);
}
|
Costruire un programma che legge due numeri interi e visualizza il loro minimo comune multiplo (il minimo comune multiplo mcm di due numeri interi A e B è il più piccolo intero positivo multiplo sia di A sia di B).
|
|
SOLUZIONE:
Soluzione Intuitiva
/**************************************************************************
* Nome: mcm.cpp *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system("pause");
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int A,B,massimo,mcm;
// INPUT
printf("Digita il numero intero A: ");
scanf("%d", &A);
printf("Digita il numero intero B: ");
scanf("%d", &B);
// ALGORITMO: Considero come numero X di partenza il max(A,B)
// Se il resto della divisione di X per A e B è zero allora
// X è il mcm altrimenti considero come X il numero intero
// successivo e ripeto
massimo=(A > B ? A : B);
for (mcm=massimo ; (mcm%A)+(mcm%B)>0 ; mcm++);
// OUTPUT
printf("Il mcm(%d,%d)=%d\n", A , B, mcm);
// metto in stop il programma prima della sua chiusura
system("pause");
return(0);
}
Soluzione con Formula di Euclide
/**************************************************************************
* Nome: mcm.cpp - Formula di Euclide *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system("pause");
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int A,B,minimo,mcm,MCD;
// INPUT
printf("Digita il numero intero A: ");
scanf("%d", &A);
printf("Digita il numero intero B: ");
scanf("%d", &B);
// ALGORITMO: Utilizzo la formula di Euclide che calcola il
// mcm(A,B)=A*B/MCD(A,B)
minimo=(A < B ? A : B);
for (MCD=minimo ; ((A%MCD)+(B%MCD))>0 ; MCD--);
mcm=A*B/MCD;
// OUTPUT
printf("Il mcm(%d,%d)=%d\n", A , B, mcm);
// metto in stop il programma prima della sua chiusura
system("pause");
return(0);
}
|
Costruire un programma che legge una sequenza di numeri interi finchè non digito zero
|
|
SOLUZIONE:
Variante 1: uso il DO ... WHILE
/**************************************************************************
* Nome: chiedi_numeri.c *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system()
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int n;
do {
printf("Digita un numero intero : ");
scanf("%d", &n);
} while (n!=0);
// metto in stop il programma prima della sua chiusura
system("pause");
return(0);
}
Variante 2: uso il WHILE
/**************************************************************************
* Nome: chiedi_numeri-1.c *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system()
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int n=1; // inizializzazione fittizia per attivare l'iterazione
while (n!=0)
{
printf("Digita un numero intero : ");
scanf("%d", &n);
} int n;
// metto in stop il programma prima della sua chiusura
system("pause");
return(0);
}
Variante 3: uso il FOR
/**************************************************************************
* Nome: chiedi_numeri-2.c *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system()
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int n=1; // inizializzazione fittizia per attivare l'iterazione
for ( ; n!=0; printf("Digita un numero intero : "),scanf("%d", &n) );
// metto in stop il programma prima della sua chiusura
system("pause");
return(0);
}
Variante 4: uso la ricorsione
/**************************************************************************
* Nome: chiedi_numeri-R.c *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system()
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int n;
printf("Digita un numero intero : ");
scanf("%d", &n);
if (n!=0)
main(); // Ricorsione: se n <> 0 chiedo un altro numero
else
{
// metto in stop il programma prima della sua chiusura
system("pause");
return(0);
}
}
|
Costruire un programma che legge una sequenza di numeri interi (terminata da zero) e restituisce il valore
minimo. Lo zero finale non appartiene alla sequenza.
|
|
SOLUZIONE:
/**************************************************************************
* Nome: minimo_sequenza.c *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system("pause");
#include <limits.h> // Contiene la definizione di INT_MAX (2^31-1)
int main()
{
// DICHIARAZIONE VARIABILI/INIZIALIZZAZIONE
int n,minimo=INT_MAX;
// INPUT + ALGORITMO
do {
printf("Digita un numero intero : ");
scanf("%d", &n);
if ( (n < minimo) && (n!=0) )
minimo=n;
} while (n!=0);
// OUTPUT
printf("Il minimo della sequenza e': %d\n", minimo);
// metto in stop il programma prima della sua chiusura
system("pause");
return(0);
}
|
Costruire un programma che legge un numero N e visualizza tutti i numeri primi <= N
|
|
SOLUZIONE:
/**************************************************************************
* Nome: primi.cpp *
* Autore: Marco Sechi *
* Data: 31/12/12 *
**************************************************************************/
#include <stdio.h>
#include <stdlib.h> // Richiesta da system("pause");
/*
* Nome: main
* Scopo: Trova i numeri primi <= di un numero N
* Input: --
* Output: 0 se il programma termina correttamente
*/
int main()
{
int i, d, n;
bool primo;
// INPUT E INIZIALIZZAZIONE
// - leggo il valore massimo
printf("Immetti un intero ( < 1000):\n");
do {
printf(": --> ");
scanf("%d", &n);
} while (n <= 0 || n> 1000);
// ALGORITMO+OUTPUT
printf("Elenco numeri primi <= %d -->\n",n);
printf("%4d;",1);
for (i=2; i<=n; i++)
{
primo=true;
for (d=2 ; d
SOLUZIONE:
Soluzione C++
Soluzione JavaScript
Soluzione VBA
Soluzione ASP
Soluzione PHP