Saludos Foristas de elhacker.net. El algoritmo debería ser capaz de tomar una serie de datos aleatorios, conseguir el máximo y el mínimo de ellos, sacar la diferencia; y optar por si desea obtener un maximo de bandas (intervalos) entre el maximo y el mínimo de los numeros (para así calcular su espesor) ó bien el espesor de las bandas (para asi calcular su numero), y luego lee los numeros y los clasifica a segunda de a cual banda pertenece. Todo corre bien, hasta que debe clasificar los números, pues no aparecen registrados en las bandas que corresponden. He revisado el algoritmo una y otra vez, pero no doy con el fallo.
Adjunto el Algoritmo a continuación (trabaja con notas de materias ó boletas, como un ejemplo para iniciar la verificación en cada parte del programa y constatar que funciona. El programa muestra los resultados paso a paso con la finalidad de ir siguiendo su comportamiento):
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
//Declaración de variables
int i=1,k=1,l=0,j=0;
char ans='s';
float notas,delta=0.00;
//
//Inicio del programa
//
//>>>>>>>>>>>>> SOLICITUD DE VALORES AL USUARIO <<<<<<<<<<<<<<<<<<<<<<<<<
//
do
{
cout<<"Introduzca valor: "<<endl;
cin>>notas[k];
cout<<"algún nuevo valor? s/n"<<endl;
cin>>ans;
if(ans=='s')
{
k+=1;
}
}
while(ans=='s');
//
//
//>>>>>>>>>>>>> DESARROLLO DE LAS CLASES PARA LA LISTA DE VALORES <<<<<<<<<<<<<<<<<<<<<<<<<
//
//determinación del diferencial y número de bandas
float max=0,min=50000,dif;//<<<<< DECLARACIÓN DE VARIABLES!!!!!>>>>>
do
{
if(notas>max)
{
max=notas;
}
if(notas<min)
{
min=notas;
}
i+=1;
}
while(i<=k);
dif=max-min;
cout<<"indique ahora como desea calcular las bandas:"<<endl;
cout<<"escriba 1 si desea usar el diferencial para obtener el numero de bandas."<<endl;
cout<<"escriba 2 si desea calcular la delta desde un número de bandas preferido"<<endl;
cin>>l;cout<<endl;
if(l==1)/*<<<< Para tipos caracter largos, como palabras ó lineas de palabras, deben
siempre usarse comillas dobles, aún cuando variables.>>>>*/
{
{
cout<<"indique su espesor de banda preferido:"<<endl;
cin>>delta;
j=(dif/delta)+1;
cout<<"cantidad de bandas calculadas: "<<j<<endl;
}
}
else if(l==2)
{
cout<<"indique la cantidad de bandas que desea ahora:"<<endl;
cin>>j;
delta=dif/j;
cout<<delta<<endl;
}
//desarrollo de los límites de banda y clasificación de los datos.
//
//
/*la computadora procederá a delimitar las bandas ahora.*/
//
//
float maxbanda,minbanda;////<<<<< DECLARACIÓN DE VARIABLES!!!!!>>>>>
/*if(l==1)
cout<<"su espesor de banda preferido debe ser ajustado por el numero de bandas."<<endl;
{delta=dif/j;cout<<"su espesor de banda actual: "<<delta<<endl;}*/
i=1;
do
{
if(i==1)
{
minbanda=min-0.1;
maxbanda=minbanda+delta;
}
else
{
minbanda=maxbanda[i-1];
maxbanda=minbanda+delta;
}
cout<<"banda "<<i<<" minimo: "<<minbanda<<" maximo: "<<maxbanda<<endl;
i+=1;
}
while(i<=j);
i=1;
//
//
/*la computadora procederá a clasificar datos ahora.*/
//
//
int t=1,s=0;float banda[l][t];//<<<<< DECLARACIÓN DE VARIABLES!!!!!>>>>>
i=1;
l=1;
//
do
{
//
for(i=1;i<=k;i++)
{
if(notas<=maxbanda[l] && notas>minbanda[l])
{
banda[l]=notas;
// t+=1;
}
else
{
banda[l]=0;
//t+=1;
}
}
//
l+=1;
i=1;
//t=1;
}
while(l<=j);
//
l=1;
do
{
do
{
cout<<"banda "<<l<<"."<<i<<" valor: "<<banda[l][t]<<endl;
i+=1;
}while(i<=k);
l+=1;i=1; }
while(l<=j);
// i=1;
do
{
cout<<notas<<endl;
i+=1;
}
while(i<=k);
getch();
}