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ú

Mensajes - do-while

#581
Programación C/C++ / Re: problema vectores en c
8 Noviembre 2012, 16:15 PM
¡Buenas!

???????????????????????????????????????????

v[t]=(rand()%100+1)/10;//para generar datos float (con decimales)


Ahi tienes una expresion en la que todos los elementos son enteros, luego nunca obtendras un float a partir de ellos si no casteas alguno de ellos... Pero por mucho que promociones alguno de los valores a float (o double, lo que prefieras), el vector en el que almacenas los datos es de tipo int, por lo que al final terminaras truncando el numero real obternido y siempre guardaras un entero.

Si quieres utilizar valores reales, tendras que promocionar alguno de los valores de la expresion que hay a la derecha de la igualdad y tendras que pasar un vector de float o double.

¡Saludos!
#582
Programación C/C++ / Re: Error!
8 Noviembre 2012, 15:58 PM
¡Buenas!


_nodo *insertarEnLista(int numero, _nodo *apuntador )


No puedes modificar un puntero exterior si no tienes un doble puntero. Si cuando llamas a la funcion el puntero que usas en la llamada tiene el valor NULL, copiaras dicho valor en el parametro que utiliza la funcion internamente, pero anque cambies la direccion a la que apunta el puntero interno de la funcion, no estaras cambiando el externo, por lo tanto seguira siendo NULL cuando salga de la funcion:


#include <stdio.h>

void puntero(int *ptr)
{
    int d;

    ptr = &d;
}

int main(int argc, char *argv[])
{
    int *ptr = NULL;

    puntero(ptr);

    printf("%p\n",ptr);

    return 0;
}


Si quieres cambiar el puntero tendras que mandar un puntero al puntero:


#include <stdio.h>

void puntero(int **ptr)
{
    int d;

    //accedemos al puntero exterior para poder modificarlo
    (*ptr) = &d;
}

int main(int argc, char *argv[])
{
    int *ptr = NULL;

    puntero(&ptr);

    printf("%p\n",ptr);

    return 0;
}


Por lo tanto el prototipo de tu nueva funcion es:

_nodo *insertarEnLista(int numero, _nodo **apuntador )

Y tendras que modificar el resto del codigo para que funcione de forma correcta.

Y con esta funcion no se que quieres hacer, pero realmente no esta haciendo nada efectivo.



_nodo * s_copy(_nodo *apuntador)
{
    _nodo *registroAuxiliar, *apuntador2 , *apuntadorAuxiliar , *apuntadorAuxiliar2;
    apuntador2=crearlista(apuntador2);


      if(apuntador==NULL) {
            printf("la lista que copio estaba vacia");
            apuntador2=apuntador;
      }

      else
        {
            apuntadorAuxiliar = apuntador;
            apuntadorAuxiliar2 = apuntador2;

            while(apuntadorAuxiliar->sig != NULL)
                {
                    *apuntadorAuxiliar2=*apuntadorAuxiliar;

                    apuntadorAuxiliar2=apuntadorAuxiliar2->sig;
                    apuntadorAuxiliar = apuntadorAuxiliar->sig;
                }
        }

        return apuntador2;
}


Si nos cuentas cual es tu intencion con esta funcion te podremos ayudar.

¡Saludos!
#583
Cita de: BatchianoISpyxolo en  8 Noviembre 2012, 15:26 PM
@migcw:

La terminación de las instrucciones con doble piunto y coma es una sintaxis incorrecta.

Falso, no es incorrecto, solo estas incluyendo una sentencia vacia al final de la linea. Aunque sobra (una sentencia vacia no realiza ninguna accion), la sintaxis no es incorrecta. De hecho puedes poner, uno detras de otro, todos los punto coma que quieras.

¡Saludos!
#584
Cita de: BatchianoISpyxolo en  7 Noviembre 2012, 22:40 PM
No he mirado el código ni nada. Pero por lo que dices, seguro que hay alguna función en string.h que sirva para pasar una cadena de caracteres a minúsculas: estilo lowercase o a mayúsculas como uppercase.

Existe la función:

short stricmp (const unsigned char *s1, const unsigned char *s1);

Que es insensible a may y minus.

No, en la libreria estandar de C no tienes funciones que manejen cadenas ignorando el caso, y stricmp no forma parte ni de string.h ni del resto de la libreria estandar de C.

Como bien ha dicho Ferno, tienes que utilizar toupper y tolower para hacer comparaciones cambiando el caracter a mayusculas o minusculas, o directamente modificar las cadenas con estas funciones para cambiar el caso de los caracteres que las forman.

¡Saludos!
#585
Cita de: rir3760 en  5 Noviembre 2012, 01:49 AM
Si bien funciona correctamente y se ahorra la declaración de una variable se debe pagar un precio elevado: cuatro llamadas a función por cada iteracion del bucle.

¿¿¿El objetivo no era no declarar ninguna variable???
#586
Foro Libre / Re: El mercado más macabro del mundo
4 Noviembre 2012, 22:13 PM
¡Buenas!

Pues yo tambien soy de la teoria  de "todo lo que corre, nada o vuela, a la cazuela", hala tanto miramiento. Si quieres morirte de hambre muerete, pero a mi dejame disfrutar con mi cuchillo y mi tenedor (esto ultimo es en sentido figurado, no lo digo por nadie en concreto)

¡Saludos!
#587
¡Buenas!

Lee el input hasta que de introduce EOF (ctrl+Z en windows)

#include <stdio.h>

int main(int argc, char *argv[])
{
   while(!feof(stdin))
       putchar(getchar());
   return 0;
}


Y otra alternativa que lee solo una linea:

#include <stdio.h>

int main(int argc, char *argv[])
{
    while(ungetc(getchar(),stdin) != EOF && ungetc(getchar(),stdin) != '\n')
        putchar(getchar());
    return 0;
}


¡Saludos!
#588
¿The verge? ¿La verga? ¡Este sitio tiene que ser la polla!  >:D
(No podia aguantarme...)  :silbar:
#589
Programación C/C++ / Re: iteradores
2 Noviembre 2012, 17:19 PM
¡Buenas!

Para cualquier duda sobre la libreria estandar consulta cplusplus.

¡Saludos!
#590
Programación C/C++ / Re: RETOS C++
2 Noviembre 2012, 17:13 PM
15.1:
Código (cpp) [Seleccionar]

#include <iostream>
#include <cmath>

using namespace std;

#define FI ((1 + sqrt(5)) / 2)
#define fibo(n) ((unsigned long long)((pow(FI , (n)) - pow(1 - FI , (n)))/(2 * FI - 1)))

int main(int argc, char *agrv[])
{
   for(int i = 0 ; i < 30 ; i++)
       cout << fibo(i)<< endl;

   return 0;
}


15.2:
Código (cpp) [Seleccionar]

#include <iostream>
#include <cmath>

using namespace std;

#define FI ((1 + sqrt(5)) / 2)
#define fibo(n) ((unsigned long long)((pow(FI , (n)) - pow(1 - FI , (n)))/(2 * FI - 1)))

int main(int argc, char *agrv[])
{
   for(int i = 1 ; i < 31 ; i++)
       cout << ((double)(fibo(i + 1))) / fibo(i)<< endl;

   return 0;
}


¡Saludos!

PD: Parece que definiendo fibo como unsigned long long, por lo menos con gcc, funciona mejor que sin hacer el cast