/* 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); case 'd': printf("numero in decimale: %d\n", n);
case 'e': printf("numero in esadecimale: %x\n", n); default: printf("codice sconosciuto.\ncodici disponibili: \n\to ==> ottale\n\td ==> decimale\n\te ==> esadecimale\n\n"); 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; argv[i+1]); %s\n", argv[i+1]); %s\n", argv[i+1]); maschio\n"); case 'c': printf("il tuo COGNOME \212: %s\n", i += 2; case 'd': printf("la tua DATA DI NASCITA \212: i += 2; case 'f': printf("il tuo CODICE FISCALE \212: i += 2; case 'm': printf("questa persona \212 un i++; case 'p': printf("provincia: %s\n", argv[i+1]); i++; default: i++;
else i++; puts("****************************"); system("pause");