martes, 22 de octubre de 2013

Publicado martes, 22 de octubre de 2013 por con 8 comentarios

Conjunto Potencia C++

El siguiente código implementa el conjunto potencia, de un conjunto dado;

#include<iostream>
#include <stdlib.h>

int potencia(int b,int e){
    int i;
    int pot=1;
    for(i=1;i<=e;i++){
          pot=pot*b;
    }
    return pot;
}

int main(){
    int i,j,lim;
    std::string A[100];
    std::cout<<"Ingrese el numero de elementos del conjunto"<<"\n";
    std::cin>>limite;
    for(i=0;i<limite;i++){
       std::cout<<"Ingrese el elemento: "<<i+1<<" ";
       std::cin>>A[i];
    }
    for(i=0;i<potencia(2,limite);i++){
        for(j=0;j<limite;j++){
          if(i & (1<<j))
            std::cout<<A[j];
        }
        std::cout<<"\n";
    }
    system("pause");
    return 0;
 
}
      edit

8 comentarios:

  1. Tira error en string a[100]; PORQUE??? Saludos

    ResponderBorrar
    Respuestas
    1. En que ide lo estas desarrollando, el código que esta aquí esta desarrollado en dev C++, si lo estas desarrollando en eclipse por ejemplo puede ser que se necesite otra librería adicional para poder leer strings

      Borrar
    2. Lo ejecuté en dev C++ y muestra el g++.exe dejó de funcionar.

      Borrar
    3. Realmente no se que les puede fallar, pero aqui dejo un video donde pueden ver el codigo y como se ejecuta normalmente

      https://www.youtube.com/watch?v=6k5tENIM1vk

      Borrar
  2. el comando if(i & (1<<j) como se colocaría en java, o que es lo que hace la condición?

    ResponderBorrar
    Respuestas
    1. En el if (i & (1<<j)), el"1<<j" realiza el desplazamiento de 1 para generar una máscara de bits en la que solo se establece el j-ésimo bit, mientras que el operador & compara cada bit de su primer operando con el bit correspondiente de su segundo operando. Si ambos bits son 1, el bit del resultado correspondiente se establece en 1. De lo contrario, el bit del resultado correspondiente se establece en 0.

      Borrar
  3. pues.... han pasado 3 años desde que este código fue publicado y hay un error que no se ha detectado y posiblemente por eso no funciona (posiblemente no sea eso, actualmente uso c no tengo ningún conocimiento sobre c++ así que por eso no se si es eso o no) pero en la linea donde se declaran las variables de tipo entero una de ellas se llama "lim" pero mas adelante se usa una variable llamada "limite", por lo que entendí de este código (reitero no se nada de c++) la variable lim es la misma que la variable limite pero como limite no esta declarada esta causando que el programa falle(deje de funcionar), así que la solución seria:la variable declarada lim cambiarla por limite, ó , las operaciones realizadas con la variable limite sean cambiadas por operaciones con la variable lim

    ResponderBorrar