Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - loadenro

#11
Programación C/C++ / Re: ayuda con funciones
4 Abril 2014, 18:22 PM
cree una estructura dentro de la funcion histograma de la siguente forma:
struct datos
{
std::vector<float> simbolos;
std::vector<float> frecuencias;
}cd1;

y en  cd1 copie los vectores frecuencias y simbolos, pero no se como devolver cd1, creo q lo que tengo mal es la declaracion de la funcion histograma ¿como deberia declarar esa funcion para que pueda retornar una estructura?
#12
Programación C/C++ / Re: ayuda con funciones
4 Abril 2014, 00:39 AM
ya arregle el problema, al declarar las funciones como me dijiste si funciono, muchas gracias, sin embargo ahora necesito que la funcion histograma me devuelva dos vectores (simbolos y frecuencias) y pues estoy en eso
#13
Programación C/C++ / Re: ayuda con funciones
3 Abril 2014, 22:20 PM
realice los cambios y me sigue dando error
a function-definition is not allowed here before '{' token
revise todos las llaves y las tengo completas, entonces el error debe ser en la forma de declarar la funcion creo yo
#14
Programación C/C++ / Re: ayuda con funciones
2 Abril 2014, 23:17 PM
al quitarle los corchetes me da el siguiente error
cannot convert `std::vector<float, std::allocator<float> >' to `float' for argument `1' to `void histograma(float)'
void histograma(float trazas ) asi declare la funcion
histograma(traza); asi la llamo
#15
Programación C/C++ / Re: ayuda con funciones
2 Abril 2014, 23:03 PM
void histograma(float trazas[] ), asi estoy declarando la funcion
histograma(traza[]); asi la estoy llamando, por el momento solo queria pasar a trazas a histograma, sin que histograma me retornara algun valor, pero igual me da error. A continuacion presento el codigo

#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <cstdlib>
#include <vector>

////////
using namespace std;
void histograma(float trazas[]);
int main ()
{std::vector<float> simbolos;
std::vector<float> frecuencias;
std::vector<float> probabilidades;
FILE *archivo;
char caracter;
std::vector<float> ayudante;
std::vector<float> traza;
float ayuda;
    char numPtr[1];
    float por=5;
archivo = fopen("D:\\entrada10.txt","r");

if (archivo == NULL){

printf("\nError de apertura del archivo. \n\n");
        }else{


    printf("\nEl contenido del archivo de prueba es \n\n");

    while (feof(archivo) == 0)
    {
caracter = fgetc(archivo);
// printf("%c",caracter);
numPtr[1]=caracter;
ayuda=float(numPtr[1]-48);
// cout<<"\n ayuda="<<ayuda;
int kk=0;
ayudante.push_back(ayuda);
////////////////////////////////// aqui empezamos a tranformar
if (ayuda==-38)

{
//      for(int ii=0;ii<ayudante.size();ii++)////mostrando ayudante
//                     {cout<<"\n ayudante["<<ii<<"]="<<ayudante[ii];}
                       if (ayudante[0]==-3)/////saber si es negativo
      { kk=1;
      ayudante.erase (ayudante.begin());
     
              }//////////
              ayudante.pop_back();
        int i=0;
        float suma=0;
        int cifras=0;/////dice cuantas cifras enteras tiene
        while (i<ayudante.size()) ///////saber cuantas cifras enteras tiene
        {     if(ayudante[i]==-2)//contador de cifras enteras
              {cifras=i;
              i=ayudante.size();
              }
             else
             {i++;
                 cifras=i;
                 }
             ;   
         }        //////////termina while     
         int ii=0;
         int cifraaux=cifras;
         float aux=0;
         int k=0;
         while (cifras>1)/////parte entera
               {aux=ayudante[ii];
               k=cifras;
               while (k>1) ///////multiplicaciones parte entera
                     {aux=aux*10;
                     k--;
                      }
               cifras--;
               ii++;
               suma=suma+aux;
//               cout<<"\n suma="<<suma;
               }
               suma=suma+ayudante[ii];
               int deci=ayudante.size()-cifraaux-1;
               ii=ayudante.size()-1;
               while (deci>0)////parte decimal
                     {aux=ayudante[ii];
                     k=deci;
                     while(k>0)///haciendo decimales
                               {aux=aux/10;
                               k--;
                               }
                     deci--;
                     ii--;
                     suma=suma+aux;
//                     cout<<"\n suma="<<suma;
                     }
                     if (kk==1)/////////signo negativo
                     {traza.push_back(suma*-1);
                     }
                     else
                     {traza.push_back(suma);
                     }
//                     for(int ii=0;ii<traza.size();ii++)////mostrando ayudante
//                     {cout<<"\n traza["<<ii<<"]="<<traza[ii];}
                     ayudante.clear();
                     /////////////haciendo visajes
                     int tamanotraza=traza.size();
                     ///////////////
      /////////////llamado a histograma
     histograma(traza[]);
     ///////////////////////
     return 0;
}


///////////////funcion HISTOGRAMA
void histograma(float trazas[] )
{
      int contfre=0;
simbolos.push_back(traza[0]);
for (int ii=0;ii<traza.size();ii++)
            {if (traza[ii]==traza[0])
                {contfre++;}
            }
frecuencias.push_back(contfre);
cout<<"\n simbolos[0]="<<simbolos[0];
cout<<"\n frecuencias[0]="<<frecuencias[0];
           

for (int i=1;i<traza.size();i++)
{int cont=0;
int contfre=0;
     for (int ii=0;ii<simbolos.size();ii++)
         {if (traza[i]==simbolos[ii])
             {cont++;
             break;}
         }
     if (cont==0)
        {simbolos.push_back(traza[i]);
        for (int ii=i;ii<traza.size();ii++)
            {if (traza[ii]==traza[i])
                {contfre++;}
            }
        frecuencias.push_back(contfre);
        }
       
}
for(int ii=0;ii<simbolos.size();ii++)
                     {cout<<"\n simbolos["<<ii<<"]="<<simbolos[ii];
                     cout<<"\n frecuencias["<<ii<<"]="<<frecuencias[ii];}
float sumama=0;
for(int ii=0;ii<simbolos.size();ii++)
{sumama=sumama+frecuencias[ii];}
cout<<"\n sumama="<<sumama;
for(int ii=0;ii<simbolos.size();ii++)
{float ayuda=0;
ayuda=frecuencias[ii]/sumama;
probabilidades.push_back(ayuda);
cout<<"\n probabilidades["<<ii<<"]="<<probabilidades[ii];}
  float sumamam=0;
for(int ii=0;ii<simbolos.size();ii++)
{sumamam=sumamam+probabilidades[ii];}
cout<<"\n sumamam="<<sumamam;

  }


#16
Programación C/C++ / ayuda con funciones
2 Abril 2014, 22:51 PM
tengo un proyecto que consta de varios módulos, pero por el momento los he probado como archivos independientes, estoy tratando de unirlos y para eso necesito utilizar funciones, he realizado varias combinaciones pero en todas me da error, estoy utilizando Devc++, uno de los módulos realiza el histograma de unos datos que proceden de un archivo .txt, con la lectura del archivo no tengo problema, ni con la conversión char a float, el problema es cuando intento realizar el histograma de esos datos. a continuación menciono cuales serian las entradas y salidas del histograma:
entrada: traza (traza es un vector declarado de la siguiente forma std::vector <float> traza)
salidas:frecuencias y simbolos(ambos declarados de la misma manera que traza)
cabe especificar que no conozco el largo de los vectores. gracias