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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 ... 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 [84] 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 ... 102
831  Programación / Programación C/C++ / Re: Aryuda con arrays con strings en: 10 Enero 2019, 22:21 pm
Los vectores de la stl no se usan así. Mírate en cualquier sitio cómo funciona un vector y cómo funciona la función <fgets()>. Tienes que crear una variable auxiliar y después meterla en el vector, a grandes rasgos...

PD: Creo que estás interpretando mal el ejercicio, un array de palabras es un array de <string>, no de <char>. Has creado un vector de caracteres, no se palabras.

Aparte de eso, aunque el <for> se puede usar como lo estás usando en ese código, no es muy correcto. De todos modos el error más grave es el tipo del vector, miratelo a ver. Suerte :-X
832  Programación / Programación C/C++ / Re: ayuda matrices en: 10 Enero 2019, 18:40 pm
Alguien me puede decir si asi es el metodo correcto para llenar  una matriz?

Pon tu código entre etiquetas de código GeSHi porque la letra i entre corchetes es una etiqueta de cursiva y no se ve correctamente, sino que la etiqueta desaparece y parece que estás accediendo mal a los elementos de la matriz. Suerte :-X
833  Programación / Programación C/C++ / Re: pasar procedimientos recursivos a funciones en bst en: 10 Enero 2019, 04:05 am
Puedo estar equivocado, pero creo que cantidad_nodos debería sumar siempre uno.

Aunque lo ha llamado <cantidad_nodos> lo que quiere es contabilizar los nodos que tienen un único hijo, por eso está implementado así :-X

Y este  otro procedimiento cuenta la cantidad de nodos que tienen un solo hijito
834  Programación / Programación C/C++ / Re: ingresar datos a lista en: 7 Enero 2019, 15:16 pm
Aquí tienes unos cuantos líos y cosas que no están bien entendidas...
Lo primero las clases y estructuras es mejor que las declares fuera de ninguna otra función. Es decir, antes de la función <testList()>.

Y ahora voy a intentar explicarte la idea de crear esa estructura. Si quieres hacer una lista de valores en forma polar, para no meter por un lado el módulo y por otro el ángulo, lo que se hace es un objeto que engloba ambos, es decir, en vez de tener dos variables de tipo <double> (modulo y angulo), se tiene una variable de tipo <polar> y esa variable por dentro lleva guardados tanto el módulo como el ángulo para que no guardarlos por ahí sueltos.
Entonces la lista tiene que ser de tipo <polar>, no de tipo <int> ni <double>.

Tú has creado una variable que creo que piensas que es de tipo <polar> pero no es así. Esa es una variable que es de tipo <int> o <double> según el caso y que se llama polar. Nada que ver con lo que quieres hacer. Para crear una variable de tipo polar y guardar valores dentro es así:
Código
  1. polar variable_polar;
  2. variable_polar.modulo = // lo que sea;
  3. variable_polar.angulo = // lo que sea;

Una vez que tengas esa variable de tipo <polar> con sus datos actualizados entonces es cuando ya puedes meterlo en la lista. Es decir, meter tu variable de tipo <polar> en tu lista de tipo <polar>.

Ahora vamos al <case 2:>:
Parece que quieres hacer una cola <queue> usando una lista. Si usas el método para sacar el elemento del frente, no necesita ningún parámetro, el elemento del frente sólo es uno, no hay otro. Si sacas el elemento de la cola ya no existe, entonces si quieres mostrarlo tienes que guardarlo en algún sitio. O lo que se suele hacer es mostrar primero el elemento que hay al frente de la cola y cuando ya lo has mostrado, lo sacas de esta. Estás usando continuamente la variable llamada <polar> que no pinta nada.

Y ya para terminar te recomiendo que hagas un <default> en el <switch> por si introduces un número que no sea {1,2,3} porque si es 1 o 2 haces lo que que has implementado, si es 3 acaba, pero si alguien introduce 4??

Creo que tienes un lío de conceptos y te recomiendo aclarar eso antes de seguir con programas mayores... Suerte :-X
835  Programación / Programación C/C++ / Re: Sobrecarga operador -> [C++] en: 6 Enero 2019, 17:21 pm
La variable <private_iterator> es un std::set<T>::iterator, es decir; un iterador de set. El tema de hacer que devuelva un puntero a entero es porque si no se usa la flecha la otra alternativa sería esta:
Código
  1. (*private_iterator).metodo();
  2. private_iterator->metodo();

Por eso he deducido que el valor de retorno del operador -> sería un puntero al tipo de dato que retorna el *.

PD: No he probado si se soluciona con lo que me comentas de hacer el método constante. Cuando pueda lo probaré y si funciona ya lo comentaré por aquí. Es que he estado buscando bastante información en internet sobre este operador y sobre sobrecargarlo y lo único que he encontrado es que se puede sobrecargar pero no he encontrado cómo se haría. Gracias por la respuesta :-X



Pues mira, creo que poniendo
Código
  1. int operator->()const

Ya he probado esto a ver si funciona y no. Tengo el mismo problema usando esa función que si uso la primera que he mostrado yo. De momento la única solución que he encontrado es que el valor de retorno sea constante. Si alguien sabe algo más al respecto... :-X
836  Programación / Programación C/C++ / Sobrecarga operador -> [C++] en: 6 Enero 2019, 10:30 am
Tengo la siguiente clase y estoy intentando sobrecargar el operador -> pero sólo puedo sobrecargarlo con constantes, me explico:
Código
  1. class ConjuntoEnteros{
  2.    private:
  3.        std::set<int> private_set;
  4.    public:
  5.        ConjuntoEnteros();
  6.        // ...
  7.        class Iterator{
  8.            private:
  9.                 std::set<int>::iterator private_iterator;
  10.            public:
  11.                  Iterator();
  12.                  // ...
  13.                  int* operator->(){
  14.                      return &*private_iterator;
  15.                  }
  16.         };
  17. };

Entonces si intento sobrecargar ese operador -> me da un error. Lo he conseguido solucionar modificándolo así:
Código
  1. const int* operator->(){
  2.     return &*private_iterator;
  3. }

Entonces no sé si es posible sobrecargar ese operador cómo lo había intentado al principio o siempre tiene que ser constante. :-X
837  Programación / Programación C/C++ / Re: Ayuda en funciones en estructuras en: 4 Enero 2019, 17:52 pm
Código
  1. Complejo sumar(Complejo, Complejo);
Esto es el prototipo de una función a la que se le pasan dos variables de tipo <Complejo> (que es la <struct> que has creado) y retorna otro valor de tipo <Complejo>. Es como poner:
Código
  1. int sumar(int, int); // suma dos enteros y retorna la suma

Cuando haces un prototipo no es necesario poner el nombre de la variable ya que no lo vas a usar pero cuando defines la función, sí. Por eso en el prototipo (línea 7) sólo he puesto el tipo de variable que toma como parámetros y en la definición de la función (líneas 19-24) les pongo nombre a cada parámetro (a y b respectivamente) porque en la definición sí los voy a usar.

Si pones en la línea 7:
Código
  1. Complejo sumar(Complejo a, Complejo b);
también es válido. O con cualquier otro nombre en vez de a y b puedes poner num1, num2 o lo que quieras. En esta función no importa mucho el nombre porque es algo muy sencillo pero en funciones más largas o complejas es recomendable usar nombres que te ayuden a entender lo que hacen por ejemplo:
Código
  1. Complejo convertir(double real, double imaginaria){
  2.    Complejo resultado;
  3.    resultado.real = real;
  4.    resultado.imaginaria = imaginaria;
  5.    return resultado;
  6. }

Suerte :-X
838  Programación / Programación C/C++ / Re: ingresar datos a lista en: 4 Enero 2019, 16:31 pm
Sugeriría escribir los métodos de conversión fuera de las clases, para no crear una dependencia entre ellas.
Entiendo que con escribir los métodos de conversión fuera de las clases te refieres a hacer dos funciones. Mi primera duda es por qué sería mejor así? Es algo que desconozco :rolleyes:
Y tampoco sé si habría alguna diferencia entre hacer dos funciones con nombres distintos y parámetros distintos es decir...:
Código
  1. Rectangular convertirEnRectangular(Polar);
  2. Polar convertirEnPolar(Rectangular);
... o sobrecargar una misma función para ambos casos:
Código
  1. Rectangular convertir(Polar);
  2. Polar convertir(Rectangular);
839  Programación / Programación C/C++ / Re: recorrer una cadena de caracteres en: 4 Enero 2019, 16:22 pm
He he estado dando vueltas a la cosa... :rolleyes:  quizás así es mejor  :laugh:

Código
  1. int NumeroVocales(char * Cadena)
  2. {
  3.    int i,x,a = 0 ;
  4.    for (i=0; Cadena[i] != '\0';i++)
  5.    {
  6.       x = Cadena[i];
  7.       if (x <= 90) x += 32;
  8.       if (x == 'a'|| x == 'e' || x == 'i' || x == 'o' || x == 'u')a++;
  9.    }
  10.    return a;
  11. }
  12.  

Aunque para este caso puede funcionar no es muy recomendable ese <if> de la línea 7. Ya que vas a convertir más caracteres de los que deberías, por ejemplo, los espacios los vas a convertir en arrobas y repito, aunque para este ejercicio no influye, no es muy correcto. Para eso está la función <tolower()> o si se hace usando los valores en ascii es mejor comprobar que es una letra es decir:
Código
  1. // usando variable char
  2. char caracter;
  3. if(caracter >= 'A' && caracter <= 'Z'){
  4.    // es mayuscula, haces lo que sea...
  5. }
  6.  
  7. // usando variable entera
  8. int caracter_ascii;
  9. if(caracter_ascii >= 65 && caracter_ascii <= 90){
  10.    // es mayuscula, haces lo que sea...
  11. }
840  Programación / Programación C/C++ / Re: Ayuda en funciones en estructuras en: 4 Enero 2019, 13:52 pm
Las funciones se declaran fuera del main y se usan dentro de este
Código
  1.  
  2. struct Complejo{
  3.    double real;
  4.    double imaginario;
  5. };
  6.  
  7. Complejo sumar(Complejo, Complejo);
  8.  
  9. int main(){
  10.    Complejo num1, num2; // mejor declararlos locales, no globales
  11.    num1.real = 2;
  12.    num1.imaginario = 1;
  13.    num2.real = 3;
  14.    num2.imaginario = 2;
  15.  
  16.    Complejo suma = sumar(num1, num2);
  17. }
  18.  
  19. Complejo sumar(Complejo a, Complejo b){
  20.    Complejo suma;
  21.    suma.real = a.real + b.real;
  22.    suma.imaginario = a.imaginario + b.imaginario;
  23.    return suma;
  24. }

Las sumas de tu función sobra el = de cada +=. Eso se usa para otra cosa. Suerte :-X
Páginas: 1 ... 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 [84] 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 ... 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines