elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error de ejecucion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error de ejecucion  (Leído 1,562 veces)
JulioRL8

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Error de ejecucion
« en: 16 Junio 2016, 17:10 pm »

Hola a todos,
sigo con mis practicas de mi carrerra, y se me ha presentado el siguiente problema. Tengo los siguientes codigos:

Código
  1. #include <iostream>
  2. #include "imagen.h"
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[]){
  8.    Imagen uno, dos, salida;
  9.  
  10.    if(argc==5){
  11.        cout << "1" << endl;
  12.        uno.leerImagen(argv[1]);
  13.        dos.leerImagen(argv[2]);
  14.        cout << "2" << endl;
  15.        salida = uno + dos;
  16.        cout << "3" << endl;
  17.        if(argv[4] == "t"){
  18.            cout << "4" << endl;
  19.            ofstream sal;
  20.            sal.open(argv[3]);
  21.            for(int i=0; i<= salida.filas(); i++){
  22.                for(int j=0; j<= salida.columnas(); j++){
  23.                    sal << salida.get(i, j);
  24.                }
  25.                sal << endl;
  26.            }
  27.        }
  28.        if(argv[4] == "b"){
  29.            cout << "5" << endl;
  30.            fstream sal(argv[3], ios::out | ios::binary);
  31.  
  32.            for(int i=0; i<= salida.filas(); i++){
  33.                for(int j=0; j<= salida.columnas(); j++){
  34.                    sal.put(salida.get(i, j));
  35.                }
  36.                sal.put('\n');
  37.            }
  38.  
  39.        }
  40.    }
  41.    else{
  42.        cout << "Error: la forma de usar este programa es: <ejecucion> <imagen1> <imagen2> <imagen_salida> <t(texto) o b(binario)> " << endl;
  43.    }
  44.  
  45. }

A continuación la clase Imagen con los métodos que necesito en el código anterior:

Código
  1. class Imagen{
  2. private:
  3.   byte *datos;  ///< datos de la imagen
  4.   int nfilas; ///< número de filas de la imagen
  5.   int ncolumnas;
  6. public:
  7.  
  8. void Imagen::set(int y, int x, byte v)
  9. {
  10. int i = y * ncolumnas + x;
  11.  
  12. datos[i] = v;
  13. }
  14.  
  15. byte Imagen::get(int y, int x) const
  16. {
  17. int i = y * ncolumnas + x;
  18.  
  19. return datos[i];
  20. }
  21.  
  22. Imagen& Imagen::operator=(const Imagen &otra){
  23.    if(&otra != this){
  24.        cout << "=1" << endl;
  25.        this->nfilas = otra.nfilas;
  26.        cout << "=2" << endl;
  27.        this->ncolumnas= otra.ncolumnas;
  28.        cout << "=3" << endl;
  29.        this->datos = otra.datos;}
  30.    cout << "=4" << endl;
  31.    return *this;
  32.    cout << "=5" << endl;
  33. }
  34.  
  35. Imagen Imagen::operator+(const Imagen &otra){
  36.    Imagen salida;
  37.  
  38.    cout << "+1" << endl;
  39.    salida.nfilas= ncolumnas + otra.ncolumnas;
  40.    if(otra.nfilas > nfilas){
  41.        salida.nfilas= otra.nfilas;
  42.    }
  43.    else{ salida.nfilas= nfilas;}
  44.  
  45.    cout << "+2" << endl;
  46.    salida.datos= new byte [salida.nfilas * salida.ncolumnas];
  47.    cout << "+3" << endl;
  48.    //Inicializar a 0 todos los valores
  49.    for(int c=0; c<= salida.nfilas * salida.ncolumnas; c++ ){
  50.        setPos(c, 0);
  51.    }
  52.    cout << "+4" << endl;
  53.    //Meter primera imagen
  54.    for(int i=0; i<=nfilas; i++){
  55.        for(int j=0; j<=ncolumnas; j++){
  56.            salida.set(i, j, get(i,j));
  57.        }
  58.    }
  59.    cout << "+5" << endl;
  60.    //Meter segunda imagen
  61.    for(int u=nfilas+1; u<= nfilas+otra.nfilas; u++){
  62.        for(int d=ncolumnas+1; d<= ncolumnas + otra.ncolumnas; d++){
  63.            salida.set(u, d, otra.get(u,d));
  64.        }
  65.    }
  66.    cout << "+6" << endl;
  67.    return salida;
  68.    cout << "+7" << endl;
  69. }

La salida al ejecutarlo en consola( con los couts para orientar ) es:
Código
  1. 1
  2. 2
  3. +1
  4. +2
  5. +3
  6. +4
  7. +5
  8. +6
  9. =1
  10. =2
  11. =3
  12. =4
  13. *** Error in `bin/suma': free(): invalid next size (fast): 0x090590f8 ***
  14. Aborted (core dumped)

Gracias de antemano a cualquier ayuda que surja.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error de ejecucion
Programación Visual Basic
At0XXXic0 4 1,812 Último mensaje 19 Marzo 2008, 19:49 pm
por At0XXXic0
Error de ejecucion
Programación C/C++
0xDani 0 1,597 Último mensaje 14 Junio 2012, 20:06 pm
por 0xDani
Error de ejecucion
Programación C/C++
JulioRL8 2 2,101 Último mensaje 14 Junio 2016, 19:47 pm
por JulioRL8
Error en medio de la ejecución
Programación C/C++
novatoc++ 1 1,795 Último mensaje 26 Junio 2019, 20:07 pm
por Eternal Idol
Implementacion de una COLA en C, Error de ejecucion
Programación C/C++
ianmorar03 3 3,003 Último mensaje 15 Abril 2020, 00:57 am
por ianmorar03
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines