Ver Mensaje Individual
  #9 (permalink)  
Antiguo 29/03/2010, 15: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

Espero que así se vea bien y me podais ayudar con el maldito error..

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. void FiltradoIIR(TFileWAV &wave, TFileWAV &wave_outB1, TMemoriaFiltIIR &mem_inB1, TMemoriaFiltIIR &mem_outB1, TCoefFiltIIR &coefB1_A, TCoefFiltIIR &coefB1_B);
  108. void FiltradoIIR(TFileWAV &wave, TFileWAV &wave_outB2, TMemoriaFiltIIR &mem_inB2, TMemoriaFiltIIR &mem_outB2, TCoefFiltIIR &coefB2_A, TCoefFiltIIR &coefB2_B);
  109. void FiltradoIIR(TFileWAV &wave, TFileWAV &wave_outB3, TMemoriaFiltIIR &mem_inB3, TMemoriaFiltIIR &mem_outB3, TCoefFiltIIR &coefB3_A, TCoefFiltIIR &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. }
  119.  
  120. //Escribo Fichero de Salida
  121. EscribirFichWave(mfo, waveout);
  122. EscribirFichWave(mfoB1, wave_outB1);
  123. EscribirFichWave(mfoB2, wave_outB2);
  124. EscribirFichWave(mfoB3, wave_outB3);
  125.  
  126. mfi.close();
  127. mfo.close();
  128. mfoB1.close();
  129. mfoB2.close();
  130. mfoB3.close();
  131.  
  132. system("pause");
  133. return 0;
  134. }
  135.  
  136. //Procedimientos Utilizados
  137. void LeerFichWave(fstream &mfi, TFileWAV &wave){
  138. long i,tamano;
  139. TInfo datos;
  140.  
  141. mfi.read((char *)&wave.cab, sizeof(TCabWAV));
  142.  
  143. tamano=wave.cab.bytData/2;
  144. for (i=0;i<tamano;i++){
  145. mfi.read((char *)&datos, sizeof(TInfo));
  146. wave.datos[i]=datos;
  147. }
  148.  
  149. }
  150.  
  151. void EscribirFichWave( fstream &mfo, TFileWAV &waveout){
  152. long i,tamano;
  153. TInfo dato;
  154.  
  155. mfo.write((char *)&waveout.cab, sizeof(TCabWAV));
  156.  
  157. tamano=waveout.cab.bytData/2;
  158. for(i=0;i<tamano;i++){
  159. dato=waveout.datos[i];
  160. mfo.write((char *)&dato, sizeof(TInfo));
  161. }
  162.  
  163. }
  164.  
  165. void FiltradoIIR(TFileWAV &wave, TFileWAV &wave_out, TMemoriaFiltIIR &mem_in, TMemoriaFiltIIR &mem_out, TCoefFiltIIR &coef_A, TCoefFiltIIR &coef_B){
  166.  
  167. long i, tamano;
  168. float muestra_in,muestra_out;
  169.  
  170. //wave_out.cab=wave.cab;
  171.  
  172. tamano=wave.cab.bytData/2;
  173. for (i=0;i<tamano;i++){
  174. muestra_in=float(wave.datos[i]);
  175. 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];
  176. wave_out.datos[i]=short(muestra_out);
  177. if (i==0){
  178. mem_in[1]=0.0;
  179. mem_out[1]=0.0;
  180. }else{
  181. mem_in[1]=mem_in[0];
  182. mem_out[1]=mem_out[0];
  183. }
  184. mem_in[0]=muestra_in;
  185. mem_out[0]=muestra_out;
  186. }
  187. }
  188.  
  189. void InicializacionMemFiltIIR(TMemoriaFiltIIR &mem_in,TMemoriaFiltIIR &mem_out){
  190.  
  191. mem_in[0]=0.0;
  192. mem_in[1]=0.0;
  193. mem_out[0]=0.0;
  194. mem_out[1]=0.0;
  195.  
  196. }
  197.  
  198. void VisualizarCab(const TCabWAV cab){
  199.  
  200. cout<<"CABECERA DEL FICHERO WAV"<<endl;
  201. cout<<endl;
  202. cout<<"Identificador RIFF: "<<cab.RIFF<<endl;
  203. cout<<"Tamano fichero: "<<cab.tamano<<endl;
  204. cout<<"Identificador WAVE: "<<cab.WAVE<<endl;
  205. cout<<"Identificador del formato fmt: "<<cab.fmt<<endl;
  206. cout<<"Tamano del bloque de formato: "<<cab.tamfmt<<endl;
  207. cout<<"Formato PCM: "<<cab.fmtPCM<<endl;
  208. cout<<"Numero de Canales: "<<cab.nCanales<<endl;
  209. cout<<"Muestra por segundo: "<<cab.mueseg<<endl;
  210. cout<<"Bytes por segundo: "<<cab.bytSeg<<endl;
  211. cout<<"Bytes por bloque: "<<cab.bytBlq<<endl;
  212. cout<<"Bytes por muestra: "<<cab.bytMue<<endl;
  213. cout<<"Data: "<<cab.DATA<<endl;
  214. cout<<"Numero de bytes de datos: "<<cab.bytData<<endl;
  215.  
  216. }