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ú

Temas - JulioRL8

#1
GNU/Linux / Duda bash de linux
7 Septiembre 2016, 00:33 AM
Hola buenas.
Estoy estudiando el bash de linux en mi carrera, y en los apuntes explican mal el como convertir ' en un caracter(ya que bash lo interpreta de uina manera especial tanto ' como $). Resulta que para escapar solamente hay que poner previamente '\'. Muy bien pues hago lo siguiente.

...$ echo 'En el libro de inglés aparece Peter'\''s cat'
'En el libro de inglés aparece Peter'''s cat'

Y esto es lo que me ocurre. Me salen 3 veces '. Por favor alguien me explique bien como se usa '\'.


#2
Programación C/C++ / Error de ejecucion
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 (cpp) [Seleccionar]
#include <iostream>
#include "imagen.h"
#include <fstream>

using namespace std;

int main(int argc, char *argv[]){
    Imagen uno, dos, salida;

    if(argc==5){
        cout << "1" << endl;
        uno.leerImagen(argv[1]);
        dos.leerImagen(argv[2]);
        cout << "2" << endl;
        salida = uno + dos;
        cout << "3" << endl;
        if(argv[4] == "t"){
            cout << "4" << endl;
            ofstream sal;
            sal.open(argv[3]);
            for(int i=0; i<= salida.filas(); i++){
                for(int j=0; j<= salida.columnas(); j++){
                    sal << salida.get(i, j);
                }
                sal << endl;
            }
        }
        if(argv[4] == "b"){
            cout << "5" << endl;
            fstream sal(argv[3], ios::out | ios::binary);

            for(int i=0; i<= salida.filas(); i++){
                for(int j=0; j<= salida.columnas(); j++){
                    sal.put(salida.get(i, j));
                }
                sal.put('\n');
            }

        }
    }
    else{
        cout << "Error: la forma de usar este programa es: <ejecucion> <imagen1> <imagen2> <imagen_salida> <t(texto) o b(binario)> " << endl;
    }

}


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

Código (cpp) [Seleccionar]
class Imagen{
private:
   byte *datos;  ///< datos de la imagen
   int nfilas; ///< número de filas de la imagen
   int ncolumnas;
public:

void Imagen::set(int y, int x, byte v)
{
int i = y * ncolumnas + x;

datos[i] = v;
}

byte Imagen::get(int y, int x) const
{
int i = y * ncolumnas + x;

return datos[i];
}

Imagen& Imagen::operator=(const Imagen &otra){
    if(&otra != this){
        cout << "=1" << endl;
        this->nfilas = otra.nfilas;
        cout << "=2" << endl;
        this->ncolumnas= otra.ncolumnas;
        cout << "=3" << endl;
        this->datos = otra.datos;}
    cout << "=4" << endl;
    return *this;
    cout << "=5" << endl;
}

Imagen Imagen::operator+(const Imagen &otra){
    Imagen salida;

    cout << "+1" << endl;
    salida.nfilas= ncolumnas + otra.ncolumnas;
    if(otra.nfilas > nfilas){
        salida.nfilas= otra.nfilas;
    }
    else{ salida.nfilas= nfilas;}

    cout << "+2" << endl;
    salida.datos= new byte [salida.nfilas * salida.ncolumnas];
    cout << "+3" << endl;
    //Inicializar a 0 todos los valores
    for(int c=0; c<= salida.nfilas * salida.ncolumnas; c++ ){
        setPos(c, 0);
    }
    cout << "+4" << endl;
    //Meter primera imagen
    for(int i=0; i<=nfilas; i++){
        for(int j=0; j<=ncolumnas; j++){
            salida.set(i, j, get(i,j));
        }
    }
    cout << "+5" << endl;
    //Meter segunda imagen
    for(int u=nfilas+1; u<= nfilas+otra.nfilas; u++){
        for(int d=ncolumnas+1; d<= ncolumnas + otra.ncolumnas; d++){
            salida.set(u, d, otra.get(u,d));
        }
    }
    cout << "+6" << endl;
    return salida;
    cout << "+7" << endl;
}


La salida al ejecutarlo en consola( con los couts para orientar ) es:
Código (bash) [Seleccionar]
1
2
+1
+2
+3
+4
+5
+6
=1
=2
=3
=4
*** Error in `bin/suma': free(): invalid next size (fast): 0x090590f8 ***
Aborted (core dumped)


Gracias de antemano a cualquier ayuda que surja.
#3
Programación C/C++ / Error de ejecucion
14 Junio 2016, 17:17 PM
Buenas, soy estudiante de primero de ingenieria informatica y tengo el siguiente problema. En el uso del siguiente metodo me sale un error que dice segmentation fault (core dumped). Creo entender que hago un mal uso de algun puntero y por eso me sale.

Este es el metodo:
Código (cpp) [Seleccionar]
void insertar(string cadena){
   Celda *puntero;
   puntero = cabecera;
   while(puntero->siguiente != 0){
       puntero = puntero->siguiente;
   }
   puntero->datos=cadena;
   puntero->siguiente= new Celda;
}


Y esta la clase y el struct que  se utiliza:
Código (cpp) [Seleccionar]
struct Celda{
string datos; ///valor de la celda actual
Celda * siguiente;  ///puntero al siguiente elemento de la lista
};

class Lista{

private:
  Celda * cabecera;
public:
//metodos...