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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45
401  Programación / Programación C/C++ / Re: Duda sobre problema de cadena de caracteres. en: 2 Diciembre 2015, 07:11 am
¿Tienes código hecho? Porque si no es así, deberías hacer los códigos por ti mismo. De otro modo, nunca aprenderás. Repito, NUNCA aprenderás. La programación consiste en codificar tanto como puedas y más, para así coger hábitos y así puedes crear códigos de mejor calidad.

PD.: En este foro solo se resuelven dudas PUNTUALES, es decir, que no puedes pedir que te resolvamos ejercicios por la cara. ¡No nos pagan por responder, lo hacemos por diversión y porque respondiendo dudas aprendemos! Ten eso en cuenta
402  Programación / Programación C/C++ / Re: Problemas con Windows API en C en: 2 Diciembre 2015, 07:07 am
Cita de: nonpromisc
VIVA EL SOFTWARE LIBRE
El software libre no es lo mismo que el software pirata...

Quitando eso, tu problema no es un error de compilación, sino de enlazado. En las opciones de enlazado (Linker settings) tienes que añadir la librería wininet .lib/.a

No sé como se hace en Dev-C++, pero en Code::Blocks se hace yendo a
Project->Build Options->Linker Settings y puesto que estamos con MinGW, en "Other linker options" tienes que escribir "-lwininet"
403  Programación / Programación C/C++ / Re: Comparación de strings que estan en arreglos. en: 2 Diciembre 2015, 06:40 am
Pon tu código entre etiquetas GeSHI para mejorar la visibilidad tu código.

La función stricmp necesita una cadena de caracteres, pero lo que le estás dando es un objeto std::string. Para solucionarlo, tienes que "convertir" ese objeto a cadena de caracteres. Para ello, utiliza el método de la clase std::string llamado .c_str(), que te retorna la cadena de caracteres equivalente a ese std::string:

Código
  1. stricmp(objeto_string[0].c_str(), objeto_string[1].c_str());
404  Programación / Programación C/C++ / Re: (Consulta) Operador const_cast en: 30 Noviembre 2015, 11:16 am
Cita de: ivancea96
El compilador no utiliza la dirección para sacar el valor. Lo da directamente. Es otro concepto.

Eso es extraño, pero de acuerdo (supongo que se podría entender mejor si supiera ensamblador :S)

Gracias por tu respuesta :D

PD.:

Cita de: ivancea96
De todos modos, const se utiliza si no vas a modificar el valor, tenlo en cuenta.

También es verdad xD Solo tenía curiosidad!
405  Programación / Programación C/C++ / Re: (Consulta) Operador const_cast en: 30 Noviembre 2015, 10:35 am
No lo entiendo. Las dos variables apuntan a la misma dirección. ¿Es que la memoria RAM se puede dividir en fragmentos? Gracias
406  Programación / Programación C/C++ / (Consulta) Operador const_cast en: 30 Noviembre 2015, 08:29 am
(Aquí cuento un poco como he llegado a mi duda, puedes leer un resumen abajo)

Hola, muy buenas. El caso es que acabo de encontrarme con este operador, el cual me parece un tanto curioso. Bueno, supongo que cada uno, cuando ha visto este operador, se ha hecho la pregunta ¿podré modificar el valor de una constante? Bueno, pues para probarlo, he elaborado el siguiente código:

Código
  1. #include <iostream>
  2.  
  3. int main() {
  4.    const int value_a = 5;
  5.    int *value_b = NULL;
  6.  
  7.    value_b = const_cast<int *>(&value_a);
  8.    *value_b = 6;
  9.  
  10.    std::cout << "&value_a = " << &value_a << std::endl; // Imprimimos direcciones
  11.    std::cout << " value_b = " << value_b << std::endl;
  12.    std::cout << std::endl;
  13.    std::cout << " value_a = " << value_a << std::endl; // Imprimimos valores
  14.    std::cout << "*value_b = " << *value_b;
  15.  
  16.    std::cin.get();
  17.    return 0;
  18. }

El resultado que he obtenido, es cuanto menos curioso:
Citar
&value_a = 0x9ffe34
 value_b = 0x9ffe34

 value_a = 5
*value_b = 6

Bueno, analicemos. Las dos variables, efectivamente, tienen la misma dirección (así que el casting parece haberse computado correctamente). La cosa es que para dos mismas direcciones de dos variables, ¡tenemos dos valores diferentes!

La duda, en resumidas cuentas es, ¿cómo es posible que para una misma dirección de memoria haya dos valores diferentes almacenados? ¿o a lo mejor sucede otra cosa?

Gracias :D
407  Programación / Programación C/C++ / Re: problemas en el caso 2 en: 29 Noviembre 2015, 03:57 am
Por si alguien quiere analizar mejor el código:

Código
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include <iostream>
  5. #include <conio.h>
  6.  
  7. using namespace std;
  8.  
  9. #define Pi 3.141592653589
  10.  
  11. long double U(double x, double t) {
  12.    long double z; int i;
  13.    z=0;
  14.    for (i=1;i<20;i++)
  15.        z = z+2/(Pi*Pi)*1/(i*i)*(4*sin(Pi*i/2)+i*Pi*(1-cos(i*Pi)))*sin(i*Pi*x)*exp(-Pi*Pi*t*i*i);
  16.    return(z);
  17. }
  18.  
  19. int main() {
  20.    int opc;
  21.    float y,q;
  22.  
  23.    do {
  24.        system("cls");
  25.  
  26.        cout<<"menu\n";
  27.        cout<<"1. Metodo Explicito\n";
  28.        cout<<"2. MEtodo Implicito\n";
  29.        cout<<"\t\t elija su opcion:";
  30.        cin>> opc;
  31.  
  32.        switch(opc) {
  33.            case 1: {
  34.                FILE *f;
  35.                int i,j,N,T,l,c;
  36.                float s1,s2,s3,r,h,k,x,t,error,diferencia;
  37.                float zz;
  38.                float u[11][101];
  39.  
  40.                system("cls");
  41.  
  42.                cout<<"Metodo Explicito\n";
  43.                cout<<"\t\t digite un valor para r :";
  44.                cin>>y;
  45.  
  46.                f=fopen("explicito020.txt","w+");
  47.  
  48.                r=y;
  49.                h=0.1;
  50.                k=r*h*h;
  51.                N=10;
  52.                T=50;
  53.  
  54.                fprintf(f,"r=%4.2f,h=%4.2f,k=%6.4f \n ",r,h,k);
  55.                fprintf(f,"i j x t U[xi,yj] U[x,y] diferencia error \n ");
  56.                printf("i j x t U[xi,yj] U[x,y] diferencia error \n ");
  57.  
  58.                for(l=0;l<=N+1;l++) //valores de U con las condiciones iniciales{
  59.                    x=l*h;
  60.  
  61.                    if ((x>=0 ) & (x<= 0.5)) {
  62.                        u[l][0]=2*x+1;
  63.                        fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n ",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  64.                        printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  65.                    }//fin del if
  66.  
  67.                    if ((x>0.5 ) & (x<=1)){
  68.                        u[l][0]=3-2*x;
  69.                        fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n ",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  70.                        printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  71.                    } //fin del if
  72.                } //fin del for
  73.  
  74.                fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  75.                printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",l,0,x,0.0,u[l][0],u[l][0],0.0,0.0);
  76.  
  77.                for(j=0;j<=100;j++) {
  78.                    u[0][j]=0.2;
  79.                    u[10][j]=0.4;
  80.                    t=(j+1)*k;
  81.  
  82.                    for (i=0;i<N+1;i++) {
  83.                        if ((i==0) || (i==10)) {
  84.                            x=i*h;
  85.                            fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j],u[j],0.0,0.0);
  86.                            printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j],u[j],0.0,0.0);
  87.                        } else {
  88.                            x=i*h;
  89.                            t=(j+1)*k;
  90.                            s1=u[i-1][j];
  91.                            s2=u[j];
  92.                            s3=u[i+1][j];
  93.                            u[j+1]=r*s1+(1-2*r)*s2+r*s3;
  94.                            zz=U(x,t);
  95.                            diferencia=fabs(zz-u[j+1]);
  96.                            error=fabs((u[j+1]-zz)/zz)*100;
  97.                            fprintf(f,"%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j+1],zz,diferencia,error);
  98.                            printf("%d %d %5.3f %5.3f %6.4f %6.4f %6.4f %6.4f \n",i,j+1,x,t,u[j+1],zz,diferencia,error);
  99.                        }
  100.                    }
  101.                } // fin del for i}//fin del for j
  102.  
  103.                fclose(f);
  104.                printf("fin del programa");
  105.  
  106.                while((c = getchar()) != '\n' && c != EOF);
  107.                putchar(c);
  108.  
  109.                break;
  110.            }
  111.  
  112.            case 2: {
  113.                int i,j,c,l,s;
  114.                FILE *f1,*f;
  115.                int N=5;
  116.                float r=q;
  117.                float h=0.1;
  118.                float k=r*h*h;
  119.                float a[20][20],b[20][20],A[20],B[20],x,xx,diferencia,error,t,zzz;
  120.  
  121.                system("cls");
  122.  
  123.                cout<<"Metodo Implicito\n";
  124.                cout<<"\t\t digite un valor para r :";
  125.                cin>>q;
  126.  
  127.                f=fopen("implicito070.txt","w+");
  128.  
  129.                fprintf(f1,"PARA EL CASO IMPLICITO CRANCK NICHOLSON BVP \n");
  130.                fprintf(f1,"r=%3.2f, h=%3.2f,k=%5.3f \n",r,h,k);
  131.                fprintf(f1," i j x t U[i,j] Uanalitica diferencia error \n");
  132.                printf("PARA EL CASO IMPLICITO CRANCK NICHOLSON BVP r=%3.2f, h=%3.2f\n",r,h);
  133.                printf(" i j x t U[i,j] Uanalitica diferencia error \n");
  134.  
  135.                for (i=0;i<=2*N+1;i++) {
  136.                    x=i*h;
  137.  
  138.                    if((x>=0 ) & (x<=0.5)) {
  139.                        a=2*x+1;
  140.                        a[0][j]=0.2;
  141.                        a[10][j]=0.4;
  142.                        t=(j+1)*k;
  143.                        a[10-i][0]=a;
  144.                        zzz=a;
  145.                        diferencia=fabs(zzz-a);
  146.                        error=0;
  147.  
  148.                        fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  149.                        ,zzz,diferencia,error);
  150.                        printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  151.                        ,zzz,diferencia,error);
  152.                    } //fin del if
  153.  
  154.                    if ((x>0.5 ) & (x<1)){
  155.                        a=3-2*x;
  156.                        a[0][j]=0.2;
  157.                        a[10][j]=0.4;
  158.                        t=(j+1)*k;
  159.                        zzz=a[10-i][0];
  160.                        diferencia=fabs(zzz-a);
  161.                        error=diferencia/zzz*100;
  162.  
  163.                        fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  164.                        ,zzz,diferencia,error);
  165.                        printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  166.                        ,zzz,diferencia,error);
  167.                    }//fin del if
  168.  
  169.                    if (x==1){
  170.                        zzz=a[10-i][0];
  171.                        diferencia=fabs(zzz-a);
  172.                        error=0;
  173.  
  174.                        fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  175.                        ,zzz,diferencia,error);
  176.                        printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,0,x,0.0,a
  177.                        ,zzz,diferencia,error);
  178.                    }
  179.                } // fin del for i para llenarlos valores iniciales
  180.  
  181.                for (j=0; j<20;j++) {
  182.                    for (i=1;i<N+1;i++) {
  183.                        if (i==1) {
  184.                            b=4.0;
  185.                            b[i+1]=-1;
  186.                            //rellena de ceros el lado derecho
  187.  
  188.                            for (l=i+2;l<N+1;l++) {
  189.                                b[l]=0.0;
  190.                            }
  191.  
  192.                            b[N+1]= (2-2*r)*a[j]+r*a[i+1][j];
  193.                            printf("\n");
  194.                            fprintf(f,"\n");
  195.                        }
  196.  
  197.                        if ((i>1) && (i!=N)) {
  198.                            if(i>2) {
  199.                                //rellena de ceros el lado izquierdo
  200.                                for (l=1;l<i-1;l++) {
  201.                                    b[l]=0.0;
  202.                                }
  203.                            }
  204.  
  205.                            b[i-1]=-1;
  206.                            b=4.0;
  207.                            b[i+1]=-1;
  208.  
  209.                            for (l=i+2;l<N+1;l++){
  210.                                b[l]=0.0;
  211.                            }
  212.  
  213.                            b[N+1]= r*a[i-1][j]+(2-2*r)*a[j]+r*a[i+1][j];
  214.                        }//fin del if i>1
  215.  
  216.                        if (i==N) {
  217.                            for (l=1;l<i-1;l++) {
  218.                                b[l]=0.0;
  219.                            }
  220.  
  221.                            b[N-1]=-2.0*r;
  222.                            b[N]=(2+2*r);
  223.                            b[N+1]= r*a[i-1][j]+(2-2*r)*a[j]+r*a[i+1][j];
  224.                            //a[i-1][j]+a[i+1][j];
  225.                            printf("\n");
  226.                        }
  227.                    }///fin del for I=1,N
  228.  
  229.                    printf("\n");
  230.                    //METODO GAUSS SIN PIVOTEO-METOD PROGONKA////
  231.                    //apli-camos progonka directa///
  232.                    A[1]=-b[1][2]/b[1][1];
  233.                    B[1]=b[1][N+1]/b[1][1];
  234.  
  235.                    for (i=2;i<N+1;i++) {
  236.                        if (i!= N) {
  237.                            A=-b[i+1]/(b+b[i-1]*A[i-1]);
  238.                        }
  239.  
  240.                        B=(b[N+1]-b[i-1]*B[i-1])/(b+b[i-1]*A[i-1]);
  241.                    }
  242.                    //ahora hallamos las soluciones
  243.                    //printf(&#915;Ç¥\n&#915;Ç¥);
  244.                    xx=B[N];
  245.                    //las soluciones son los elementos del vector a[j] a[N][j+1]=xx;
  246.                    printf( "a[%d][%d]= %6.4f \n",N,j+1,a[N][j+1]);
  247.  
  248.                    l=N;
  249.  
  250.                    while (l>0) {
  251.                        s=10-l;
  252.                        xx=A[l]*xx+B[l];
  253.                        a[l][j+1]=xx;
  254.  
  255.                        a[j+1]=xx;
  256.                        fprintf(f1, "a[%d][%d]= %6.4f \n",l,j+1,a[j+1]);
  257.                        printf( "a[%d][%d]= %6.4f \n",l,j+1,a[l][j+1]);
  258.                        l=l-1;
  259.                    }
  260.  
  261.                    printf("\n");
  262.                    t=k*(j+1);
  263.  
  264.                    for (i=0;i<2*N+1;i++) //ahora escribe las soluciones en el archivo de texto{
  265.                        x=i*h;
  266.  
  267.                        if ((i==0) || (i==2*N)) {
  268.                            printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,0.0,0.0,0.0,0.0);
  269.                            fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,0.0,0.0,0.0,0.0);
  270.                        } else {
  271.                            zzz=U(x,t);
  272.                            diferencia=fabs(zzz-a[j+1]);
  273.                            error=diferencia/zzz*100;
  274.  
  275.                            fprintf(f1," %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,a[j+1],zzz,diferencia,error);
  276.                            printf(" %d %d %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f \n", i,j+1,x,t,a[j+1],zzz,diferencia,error);
  277.                        }
  278.                    }
  279.                }//fin del j principal fclose(f);
  280.  
  281.                fclose(f1);
  282.  
  283.                while((c = getchar()) != '\n' && c != EOF);
  284.  
  285.                break;
  286.            }
  287.        };
  288.    } while(opc<=2);
  289.  
  290.    return 0;
  291. }
408  Programación / Programación C/C++ / Re: problemas en el caso 2 en: 29 Noviembre 2015, 03:49 am
0º Utiliza las etiquetas GeSHI para que tu código sea más legible!

1º Error que he encontrado (en el caso 1): El ciclo for lo cierras, pero no lo abres!!

Código
  1. for (l=0;l<=N+1;l++) //valores de U con las condiciones iniciales{
  2.    // Codigo del for
  3. }  //fin del for

La llave tienes que ponerla antes de comentar, no después:

Código
  1. for (l=0;l<=N+1;l++) { //valores de U con las condiciones iniciales
  2.    // Codigo del for
  3. }  //fin del for

2º Error que he encontrado (en el caso 2): Es similar al primer error que te he comentado

No te puedo especificar en que línea es porque no usas las etiquetas GeSHI.

Después de haber corregido estos errores, tienes muchos erres de conversión (fundamentalmente de array bidimensional a flotante)

Además, no existe el archivo <iostream.h> Los archivos nativos de C++ no tienen extensión (sería <iostream>

Para incluir archivos de C, se recomienda usar las versiones de C++ (por ejemplo, para incluir "stdlib.h" incluirías "cstdlib")

No puedo analizar mucho tu código porque está muy enrevesado (las variables no tienen nombres descriptivos, usas "fórmulas" muy largas, sentencias muy largas...)

En resumen: ¡Ten cuidado con las llaves y con la asignación!
409  Programación / Programación C/C++ / Re: (Consulta) Definición del operador << para streams en: 29 Noviembre 2015, 03:13 am
De hecho, acabo de ponerlo en práctica para ver si lo entendí, y todo bien. Muy buenas tus respuestas :D
410  Programación / Programación C/C++ / Re: (Consulta) Definición del operador << para streams en: 29 Noviembre 2015, 03:00 am
Ahhhh. Creo que ya lo entiendo!!! Muchísimas gracias por tus respuestas :DD
Páginas: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines