0) { x1=(-b+sqrt(de))/(2*a); x2=(-b-sqrt(de))/(2*a); printf(" 1 soluzione X1 = %f \t ",x1); printf(" 2 soluzione X2 = %f \t ",x2); printf(" \n"); } else { x1=(-b+de)/(2*a); x2=(-b-de)/(2*a); printf("\n L'equazione ha soluzioni reali e coincidenti \n"); printf("\n le soluzioni coincidenti sono %f \n",x1); printf(" \n"); } printf(" \n "); system("pause"); } Equazione di 2 grado elaborata L’aspetto del programma in esecuzione è più capibile dall’esecutore"> 0) { x1=(-b+sqrt(de))/(2*a); x2=(-b-sqrt(de))/(2*a); printf(" 1 soluzione X1 = %f \t ",x1); printf(" 2 soluzione X2 = %f \t ",x2); printf(" \n"); } else { x1=(-b+de)/(2*a); x2=(-b-de)/(2*a); printf("\n L'equazione ha soluzioni reali e coincidenti \n"); printf("\n le soluzioni coincidenti sono %f \n",x1); printf(" \n"); } printf(" \n "); system("pause"); } Equazione di 2 grado elaborata L’aspetto del programma in esecuzione è più capibile dall’esecutore">

La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Conio.h contiene la dichiarazione di funzioni usate per richiamare alcune routine DOS di gestione del video e della tastiera. NECESSARIA PER system(‘’cls’’)

Presentazioni simili


Presentazione sul tema: "Conio.h contiene la dichiarazione di funzioni usate per richiamare alcune routine DOS di gestione del video e della tastiera. NECESSARIA PER system(‘’cls’’)"— Transcript della presentazione:

1 conio.h contiene la dichiarazione di funzioni usate per richiamare alcune routine DOS di gestione del video e della tastiera. NECESSARIA PER system(‘’cls’’) time.h fornisce un accesso standardizzato alle funzioni di acquisizione e manipolazione del tempo. NECESSARIA PER LA FUNZIONE TIME(NULL) unistd.h libreria di Unix che contiene funzioni di chiamate di sistema basilari del sistema operativo compatibile con C. NECESSARIA PER LA FUNZIONE GETPIP dos.h contiene la definizione delle costanti e le dichiarazioni necessarie per chiamate specifiche al DOS graphics.h contiene la dichiarazione delle routine grafiche iostream.h contiene la dichiarazione delle classi che operano sui canali fondamentali di I/O math.h contiene la dichiarazione delle principali funzioni matematiche stdio.h contiene le routine di I/O previste dal C standard stdlib.h contiene la dichiarazione di routine di uso comune string.h contiene la dichiarazione delle routine di manipolazione delle stringhe ALCUNE LIBRERIE DEL C CHE SI UTILIZZANO. BREVI CARATTERISTICHE

2 #include main() { int a,b,c,i; float x1,x2,de; for (i=1;i<=3;i++){ printf(" \n"); printf("Scrivi il valore di a: "); scanf("%d", &a); printf("Scrivi il valore di b: "); scanf("%d", &b); printf("Scrivi il valore di c: "); scanf("%d", &c); de= b*b -4*a*c; printf("il delta risulta essere %f \n \n", de); if (de<0){ printf("\n L'equazione non ammette soluzioni reali \n \n \n"); system("pause"); } else { if (de>0) { x1=(-b+sqrt(de))/(2*a); x2=(-b-sqrt(de))/(2*a); printf(" 1 soluzione X1 = %f \n \n ",x1); printf(" 2 soluzione X2 = %f \n \n ",x2); printf(" \n"); } else { x1=(-b+de)/(2*a); x2=(-b-de)/(2*a); printf("\n L'equazione ha soluzioni reali e coincidenti \n"); printf("\n le soluzioni coincidenti sono %f \n",x1); printf(" \n"); } system("pause"); } Equazione di 2 grado grezza Non molto intuitivo nell’esecuzione

3 #include main() { int a,b,c,i; float x1,x2,de; for (i=1;i<=3;i++) { system("cls"); printf(" \n \n \n"); printf(" Equazione n° %d \n \n",i); printf("Un'equazione di secondo grado si scrive secondo la seguente forma: \n"); printf(" ax^2+bx+c = 0 \n"); printf(" \n"); printf("Scrivi il valore di a: "); scanf("%d", &a); printf("Scrivi il valore di b: "); scanf("%d", &b); printf("Scrivi il valore di c: "); scanf("%d", &c); de= b*b -4*a*c; printf(" \n"); printf("il delta risulta essere %f \n \n", de); if (de<0) { printf("\nL'equazione non ha soluzioni reali\n \n \n"); system("pause"); } else { if (de>0) { x1=(-b+sqrt(de))/(2*a); x2=(-b-sqrt(de))/(2*a); printf(" 1 soluzione X1 = %f \t ",x1); printf(" 2 soluzione X2 = %f \t ",x2); printf(" \n"); } else { x1=(-b+de)/(2*a); x2=(-b-de)/(2*a); printf("\n L'equazione ha soluzioni reali e coincidenti \n"); printf("\n le soluzioni coincidenti sono %f \n",x1); printf(" \n"); } printf(" \n "); system("pause"); } Equazione di 2 grado elaborata L’aspetto del programma in esecuzione è più capibile dall’esecutore

4 // GENERAZIONE DI NUMERI CASUALI MEDIANTE IL CICLO FOR // #include main() { int k,n; printf("%s \n %s \n %s", "Verranno stampati un certo numero di valori interi", "estratti in maniera casuale.", "Quanti ne vuoi vedere? "); scanf("%d", &n); for(k=0; k<n; k++) { printf("%7d", rand()); } printf("\n\n"); system("PAUSE"); return 0; } Prova a generare 3 numeri casuali e annota il risultato numeri 41 18467 6334 Prova a stampare 4 numeri casuali e annota il risultato numeri 41 18467 6334 26500 Prova a stampare 5 numeri casuali e annota il risultato numeri 41 18467 6334 26500 19169 In pratica questo programma restituisce un certo numero di numeri casuali, compresi ta 0 e RAND_MAX. In realtà ogni volta che si manda in esecuzione il programma, qualunque sia il numero di numeri casuali che si vuole inserire esso restituisce sempre lo stesso set di numeri casuali. Questo accade perché la funzione rand() non è inizializzata, in quanto la sua definizione prevede che essa generi la stessa sequenza di numeri casuali. Quindi tali valori generati possono essere definiti PSEUDOCASUALI.

5 Per ovviare alla generazione dei numeri pseduocasuali si utilizza la funzione srand, che serve proprio per inizializzare e creare quindi numeri effettivamente casuali a partire da un valore che si può assegnare inserendolo nel suo argomento srand(3) Tale numero, 3, viene chiamato seme Se si assegna il valore 1 si ottiene la rand. Il programma parte dal numero inserito nell’argomento della srand a generare numeri casuali, ma se man mano non si cambia l’argomento, il programma restituisce gli stessi valori. Quindi bisognerebbe intervenire tutte le volte sul seme e cambiarlo prima e poi eseguire il programma, ma ovviamente non sarebbe un processo automatico. // GENERAZIONE DI NUMERI CASUALI CON SRAND SU UNA COLONNA #include main() { int k,n; printf("\n Dimmi quanti numeri casuali devo stampare:"); while(scanf("%d", &n)==0) { printf("\n Hai inserito un valore non valido!"); printf("\n Inserisci un nuovo valore numerico:"); while ( getchar() != '\n' ); } printf("\n Il valore inserito e' %d \n", n); srand(1); for(k=0; k<n; k++) { printf("\n%d",rand()); } printf("\n \n"); system("PAUSE"); return 0; } L’istruzione while (getchar() != ‘\n’ ) composta da while con all’interno una getchar ha il compito di assorbire tutte le lettere che sono eventualmente presenti dopo il numero inserito e controlla che l’inserimento da tastiera sia un numero. Questa istruzione svuota il buffer ( la memoria di transito cioè la zona di memoria usata temporaneamente per memorizzare i dati )

6 // GENERAZIONE DI NUMERI CASUALI CON GETPID SU UNA COLONNA #include main() { int k,n; //pid = getpid(); printf("\n Dimmi quanti numeri casuali devo stampare:"); while(scanf("%d", &n)==0) { printf("\n Hai inserito un valore non valido!"); printf("\n Inserisci un nuovo valore numerico:"); while ( getchar() != '\n' ); } printf("\n Il valore inserito e' %d \n", n); srand(getpid()); for(k=0; k<n; k++) { printf("\n%d",rand()); } printf("\n \n"); system("PAUSE"); return 0; } Per ovviare al problema della srand() ed essere certi di generare numeri realmente casuali si può usare la funzione getpid. La funzione getip() ( il suo argomento deve essere nullo ) assegna alla variabile pid il numero di ID, ossia il suo numero di identificatore di processo. Il computer infatti assegna, in maniera del tutto casuale, un numero al programma che si sta eseguendo, e tale numero dipende anche dagli altri processi che il computer sta eseguendo in contemporanea. Il numero assegnato serve da indicatore al pc per riconoscere un ben preciso programma che si vuol eseguire, ossia ad ogni processo è assegnato un numero diverso da quello attribuito ad altri processi, in modo da facilitarne il ritrovamento da parte della memoria e l’esecuzione. Proprio per l’estrema casualità con cui il processore assegna questo indirizzo, tale funzione getpid è un ottimo punto di partenza da cui far generare numeri casuali. Dunque, tramite getpid si assegna alla variabile pid il valore generato casualmente ed essa diviene a sua volta l’argomento della srand, che ora inizializza la rand() in maniera del tutto casuale, evitando in tal modo di immettere ogni volta un valore diverso nel suo argomento per avere nuovi numeri random. La printf dopo l’assegnazione alla variabile pid serve proprio per evidenziare il numero di pid che il pc ha assegnato a tale processo e da cui inizierà a generare i numeri casuali. Affinchè tale funzione possa essere eseguita, è necessario inserire la libreria unistd.h, che è una libreria propria di Unix, ma che è compatibile anche con altri compilatori, come quello del c.

7 Per ottenere numeri casuali si può utilizzare la funzione time(null). Tale funzione prende l’orario dell’orologio del pc e genera numeri casuali a partire da tale valore // NUMERI CASUALI CON TIME (NULL) CON VALORE MASSIMO PRIMA VERSIONE #include main() { int k,n,q,l,h; int i=1; printf("\n Dimmi quanti numeri casuali devo stampare:"); while(scanf("%d", &n)==0) { printf("\n Hai inserito un valore non valido!"); printf("\n Inserisci un nuovo valore numerico:"); while ( getchar() != '\n' ); } printf("\n Il valore inserito e' %d \n", n); printf ("\n Dimmi il valore massimo dei numeri casuali da inserire:"); while(scanf("%d", &q)==0) { printf("\n Hai inserito un valore non valido!"); printf("\n Inserisci un nuovo valore numerico:"); while ( getchar() != '\n' ); } printf("\n Il valore max per i numeri casuali inserito e' %d \n", q); printf(" \n Il time e': %d \n", time (NULL)); srand(time(NULL)); for(k=0; k<n; k++) { if (k%1==0) putchar('\n'); l=i++; if (l<10) printf(" %d",l); if (l>=10) printf(" %d",l); printf(" %d", h=rand()*q/RAND_MAX); } printf("\n \n"); system("PAUSE"); return 0; } Ciclo controllo immissione corretta di un numero Inserimento di seme mediante time(null) in srand Ciclo controllo generazione di numeri casuali con il limite del valore massimo dei numeri da inserire

8 // INTERVALLO NUMERI CASUALI FUNZIONE TIME (NULL) E INTERVALLO #include main() { int x,k,n,a,b; printf("\n Dimmi quanti numeri casuali devo stampare:"); while(scanf("%d", &n)==0) { printf("\n Hai inserito un valore non valido!"); printf("\n Inserisci un nuovo valore numerico:"); while ( getchar() != '\n' ); } printf("\n Il valore inserito e' %d \n", n); printf ("\n Dimmi l'estremo inferiore dell'intervallo:"); while(scanf("%d", &a)==0) { printf("\n Hai inserito un valore non valido!"); printf("\n Inserisci un nuovo valore numerico:"); while ( getchar() != '\n' ); } printf("\n Il valore minimo per i numeri casuali inserito e' %d \n", a); printf("\n Dimmi l'estremo superiore dell'intervallo:"); while(scanf("%d", &b)==0) { printf("\n Hai inserito un valore non valido!"); printf("\n Inserisci un nuovo valore numerico:"); while ( getchar() != '\n' ); } printf ("\n Il valore massimo per i numeri casuali inserito e' %d \n",b); printf(" \n Il time e': %d \n", time(NULL)); srand(time(NULL)); for(k=0; k<n; k++) { x= rand()*(b-a)/RAND_MAX+a; printf("\n%3d %d ",k+1,x); } printf("\n \n"); system("PAUSE"); return 0; }


Scaricare ppt "Conio.h contiene la dichiarazione di funzioni usate per richiamare alcune routine DOS di gestione del video e della tastiera. NECESSARIA PER system(‘’cls’’)"

Presentazioni simili


Annunci Google