Alguien que me ayude con este programa en C++

Iniciado por andreampere, 6 Septiembre 2014, 16:40 PM

0 Miembros y 1 Visitante están viendo este tema.

andreampere

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();             
}

Saberuneko

#1
He identado el código ordenadito. Como lo tenías era ilegible.

Código (cpp) [Seleccionar]
#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 andas."<<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();             
}

andreampere

Gracias! sin embargo aún espero la respuesta! (soy nuevo en el foro, hice la publicación lo más basica acorde con el tema y de manera rápida... jijiji) ;D  :(