示例#1
0
const Lista<T> coso (const Lista<T> lista1, const Lista<T> lista2) {
    Lista<T> resultado;
    int acarreo = 0;
    Lista<T>::IteradorInverso it1 = lista1.principioInverso();
    Lista<T>::IteradorInverso it2 = lista2.principioInverso();
    
    while (it1 != lista1.finalInverso() && it2 != lista2.finalInverso()) {
        T temp = it1.elem() + it2.elem();
        resultado.ponDr ((temp % 10) + acarreo);
        acarreo = temp / 10;
        
        it1.avanza();
        it2.avanza();
    }
    
    while (it1 != lista1.finalInverso()) {
        resultado.ponDr ((it1.elem() + acarreo) % 10);
        acarreo = (it1.elem() + acarreo) / 10;
        it1.avanza();
    }
    
    if (it2 != lista2.finalInverso()) {
        resultado.ponDr ((it2.elem() + acarreo) % 10);
        acarreo = (it2.elem() + acarreo) / 10;
        it2.avanza();
    }
    
    return resultado;
}
示例#2
0
int viaDeEntrada(Pila<int> &entrada, Lista<int> &secuenciaSalida) {
    
    int numeroVagones = 0;
    
    //cout << "Introduzce el número de bagones: ";
    
    cin >> numeroVagones;
    
    if ( numeroVagones != 0) {
        //cout << endl << "Escriba la secuencia resultante de los bagones: " << endl;
        
        for (int n = 0; n < numeroVagones; n++) {
            
            //if( n > 0 ) cout << "Queda/n " << numeroVagones-n << " bagón/es." << endl;
            
            int a;
            
            cin >> a;
            
            secuenciaSalida.ponDr(a);
        }
        
        for (int j = numeroVagones; j > 0 ; j--) {
            entrada.apila(j);
        }
    }
    
    return numeroVagones;
}