Ver Mensaje Individual
  #18 (permalink)  
Antiguo 30/03/2010, 06:24
yomismo138
 
Fecha de Ingreso: marzo-2010
Mensajes: 13
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Mi programa no llega al main

Aquí expongo el programa comentando las funciones y estructura que me producen el error. Así funciona correctamente, leo el fichero .wav creo otro fichero .wav igual al de entrada..

Código c++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. //Declaración de Constantes
  8. const long MAXMUE=500000;
  9. const unsigned short MAXCAD= 20;
  10. //const unsigned short MAXMEMIIR=2; //Coloco el numero de elementos
  11. //const unsigned short MAXCOEFIIR=3;
  12.  
  13. //Declaración de Estructura de Datos
  14. typedef char TCadena[MAXCAD];
  15.  
  16. struct TCabWAV{
  17.        char RIFF[4];
  18.        int tamano;
  19.        char WAVE [4];
  20.        char fmt [4];
  21.        int tamfmt;
  22.        short fmtPCM;
  23.        short nCanales;
  24.        int mueseg;
  25.        int bytSeg;
  26.        short bytBlq;
  27.        short bytMue;
  28.        char DATA [4];
  29.        int bytData;
  30. };
  31.  
  32. typedef short TInfo;
  33. //typedef float TCoef;
  34.  
  35. //typedef TCoef TMemoriaFiltIIR[MAXMEMIIR];
  36. //typedef TCoef TCoefFiltIIR[MAXCOEFIIR];
  37. typedef TInfo TVectorMuestras[MAXMUE];
  38.  
  39. struct TFileWAV{
  40.        TCabWAV cab;
  41.        TVectorMuestras datos;
  42. };
  43.  
  44. //Declaración de Cabeceras de Procedimientos
  45. void LeerFichWave(fstream &mfi, TFileWAV &wave);
  46. void EscribirFichWave(fstream &mfo, TFileWAV &waveout);
  47. void VisualizarCab(const TCabWAV cab);
  48. //void InicializacionMemFiltIIR(TMemoriaFiltIIR &mem_in,TMemoriaFiltIIR &mem_out);
  49. //void FiltradoIIR(TFileWAV &wave, TFileWAV &wave_out, TMemoriaFiltIIR &mem_in, TMemoriaFiltIIR &mem_out, TCoefFiltIIR &coef_A, TCoefFiltIIR &coef_B);
  50.  
  51. int main()
  52. {
  53.  
  54. cout<<"empieza el main.."<<endl;
  55. system("pause");
  56.  
  57. TCadena nombreout;//nombreoutB1, nombreoutB2, nombreoutB3;
  58. TFileWAV wave,waveout;//wave_outB1,wave_outB2,wave_outB3;
  59. fstream mfi, mfo;//mfoB1, mfoB2, mfoB3;
  60. long i, tamano;
  61. //float muestra;
  62. //TMemoriaFiltIIR mem_inB1,mem_outB1,mem_inB2,mem_outB2,mem_inB3,mem_outB3;
  63. //TCoefFiltIIR coefB1_A, coefB1_B, coefB2_A, coefB2_B, coefB3_A, coefB3_B;
  64.  
  65. //Abro y Creo el fichero de salida
  66.     cout<<"-------- SOFTWARE CRD POR BANDAS ----------"<<endl;
  67.     mfi.open("sultans.wav", ios::in |ios::binary);
  68.     if(!mfi.is_open()) {
  69.       cout<<"Error al abrir el fichero"<<endl;
  70.       system("pause");
  71.     }else{
  72.           cout<<"Por favor, inserte nombre de fichero que desea crear: ";
  73.           cin>>nombreout;
  74.           mfo.open(nombreout, ios::out|ios::binary);/*
  75.           cout<<"Por favor, inserte nombre de fichero que desea crear Banda1: ";
  76.           cin>>nombreoutB1;
  77.           mfoB1.open(nombreoutB1, ios::out|ios::binary);
  78.           cout<<"Por favor, inserte nombre de fichero que desea crear Banda2: ";
  79.           cin>>nombreoutB2;
  80.           mfoB2.open(nombreoutB2, ios::out|ios::binary);
  81.           cout<<"Por favor, inserte nombre de fichero que desea crear Banda3: ";
  82.           cin>>nombreoutB3;
  83.           mfoB3.open(nombreoutB3, ios::out|ios::binary);*/
  84.     }
  85.  
  86. //Leo Fichero de Entrada
  87.  
  88.     LeerFichWave(mfi, wave);
  89.  
  90. //Visualizo Cabecera
  91.     VisualizarCab(wave.cab);
  92. /*
  93. //Inicialización Constantes
  94.     InicializacionMemFiltIIR(mem_inB1,mem_outB1);
  95.     InicializacionMemFiltIIR(mem_inB2,mem_outB2);
  96.     InicializacionMemFiltIIR(mem_inB3,mem_outB3);
  97.    
  98.     coefB1_A[0]=1 ;coefB1_A[1]=-1.9288 ;coefB1_A[2]=0.9313 ; coefB1_B[0]=0.0006 ;coefB1_B[1]=0.0012 ;coefB1_B[2]=0.0006;
  99.     coefB2_A[0]=1 ;coefB2_A[1]=-1.6833 ;coefB2_A[2]=0.7006 ; coefB2_B[0]=0.1497 ;coefB2_B[1]=0 ;coefB2_B[2]=-0.1497 ;
  100.     coefB3_A[0]=1 ;coefB3_A[1]=-1.4458 ;coefB3_A[2]=0.5690 ; coefB3_B[0]=0.7537 ;coefB3_B[1]=-1.5074 ;coefB3_B[2]=0.7537 ;
  101.  
  102. //Filtrado IIR 3 Bandas
  103.     wave_outB1.cab=wave.cab;
  104.     wave_outB2.cab=wave.cab;
  105.     wave_outB3.cab=wave.cab;
  106.  
  107.     FiltradoIIR(wave, wave_outB1, mem_inB1, mem_outB1, coefB1_A, coefB1_B);
  108.     FiltradoIIR(wave, wave_outB2, mem_inB2, mem_outB2, coefB2_A, coefB2_B);
  109.     FiltradoIIR(wave, wave_outB3, mem_inB3, mem_outB3, coefB3_A, coefB3_B);
  110.  */  
  111. //Proceso    
  112.     waveout.cab=wave.cab;
  113.     tamano=wave.cab.bytData/2;
  114.    
  115.     for(i=0;i<tamano;i++){
  116.        //muestra=float(wave_outB1.datos[i]+wave_outB2.datos[i]+wave_outB3.datos[i]);
  117.        //waveout.datos[i]=short(muestra);
  118.        waveout.datos[i]=wave.datos[i];
  119.     }
  120.    
  121. //Escribo Fichero de Salida
  122.     EscribirFichWave(mfo, waveout);
  123.     /*EscribirFichWave(mfoB1, wave_outB1);
  124.     EscribirFichWave(mfoB2, wave_outB2);
  125.     EscribirFichWave(mfoB3, wave_outB3);*/
  126.  
  127. mfi.close();
  128. mfo.close();/*
  129. mfoB1.close();
  130. mfoB2.close();
  131. mfoB3.close();*/
  132.  
  133. system("pause");
  134. return 0;
  135. }
  136.  
  137. //Procedimientos Utilizados
  138. void LeerFichWave(fstream &mfi, TFileWAV &wave){
  139.     long i,tamano;
  140.     TInfo datos;
  141.    
  142.     mfi.read((char *)&wave.cab, sizeof(TCabWAV));
  143.    
  144.     tamano=wave.cab.bytData/2;
  145.     for (i=0;i<tamano;i++){
  146.         mfi.read((char *)&datos, sizeof(TInfo));
  147.         wave.datos[i]=datos;
  148.     }
  149.  
  150. }
  151.  
  152. void EscribirFichWave( fstream &mfo, TFileWAV &waveout){
  153.     long i,tamano;
  154.     TInfo dato;
  155.    
  156.     mfo.write((char *)&waveout.cab, sizeof(TCabWAV));
  157.    
  158.     tamano=waveout.cab.bytData/2;
  159.     for(i=0;i<tamano;i++){
  160.         dato=waveout.datos[i];
  161.         mfo.write((char *)&dato, sizeof(TInfo));
  162.     }
  163.  
  164. }
  165. /*
  166. void FiltradoIIR(TFileWAV &wave, TFileWAV &wave_out, TMemoriaFiltIIR &mem_in, TMemoriaFiltIIR &mem_out, TCoefFiltIIR &coef_A, TCoefFiltIIR &coef_B){
  167.  
  168.      long i, tamano;
  169.      float muestra_in,muestra_out;
  170.      
  171.      //wave_out.cab=wave.cab;
  172.      
  173.      tamano=wave.cab.bytData/2;
  174.      for (i=0;i<tamano;i++){
  175.          muestra_in=float(wave.datos[i]);
  176.          muestra_out=muestra_in*coef_B[0]+mem_in[0]*coef_B[1]+mem_in[1]*coef_B[2]-mem_out[0]*coef_A[1]-mem_out[1]*coef_A[2];
  177.          wave_out.datos[i]=short(muestra_out);
  178.          if (i==0){
  179.             mem_in[1]=0.0;
  180.             mem_out[1]=0.0;
  181.          }else{
  182.              mem_in[1]=mem_in[0];
  183.              mem_out[1]=mem_out[0];
  184.          }
  185.          mem_in[0]=muestra_in;
  186.          mem_out[0]=muestra_out;    
  187.      }
  188. }
  189.  
  190. void InicializacionMemFiltIIR(TMemoriaFiltIIR &mem_in,TMemoriaFiltIIR &mem_out){
  191.      
  192.      mem_in[0]=0.0;
  193.      mem_in[1]=0.0;
  194.      mem_out[0]=0.0;
  195.      mem_out[1]=0.0;
  196.  
  197. }
  198. */
  199. void VisualizarCab(const TCabWAV cab){
  200.    
  201.      cout<<"CABECERA DEL FICHERO WAV"<<endl;
  202.      cout<<endl;
  203.      cout<<"Identificador RIFF:   "<<cab.RIFF<<endl;
  204.      cout<<"Tamano fichero:       "<<cab.tamano<<endl;
  205.      cout<<"Identificador WAVE:   "<<cab.WAVE<<endl;
  206.      cout<<"Identificador del formato fmt:   "<<cab.fmt<<endl;
  207.      cout<<"Tamano del bloque de formato:    "<<cab.tamfmt<<endl;
  208.      cout<<"Formato PCM:   "<<cab.fmtPCM<<endl;
  209.      cout<<"Numero de Canales:    "<<cab.nCanales<<endl;
  210.      cout<<"Muestra por segundo:    "<<cab.mueseg<<endl;
  211.      cout<<"Bytes por segundo:    "<<cab.bytSeg<<endl;
  212.      cout<<"Bytes por bloque:     "<<cab.bytBlq<<endl;
  213.      cout<<"Bytes por muestra:     "<<cab.bytMue<<endl;
  214.      cout<<"Data:    "<<cab.DATA<<endl;
  215.      cout<<"Numero de bytes de datos:    "<<cab.bytData<<endl;
  216.  
  217. }