![]() | ![]() |
|
|
- Statistica
I mutamenti di un fenomeno nel tempo sono rappresentati con delle serie storiche, che sono effettivamente delle matrici di dati. I numeri indice calcolano le variazioni effettive e si distinguono in semplici e composti. I numeri indice composti riguardano più fenomeni e sono suddivisi in 'normali' e di Laspeyres; i numeri indice semplici sono suddivisi a base fissa e a base mobile.
I numeri indice a base fissa da 333g61d nno la variazione di un fenomeno rispetto a un tempo base:
NIbf t = xt * 100
xb
Per i numeri prima della base, se sono minori di 100 si ha un incremento e viceversa se sono maggiori si ha un decremento; per i numeri dopo la base, se sono minori di 100 si ha un decremento e viceversa se sono maggiori si ha un incremento. Per quantificare la variazione, si sottrae 100 al valore calcolato.
I numeri indice a base mobile danno la variazione di un fenomeno tempo per tempo:
NIbm t = xt * 100
xt-1
Per quantificare la variazione, si sottrae 100 al valore calcolato: se il risultato è maggiore di 0, si ha un incremento, e se è minore, un decremento.
Si può anche passare da i numeri indice a base fissa a quelli a base mobile e viceversa:
- Da fissa a mobile: NIbm t = NIbf t * 100
NIbf
t-1
- Da mobile a fissa:
t<b NIbf t-1 = NIbf t * 100
NIbm t
t>b NIbf t = NIbf t-1 * NIbm t
100
- Programma
DICHIARAZIONE VARIABILI
Define
ASSEX (410) : Valore corrispondente al numero di pixel dell'asse x
ASSEY (380) : Valore corrispondente al numero di pixel dell'asse y
Variabili di input
- float t[30] : Tempi della serie storica (decimale)
- float x[30] : Variazioni nel tempo della serie storica (decimale)
Variabili di output
- float Nibm[30] : Numeri indice semplici a base mobile (decimale)
- float NIbf[30] : Numeri indice semplici a base fissa (decimale)
Variabili ausiliarie
- float base : Tempo base per i Nibf (decimale)
- int indicebase : Indice nel vettore della base (intero)
- int val : Numeri inseriti nella serie storica (intero)
- int scheda,modo : Variabili per l'uso della grafica
- float xx,yy,max,min : Variabili utilizzate in grafica
- char rchar[30] : Stringa di caratteri utilizzata durante la visualizzazione del grafico
- int i,j,cont : Variabili per cicli e controlli (intero)
FUNZIONI
- Cerca : Funzione di controllo dell'esistenza della base
- Max : Funzione di ricerca del numero maggiore in un'array
- Min : Funzione di ricerca del numero minore in un'array
DESCRIZIONE DEL PGM
Immissione dati
Viene richiesto quanti elementi si vogliono inserire, e se è stato commesso un errore, con un controllo sul numero digitato, viene fatta ripetere l'operazione. L'inserimento dei tempi e dei rispettivi valori avviene in un modo simile, controllando sempre il numero immesso, e in tanto stampa a video la tabella di giuste dimensioni.
Numeri indice a base fissa
Viene richiesto quale tempo si desidera impostare come base, controllando che non vengano commessi errori, e poi con la funzione 'Cerca' si controlla che la base scelta sia effettivamente all'interno del vettore dei tempi. Se la base non viene trovata compare un messaggio di errore e viene richiesto l'inserimento; se invece la base viene trovata, viene salvato in una variabile l'indice della posizione in cui si trova. Dopodiché con un semplice ciclo vengono calcolati i numeri indici a base fissa con la formula.
Numeri indice a base mobile
Con un semplice ciclo vengono calcolati i numeri indici a base mobile con la formula. A fianco della tabella per l'immissione dati viene stampata la tabella contenente i numeri indici calcolati, sia fissi che mobili.
Grafica
La sessione di grafica inizia dopo aver premuto INVIO e disegna gli assi, le frecce, scrive il titolo, scrive i nomi degli assi e la didascalia per la base scelta. Viene calcolata la costante per l'asse x, disegnata la scala con un ciclo e stampati i rispettivi valori. L'unico valore stampato in rosso anziché in bianco è il valore della base. Viene calcolata la costante per l'asse x, disegnata la scala con un ciclo e stampati i rispettivi valori. In fine vengono disegnati i punti e collegati in successione da una linea spezzata.
- Listato
* Croci Jvan 4^ A Informatica 12-02-2000 *
// Input: Serie storica
// Output: Serie storica, NIbf,NIbm,grafico.
// Consegna: 12-03-2001
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<values.h>
#include<graphics.h>
#define ASSEX (410) // Valore effettivo asse x
#define ASSEY (380) // Valore effettivo asse y
///----- ----- --------- ----- -------- INPUT -------- ----- ------ ----
float t[30]; // Tempi
float x[30]; // x
//-------- ----- ------ OUTPUT -------- ----- ------ ---
float NIbm[30],NIbf[30]; // Numeri indice semplici a base mobile e a
// base fissa
//----- ----- ---------------- VARIABILI AUSILIARIE ----- ----- --------- ----- ----
float base=0; // Tempo base
int indicebase=0; // Indice della base
int val; // Numeri inseriti
int scheda,modo; // Variabili di grafica
float xx=0,yy=0,max=0,min=0; // Variabili utilizzate i grafica
char rchar[30]; //
int i=0,j=0,cont=0; // Variabili ausiliarie
int Cerca(float b); // Funzione di ricerca della base
int Max(float vet[30],int n); // Funzione di ricerca del numero maggiore
int Min(float vet[30],int n); // Funzione di ricerca del numero minore
void main(void)
while(val<=1 || val>30); // Controllo sul numero immesso
gotoxy(1,7);
printf(" ╔═════════╦═════════╗"); // Disegna la tabella
printf("\n ║ t ║ xt ║");
printf("\n ╠═════════╬═════════╣");
for(i=0;i<val;i++)
printf("\n ║ ");
for(i=0;i<val;i++)
else
cont=0;
}
while(cont>0);
do
else
cont=0;
}
while(cont>0);
// Fine del ciclo di immissione dati
gotoxy(5,10+val);
printf("╚═════════╩═════════╝");
//----- ----- ------------ NUMERI INDICE A BASE FISSA ----- ----- ----------------
do
while(base<=0); // Controllo sul numero immesso
i=Cerca(base); // Ricerca della base scelta
while(i==1);
for(i=0;i<val;i++)
NIbf[i]=(x[i]/x[indicebase])*100; // Calcolo dei NIbf
//----- ----- ------------ NUMERI INDICE A BASE MOBILE ----- ----- ---------------
for(i=1;i<val;i++)
NIbm[i-1]=(x[i]/x[i-1])*100; // Calcolo dei NIbm
gotoxy(45,7);
printf("╔═════════╦═════════╗"); // Disegna la tabella
gotoxy(45,8);
printf("║ NIbf ║ NIbm ║");
gotoxy(45,9);
printf("╠═════════╬═════════╣");
gotoxy(45,10);
for(i=0;i<val;i++)
printf("╚═════════╩═════════╝");
gotoxy
printf("* * * *");
for(i=0;i<val;i++)
for(i=0;i<val-1;i++)
//----- ----- --------- ----- ------- GRAFICA -------- ----- ------ ---
printf("\n\n\n\n\n Per visualizzare il grafico premere il tasto INVIO ");
getch
detectgraph(&scheda,&modo);
initgraph(&scheda,&modo,"c:\\borlandc\\bgi");
clrscr
setfillstyle
floodfill
line(100,440,100,20); // Asse y
line(90,430,540,430); // Asse x
line(95,25,100,20);
line(105,25,100,20); // Freccia
line(95,25,105,25);
line(535,425,540,430);
line(535,425,535,435); // Freccia
line(535,435,540,430);
settextstyle
setcolor(BLUE);
outtextxy(200,0,"SERIE STORICA"); // Titolo
setcolor(WHITE);
settextstyle(1,0,1); // Nomi assi
outtextxy(550,450,"t");
outtextxy(40,10,"xt");
settextstyle(2,0,5); // Didascalia
outtextxy(580,60,"Tempo");
outtextxy(580,75,"base");
setcolor(RED);
line(560,75,570,75); // Lineetta rossa
setcolor(WHITE);
xx=ASSEX/(t[val-1]-t[0]); // Costante asse x
settextstyle
for(i=0;i<val;i++)
else
}
setcolor(WHITE);
max=Max(x,val);
min=Min(x,val);
yy=ASSEY/(max-min); // Costante asse y
settextstyle
for(i=0;i<val;i++)
setcolor(RED);
setfillstyle(1,RED);
for(i=0;i<val;i++)
setcolor(BLUE);
setfillstyle(1,BLUE);
for(i=0;i<val-1;i++)
line(110+((t[i]-t[0])*xx),420-((x[i]-min)*yy), // Grafico a linee
110+((t[i+1]-t[0])*xx),420-((x[i+1]-min)*yy));
setcolor(WHITE);
getch();
// Termine pgm
//----- ----- --------- ----- ---- FUNZIONE CERCA ----- ----- --------- ----- --------
int Cerca(float b)
else
}
while(i<val);
if(control==1)
return (control);
//----- ----- --------- ----- ---- FUNZIONE MAX -------- ----- ------ -
int Max(float vet[30],int n)
return(maggiore);
//----- ----- --------- ----- ---- FUNZIONE MIN -------- ----- ------ -
int Min(float vet[30],int n)
return(minore);
- Esempio di output
*** SERIE STORICA ***
Quanti numeri vuoi inserire ? 5
t ║ xt ║ ║ NIbf NIbm
╠═════╬═════╣ ╠═════╬═════╣
1 2130 * * * *
2 2050 98.795 96.244
3 2075
4 2040 98.313 98.313
5 2010 96.867 98.529
╚═════╩═════╝ ╚═════╩═════╝
Quale tempo desideri impostare come base ? 3
Per visualizzare il grafico premere il tasto INVIO
Privacy |
Articolo informazione
Commentare questo articolo:Non sei registratoDevi essere registrato per commentare ISCRIVITI |
Copiare il codice nella pagina web del tuo sito. |
Copyright InfTub.com 2025