Programación Códigos programas c en c++ Foxpro estadísticas ejemplos matemáticas probabilidades codigos ficheros Lotería electrónica cálculos abrir ficheros programas para archivos programación códigos libres gratis Php Java Ejercicios resueltos en C
jueves, 2 de mayo de 2013
C Programa de estadística basica
C
Lenguaje de programación C estadisticas numeros
include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#include <graphics.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
const int MaxArreglo = 20;
//===========================================================================
//Definici¢n de todos los prototipos de funciones
int CapturarDatos(float *Datos);
void MarcoPresentacion();
char CaracterEstaEn(char ch, char *s);
float CalcularPromedio(float *Datos, int N);
void IntercambiarValoresDosVariables(float *a, float *b);
void ClasificarMuestraAscendentemente(float *Datos, unsigned int N);
float CalcularMediana(float *Datos, unsigned int N);
float EncontrarModa(float *Datos, int N);
float BuscarMenorYMayor(float *Datos, int N, float &mayor);
float DesviacionEstandard(float *Datos, int max);
void GraficarPorcentajes(float *Datos, int max);
void ImprimirEnImpresora(float *Datos, int max);
void LeerArchivoYCargarEnDatos(float *Datos, int &N);
void GrabarDatosEnArchivo(float *Datos, int N);
char OpcionMenu();
//===========================================================================
int CapturarDatos(float *Datos) {
int t, Max;
gotoxy(38,1);
cout << "n£mero items?(M ximo " << MaxArreglo<<"): ";
gotoxy(66,1);
cin >> Max;
if(Max>0 && Max<=MaxArreglo){
for(t=0; t<Max; ++t) {
gotoxy(40, 2+t);
cout << "Digite n£mero real " << t+1 << ": ";
cin >> Datos[t];
}
gotoxy(40, 3+t);
cout << "Cualquier tecla y seguir..." ;
getch();
}
return Max;
}
void MarcoPresentacion(){
int indice;
window(1,1,80,25);
clrscr();
cout<<"ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";
cout<<"º EJEMPLO DE ESTADISTICA BASICA º";
cout<<"ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹";
for(indice = 5; indice < 25; ++indice)
cout<<"º º";
cout<<"ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ";
window(2,7,70,23);
}
char AMayuscula(char c){ //PRUEBA DE ESCRITORIO
if(c>='a' && c<='z')
c = c - (97-65); //convierte a may£scula si es min£scula
return c;
}
char CaracterEstaEn(char ch, char *s){ //PRUEBA ESCRITORIO
while(*s) {
if(ch == *s) return ch;
else s++;
}
return 0;
}
float CalcularPromedio(float Datos[], int N){ //PRUEBA ESCRITORIO
int t;
float Promedio=0, *P;
P = Datos;
for(t = 0; t < N; ++t){
Promedio += *P; // Promedio = Promedio + *P; es lo mismo
P++;
}
Promedio /= N;
return Promedio;
}
float CalcularMediana(float Datos[], unsigned int N){ //PRUEBA ESCRITORIO
register int t;
float temporal[MaxArreglo];
for (t=0; t<N; ++t)
temporal[t] = Datos[t]; /* copiar Datos*/
ClasificarMuestraAscendentemente(temporal, N);
return (temporal[(N-1)/2]);
}
void IntercambiarValoresDosVariables(float *a, float *b){
float aux;
aux = *a;
*a = *b;
*b = aux;
}
void ClasificarMuestraAscendentemente(float *Datos, unsigned int N){
//PRUEBA ESCRITORIO cuando sea invocada desde la funci¢n CalcularMediana()
int i,j;
float aux;
for (i = 0; i < N; i++)
for (j = i; j < N; j++)
if (Datos[i] > Datos[j])
IntercambiarValoresDosVariables(&Datos[i], &Datos[j]);
}
float EncontrarModa(float *Datos, int N){ //PRUEBA ESCRITORIO
register int t, w;
float md, AnteriorModa;
int cont, antcont;
AnteriorModa=0;
antcont=0;
for (t=0; t< N; ++t) {
md = Datos[t];
cont = 1;
for(w=t+1; w < N; ++w)
if(md == Datos[w])
cont++;
if(cont > antcont) {
AnteriorModa = md;
antcont = cont;
}
}
return AnteriorModa;
}
float BuscarMenorYMayor(float *Datos, int N, float &mayor){//PRUEBA ESCITORIO
int t;
float menor;
menor = mayor = Datos[0];
for(t=1; t < N; ++t)
if(Datos[t] < menor)
menor = Datos[t];
else
if(Datos[t] > mayor)
mayor = Datos[t];
return menor;
}
void Mostrar(float *Datos, int Max){
register int t;
float total=0, porcentajes[MaxArreglo];
for (t = 0; t < Max; t++)
total += Datos[t];
for (t = 0; t < Max; t++)
porcentajes[t] = Datos[t] / total;
for(t = 0; t < Max; ++t) {
gotoxy(32,1+t);
cout << setfill('.') << setw(2) << t+1 << setiosflags(ios::fixed)
<< setiosflags(ios::showpoint) << setiosflags(ios::right)
<< setprecision(2) << setw(10) << Datos[t]
<< setw(10) << porcentajes[t]*100 << "%";
}
gotoxy(35,4+t); cout <<"Cualquier tecla y seguir... "; getch();
}
float DesviacionEstandard(float *Datos, int Max){//PRUEBA ESCRITORIO
register int t;
float DesvStd=0, Promedio;
double aux;
Promedio = CalcularPromedio(Datos,Max);
for(t = 0; t < Max; ++t)
DesvStd += ((Datos[t] - Promedio) * (Datos[t] - Promedio));
if(Max) DesvStd /= Max;
DesvStd = sqrt(DesvStd);
return DesvStd;
}
void GraficarPorcentajes(float *Datos, int Max){//PRUEBA ESCRITORIO
int ManejadorGrafico, ModoGrafico;
int i, izquierda, arriba, ancho, abajo, profundidad;
float total=0;
float porcentajes[MaxArreglo];
if (Max){
for (i = 0; i < Max; i++)
total += Datos[i];
for (i = 0; i < Max; i++)
porcentajes[i] = ((float) Datos[i]) / total;
detectgraph(&ManejadorGrafico, &ModoGrafico);
initgraph(&ManejadorGrafico, &ModoGrafico, "");
ancho = (int)( (getmaxx()) / ((Max * 2 ) + 1) );
abajo = getmaxy() - 10;
profundidad = (int) (ancho / 4);
izquierda = ancho;
setbkcolor(WHITE);
for (i = 0; i < Max; i++) {
arriba = (abajo) - ((int)(porcentajes[i] * (getmaxy() - 25)));
setcolor(RED); //color de las l¡neas de cada barra
setfillstyle(i+1, i+1); //setfillstyle(tipodeRelleno, ColorRelleno)
bar3d(izquierda,arriba,(izquierda+ancho),abajo,profundidad,1);
izquierda += (ancho * 2);
}
getch();
closegraph();
MarcoPresentacion();
}
}
void ImprimirEnImpresora(float *Datos, int Max){
register int t;
float total=0, porcentajes[MaxArreglo];
ofstream Imprimir("PRN");
for (t = 0; t < Max; t++)
total += Datos[t];
for (t = 0; t < Max; t++)
porcentajes[t] = Datos[t] / total;
gotoxy(35,4); cout <<"Imprimiendo... ";
Imprimir << "\n Registro Datos Porcentajes \n\n";
for(t = 0; t < Max; ++t) {
Imprimir << setfill('.') <<setw(5) << t+1 << setiosflags(ios::fixed)
<< setiosflags(ios::showpoint) << setiosflags(ios::right)
<< setprecision(2) << setw(15) << Datos[t]
<< setw(15) << porcentajes[t]*100 << "%" << endl;
}
Imprimir << "\f";
}
void LeerArchivoYCargarEnDatos(float *Datos, int &N){
int IDArchivo;
fstream Archivo;
N=0;
Archivo.open("Estadist.ica", ios::in | ios::binary);
if(Archivo){
while( Archivo.read( (char *)&Datos[N], sizeof(float) ) )
N++;
Archivo.close();
cout << "Le¡dos desde disco: " ; Mostrar(Datos, N);
}
else
cout << "Archivo no existe";
}
void GrabarDatosEnArchivo(float *Datos, int N){
int i;
fstream Archivo;
Archivo.open("Estadist.ica", ios::out|ios::binary|ios::trunc);//borra archivo si existe
if (!Archivo)
cout << "Error en la apertura del archivo \a";
else{
for(i=0; i<N; i++)
Archivo.write((char *)&Datos[i], sizeof(float));
Archivo.close();
}
}
char OpcionMenu(){
char entrada;
clrscr();
do {
gotoxy( 3, 1); cout << "MENU PRINCIPAL";
gotoxy( 3, 2); cout << "==============";
gotoxy( 3, 3); cout << "Capturar Datos";
gotoxy( 3, 4); cout << "Estad¡sticas b sicas";
gotoxy( 3, 5); cout << "Ordenar de menor a mayor";
gotoxy( 3, 6); cout << "Mostrar Datos";
gotoxy( 3, 7); cout << "Graficar en barras";
gotoxy( 3, 8); cout << "Imprimir en papel";
gotoxy( 3, 9); cout << "Terminar";
gotoxy( 3,13); cout << "Elija letra inicial (C E O M G I T): ";
gotoxy(39,13); entrada = AMayuscula(getch());
} while (!CaracterEstaEn(entrada, "CEOMGIT"));
return entrada;
}
void main(){ //ESTADISTICA BASICA FUNCION PRINCIPAL
float Datos[MaxArreglo]; // almacena valores de la muestra
int N=0; //N£mero verdadero de elementos
float Promedio=0,Mediana=0,DesvStd=0, Varianza=0, Moda=0, Mayor=0, Menor=0;
MarcoPresentacion();
LeerArchivoYCargarEnDatos(Datos, N);
for(;;) {
switch( OpcionMenu() ) {
case 'C': N = CapturarDatos(Datos);
break;
case 'E': Promedio = CalcularPromedio(Datos, N);
Mediana = CalcularMediana(Datos, N);
Moda = EncontrarModa(Datos, N);
Menor = BuscarMenorYMayor(Datos, N, Mayor);
DesvStd = DesviacionEstandard(Datos, N);
Varianza = DesvStd*DesvStd;
gotoxy(30, 1); cout << "Promedio : " << Promedio;
gotoxy(30, 2); cout << "Mediana : " << Mediana;
gotoxy(30, 3); cout << "Desviaci¢n Std : " << DesvStd;
gotoxy(30, 4); cout << "Varianza : " << Varianza;
gotoxy(30, 5); cout << "Moda : " << Moda;
gotoxy(30, 6); cout << "M ximo : " << Mayor;
gotoxy(30, 7); cout << "M¡nimo : " << Menor;
gotoxy(30, 9); cout << "Cualquier tecla y seguir... ";
getch();
break;
case 'M': Mostrar(Datos, N);
break;
case 'O': ClasificarMuestraAscendentemente(Datos, N);
Mostrar(Datos, N);
break;
case 'G': GraficarPorcentajes(Datos, N);
break;
case 'I': ImprimirEnImpresora(Datos, N);
break;
case 'T': GrabarDatosEnArchivo(Datos, N); exit(0);
}
}
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario