Sei sulla pagina 1di 8

/*

CALCOLIAMO I DIVISORI DI UN NUMERO. INSERIAMO UN CONTROLLO


CHE IL NUMERO SIA EFFETTIVAMENTE POSITIVO
UTILIZZIAMO IL DO...WHILE PER SEMPLIFICARE IL CODICE
*/

# include<stdio.h>

int main() {
// Dichiarazioni
int n;
int i;

// Corpo
puts("*********************");
puts("Trovare i divisori di un numero verificando \nprima che
questo sia davvero positivo");
puts("*********************\n\n");

// Controllo
do
{
printf("Inserisci un numero positivo: ");
scanf("%d",&n); fflush(stdin);
} while(n <= 0);

// Esecuzione
printf("I divisori sono: ");
i = 1;

while( i <= n ) {
if(n%i == 0) printf("%d ",i);
i=i+1; // i++; i += 1;
}

/*
Equivalente a :
for (i = 1; i <= n ; i++)
{
if(n%i == 0)
printf("%d ",i);
}
*/

//getchar();
}
/*
Dato un numero x stampare le cifre da x a 0, separate da virgola
*/
#include<stdio.h>
#include<stdlib.h>

int main()
{
int x, i;

printf("Inserire il numero: ");


scanf("%d", &x); fflush(stdin);

if(x > 0)
{
for (i = x; i >= 0; i--)
{
printf("%2d) %d\n",x-i+1,i);
}
}
else if(x < 0)
{
for (i = x; i <= 0; i++)
{
printf("%2d) %3d\n",i-x+1,i);
}
}

printf("*** FATTO! ***\n");


system("pause");
return 0;
}
/*
Costruire la tabella pitagorica INCOLONNATA correttamente
Guardate bene questo esempio per capire la formattazione
dell'uscita e l'utilità
della formattazione nella printf..... tornerà utile più avanti
nel corso!!!
*/

#include <stdio.h>
/*
DEFINE --> Definizione di una costante. ATTENZIONE! E' una
direttiva pre-processor che
seve per far sostituire nel codice 10 a K (in questo caso).
Questo significa che per il compilatore è
esattamente come se a mano voi aveste messo 10 al posto di K.
Notate che così però è più ordinato e soprattutto flessibile.
Se domani volete che K sia 12,
lo cambiate una sola volta!
*/
#define K 10
// è la dimensione massima della tabella pitagorica

int main()
{
// Dichiarazione;
int i,j;

// Header
puts("**********************\n*");
printf("* TABELLA PITAGORICA DI %d NUMERI\n", K);
puts("*\n**********************\n");

// Ciclo esterno
for(i = 1; i <= K ; i++)
{
// Ciclo interno
for(j = 1 ; j <= K ; j++)
{
printf("%5d", i*j);
}
printf("\n");
}
getchar();
}
/*
Visualizzazione di un numero in ottale, esadecimale e decimale
mediante switch.
*/

#include <stdio.h>
#include<stdlib.h>
#include<math.h>

int main()
{
int n;
int i;
// E' buona norma INIZIALIZZARE i char di controllo ad un
valore uile
// per entrare nei cicli alla prima iterazione. ALTERNATIVA --
> Do...While.
char code = 'd';
char cnt = 'y';
float ciao;

while (cnt == 'y')


{
printf("Inserire numero: ");
scanf("%d", &n); fflush(stdin);

printf("Inserire codice: ");


scanf("%c", &code); fflush(stdin);

// In tanti mi avete chiesto: "si può fare lo SWITCH sui


caratteri? A me non
// funziona...". Ecco qui un esempio funzionante. code è
un char. Notate i
// singoli apici per ogni CASE. Notate anche il BREAK
alla fine di ogni CASE.
// Notate infine l'indenting usato e i commenti per
separare: si capisce al volo
// dove inizia e finisce ogni CASE rendendo più facile la
lettura e l'eventuale
// debug...
switch (code) {
// -------------
case 'o':
printf("Numero in ottale: %o\n", n);
break;
// -------------
case 'd':
printf("Numero in decimale: %d\n", n);
break;
// -------------
case 'e':
printf("Numero in esadecimale: %x\n", n);
break;
// -------------
default:
printf("Codice sconosciuto.\nCodici
disponibili: \n\to ==> ottale\n\td ==> decimale\n\te ==>
esadecimale\n\n");
break;
// -------------
}
printf("Giocare ancora? [y/n] ----> ");
scanf("%c",&cnt); fflush(stdin);
}
system("pause");
}
/* Questo programma serve per far vedere cosa sono
int argc, char* argv[]
che spesso si vedono nella signature della funzione main.....

Per fare bene le prove è consigliato COMPILARE il programma,


ma non eseguirlo da DEVC++,
bensì aprirlo da console così che possiate passare dei
parametri.

Cosa sono questi parametri? Basta che quando lanciate il


programma (che si chiama argc.exe nel mio caso)
potete aggiungere dopo il nome anche un sottoinsieme dei
seguenti comandi
-n nome --> Inserisce il nome della persona;
-c cognome --> Inserisce il cognome della
persona;
-d data --> Inserisce la data di nascita
della persona;
-f codice fiscale --> Inserisce il codice fiscale della
persona;
-m --> Indica se la persona è un maschio;
-p provincia --> Inserisce il nome della persona;

BUON DIVERTIMENTO! ;-)


*/
#include<stdio.h>
#include<stdlib.h>

int main(int argc, char* argv[])


{
int i;
char cmd;

puts("\n****************************");
puts("Numero di parametri:");
printf("\targc: %d\n", argc);
puts("\nElenco parametri:");
for (i = 0; i < argc ; i++)
{
printf("\targv[%d]: %s\n", i, argv[i]);
}

puts("****************************");

if (argc == 2 && argv[1][0] == '/' && argv[1][1] == '?')


{
puts("Sintassi: \t\t[-n nome] [-c cognome] [-d data di
nascita] \n \t\t\t[-f codice fiscale]");
puts("Opzioni:");
puts("\t -n nome \t\t Nome della persona");
puts("\t -c cognome \t\t Cognome della persona");
puts("\t -d data \t\t Data di nascita della persona");
puts("\t -f codice \t\t Codice fiscale della persona");
}

else if (argc > 2)


{
i = 1;
while( i < argc )
{
if (argv[i][0] == '-')
{
switch (argv[i][1]){
case 'n':
printf("Il tuo NOME \212: %s\n",
argv[i+1]);
i += 2;
break;

case 'c':
printf("Il tuo COGNOME \212: %s\n",
argv[i+1]);
i += 2;
break;

case 'd':
printf("La tua DATA DI NASCITA \212:
%s\n", argv[i+1]);
i += 2;
break;

case 'f':
printf("Il tuo CODICE FISCALE \212:
%s\n", argv[i+1]);
i += 2;
break;

case 'm':
printf("Questa persona \212 un
maschio\n");
i++;
break;

case 'p':
printf("PROVINCIA: %s\n", argv[i+1]);
i++;
break;

default:
i++;
break;
}
}
else
{
i++;
}
}
}
puts("****************************");

system("pause");
}

Potrebbero piacerti anche