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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [52] 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 ... 132
511  Programación / Programación C/C++ / Re: funcion strcmpi() en: 31 Diciembre 2013, 10:59 am
...................................................
tengo que comparar dos cadenas pero sin diferenciar mayúsculas de minúsculas no se si hacerlo con esta función o hacerlo yo todo el procedimiento

de antemano gracias, y felices fiestas

Yo soy más partidario de hacerlo "a pelo", sin usar las librerías string y ctype:

Código
  1. #include <stdio.h>
  2.  
  3. int longitud_cadena(char *cadena);/*calcula lo que indica el nombre*/
  4.  
  5. int main () {
  6.    char a[]="aSdfgh",b[]="AsdfGh";
  7.    int i=0,la=0,lb=0;
  8.    la=longitud_cadena(a);
  9.    lb=longitud_cadena(b);
  10.    if (la!=lb) /*si no tienen la misma longitud no son iguales*/
  11.        printf ("NO son iguales\n");
  12.    else { /*si  tienen la misma longitud comparo los caracteres*/
  13.        for (;a[i] && (a[i]==b[i] || a[i]==b[i]-32 ||a[i]==b[i]+32 );i++);
  14.    if (i!=la) /*si no coinciden TODOS los caracteres*/
  15.        printf ("NO son equivalentes\n");
  16.    else   /* si coinciden TODOS*/
  17.        printf ("SI son equivalentes\n");
  18.    }
  19.    return  0;
  20. }
  21. int longitud_cadena(char *cadena){
  22.    int i=0;
  23.    for (;cadena[i];i++);
  24.    return i;
  25. }
  26.  

Claro que podemos prescindir de la función "longitud_cadena" usando sizeof:

Código
  1. #include <stdio.h>
  2.  
  3. int main () {
  4.    char a[]="aSdfgh",b[]="AsdfGp";
  5.    int i=0,na=0,nb=0;
  6.    na=sizeof(a)/sizeof(a[0])-1;
  7.    nb=sizeof(b)/sizeof(b[0])-1;
  8.    if (na!=nb) //si no tienen la misma longitud no son iguales
  9.        printf ("NO son iguales\n");
  10.    else { //si  tienen la misma longitud comparo los caracteres
  11.        for (;a[i] && (a[i]==b[i] || a[i]==b[i]-32 ||a[i]==b[i]+32 );i++);
  12.    if (i!=na)
  13.        printf ("NO son equivalentes\n");
  14.    else
  15.        printf ("SI son equivalentes\n");
  16.    }
  17.    return  0;
  18. }
  19.  


O bien podemos hacer la transformación en minúsculas, como sugirió amchacon, con la consiguiente penalización de tener que usar dos librerías más, string para strlen y ctype para tolower, y aún así conviene el uso de la función "convierto_minusculas" para no repetir código:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. void convierto_minusculas (char *cadena);
  6.  
  7. int main () {
  8.    char a[]="aSdfgh",b[]="AsdfGh";
  9.    int i=0,na=0,nb=0;
  10.    na=strlen(a);
  11.    nb=strlen(b);
  12.    if (na!=nb) //si no tienen la misma longitud no son iguales
  13.        printf ("NO son iguales\n");
  14.    else { //si  tienen la misma longitud comparo los caracteres
  15.        convierto_minusculas (a);
  16.        convierto_minusculas (b);
  17.        if (strcmp(a,b)!=0 )
  18.            printf ("NO son equivalentes\n");
  19.        else
  20.            printf ("SI son equivalentes\n");
  21.    }
  22.    return  0;
  23. }
  24.  
  25. void convierto_minusculas (char *cadena){
  26.    int i=0;
  27.    for (i=0;cadena[i];i++)
  28.        cadena[i]=tolower (cadena[i]);
  29. }
  30.  

Claro que otra opción es pasar de strcmp y comparar directamente en un bucle los caracteres de las cadenas:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. int main () {
  6.    char a[]="aSdfgh",b[]="AsdfGH";
  7.    int i=0,na=0,nb=0;
  8.    na=strlen(a);
  9.    nb=strlen(b);
  10.    if (na!=nb) //si no tienen la misma longitud no son iguales
  11.        printf ("NO son iguales\n");
  12.    else { //si  tienen la misma longitud comparo los caracteres
  13.        for (;a[i] && (tolower (a[i])==tolower (b[i])) ;i++);
  14.    if (i!=na)
  15.        printf ("NO son equivalentes\n");
  16.    else
  17.        printf ("SI son equivalentes\n");
  18.    }
  19.    return  0;
  20. }
  21.  

;-)  ;-) Felices Navidades y Próspero Año Nuevo.  ;-)  ;-)

¡¡¡¡ Saluditos! ..... !!!!


512  Programación / Programación C/C++ / Re: Problema de Programacion con numeros en: 30 Diciembre 2013, 19:53 pm
Hola, soy nuevo en este foro y les queria explicar que tengo un problema con el compilador ya q no me acepta numeros grandes...
Veran estoy usando DevC++ y yo intento ingresar este numero "9223372036854775808" y la cosa es q no me la acepta
..............................

Justito te  has pasado en una unidad porque el máximo número representable como entero, y declarado como long lon int en lugar de int, es 9223372036854775807 que no es poco. Eso sí, para imprimirlos tienes que usar el formato %lld

Otra opción aún mejor, si son sin signo, es usar unsigned lon long int cuyo limite supera lo que pides:   18446744073709551615 , siendo el formato en el printf " %llu ".

.


;-)  ;-) Felices Navidades y Próspero Año Nuevo.  ;-)  ;-)

¡¡¡¡ Saluditos! ..... !!!!




513  Programación / Programación C/C++ / Re: Problema con formula para generar permutaciones en: 30 Diciembre 2013, 19:43 pm

Siento contradecirte, amigo ivancea96 pero tienes un error de concepto básico. Si tienes tres elementos y los vas a tomar de 2 en 2, sin repetir e importando el orden -si no importara serían combinaciones- son variaciones y su fórmula es:

Citar

n!/(n-r)!


Y aplicada al ejemplo que propones es:

Citar

3!/(3-2)!=3!=6


Curioso, justo lo que te sale a tí, como dicen sonó la flauta ¿Dónde está tu error?. Es conceptual, en las permutaciones se tienen n elementos y se tomen n a n.Como ejemplo las permutaciones del conjunto {1,2,3] son:

Citar
123
132
213
231
312
321

En un array de 3 elementos {a, b, c}.
Cuantas formas hay de coger elementos de 2 en 2?


a,b / a,c / b,c / b,a / c,a / c,b

(3*2)/(3-2)! = 6
-----------------------------------


¿Te das cuenta?. No estas tomando los tres elementos por tanto no son permutaciones, sino variaciones y la fórmula que aplicas es la de variaciones.

Resumiendo, y a lo simple:

* permutaciones de n elementos: se toman n a n e importa el orden.

* variaciones de n elementos tomados r a r e importa el orden.

*combinaciones de n elementos tomados r a r y no importa el orden.

Aunque hay mucha información en la red esta  referencia no está mal.

Luego estan con repetición, pero eso no viene al caso ahora mismo.

Espero que este rollito ta aclare las ideas.
;) ;) ;)

;-)  ;-) Felices Navidades y Próspero Año Nuevo.  ;-)  ;-)

¡¡¡¡ Saluditos! ..... !!!!


514  Programación / Programación C/C++ / Re: Problema con formula para generar permutaciones en: 30 Diciembre 2013, 15:36 pm
La fórmula de las permutaciones es:
Citar
n!/(n-r)!)
.............................

Perdona pero no. Esa es la fórmula de las variaciones sin repetición de n elementos tomados r a r.

La de las permutaciones sin repetición es simplemente

Citar
n!
515  Programación / Programación C/C++ / Re: Ayuda con programa urgente! en: 30 Diciembre 2013, 14:54 pm
A mí tampoco me va leo. ¿No tendrás activado el fpermissive?

El error se debe a que has declarado una matriz de 27 elementos por columna, tu le has puesto 27 elementos +caracter nulo.

¿Dónde se mira lo del fpermissive?.

En todo caso la matriz sería de 24x28 para incluir el caracter nulo, aunque luego en la impresión se iría hasta<27, como está, teniendo en cuenta que empezamos a contar de cero.

Pero es muy raro. Tengo activado el modo -Wall y el -pedantic  y no me "canta" nada, ni warnings. :rolleyes: :rolleyes: :rolleyes:

Espero noticias.


Saluditos! ..... !!!!        

REEDITO: No, no tengo activado el modo fpermissive.

Lo raro es que lo ejecuté tanto en Code::Blocks como en Dev-C++ y ninguno se "quejo".

Pero bueno, no deja de ser un error y ya lo he corregido en todos los post.

Gracias por la observación. ;) ;) ;)


516  Programación / Programación C/C++ / Re: Programar en C quiniela. en: 30 Diciembre 2013, 14:01 pm
Perdón por si te ha molestado , soy nuevo en esto , esque lo hice y me daba error,  entonces cuando lo haga si me sale error podriais ustedes buscarme el fallo ?
.......................

Cuelga el código que dices te da error, indicando donde lo da, y ya se verá.

Saluditos! ..... !!!!       


517  Programación / Programación C/C++ / Re: Ayuda con programa urgente! en: 30 Diciembre 2013, 12:19 pm
..............................
Ademas pega el código aquí que fotos no quiero ver XDD
Saludos!^^


Pero si ya lo había puesto. Ahí va otra vez el código del laberinto con color:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <windows.h>
  5.  
  6. void mostrar(char a[][28],char *msg);
  7. void color (int n);
  8.  
  9. int main (){
  10.  
  11.    char a[24][28]={
  12.    "000000000000000000000000000",
  13.    "012222222222222222222222220",
  14.    "022020200020002000000000020",
  15.    "022202022020202000000000020",
  16.    "020000000020202000000000020",
  17.    "020222220020220200022222220",
  18.    "022000000000000200020000020",
  19.    "022222222222200200020000020",
  20.    "022200000000200222222222000",
  21.    "022222222200200000020002020",
  22.    "022200000020222222222222220",
  23.    "022222222200200000000000020",
  24.    "020000000000222222222222220",
  25.    "022000022200200000000000020",
  26.    "020000000000200222222222220",
  27.    "022222222222222200000000020",
  28.    "020000000000000222222202020",
  29.    "020000000000000200000202020",
  30.    "022222222222222200000202020",
  31.    "000002000000000200002222220",
  32.    "020222222222222222222200000",
  33.    "020000000000000000000222220",
  34.    "022222222222222222222220010",
  35.    "000000000000000000000000000"
  36.    };
  37.    mostrar(a,"LABERINTO");
  38.    return 0;
  39. }
  40.  
  41.  
  42. void mostrar(char a[][28],char *msg){
  43.    system ("cls");
  44.    int i,j;
  45.    for( i=0;i<24;i++) {
  46.        for( j=0;j<27;j++) {
  47.            if ((i==22 && j==25) ||(i==1 && j==1))
  48.                color(215);
  49.            else if (a[i][j]=='X')
  50.                color(125);
  51.            else if (a[i][j]=='0')
  52.                color(175);
  53.            else
  54.            color(7);
  55.            printf("%c ",a[i][j]);
  56.            fflush(stdout);
  57.        }
  58.        putchar('\n');
  59.    }
  60.    color(7);
  61.    printf ("\n\t\t%s\n\n",msg);
  62.    system ("pause");
  63. }
  64.  
  65. void color (int n)
  66. {
  67.        SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), n );
  68. }
  69.  

Ya me contaras que te parece.

Y el tuyo ni en .cpp me tira.  :o :o :o




¡¡¡¡ Saluditos! ..... !!!!

:rolleyes: ;) ;) ;) :rolleyes:

P.D:Me has liado con eso de que no había puesto el código. O estoy muy espeso, que también.

Saluditos! ..... !!!!        
518  Programación / Programación C/C++ / Re: Programar en C quiniela. en: 30 Diciembre 2013, 12:08 pm

¿Y un cafetito también no se te apetece?

Perdona, igual no lo sabes por no haberte leído las reglas del foro: no se hacen tareas desde cero, sólo se resuelven dudas sobre un código que previamente has tenido que hacer tú. ¿Lo pillas?.

:rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:

Y para cuando postees el código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.



¡¡¡¡ Saluditos! ..... !!!!

:rolleyes: ;) ;) ;) :rolleyes:
519  Programación / Programación C/C++ / Re: problema asm en: 30 Diciembre 2013, 06:13 am
Perdona que te moleste, pero ¿me puedes indicar que programa usas para escribir en asm?. O lo haces directamente en un editor o en tu IDE de C++?:

Gracias de antemano y:




¡¡¡¡ Saluditos! ..... !!!!

:rolleyes: ;) ;) ;) :rolleyes:

520  Programación / Programación C/C++ / Re: Ayuda con programa urgente! en: 30 Diciembre 2013, 06:08 am
Muy buena :D, promesa es deuda. jeje
Ya tendrás noticias mías  ;D
...............................................................................
A ver que me dices XDD en la foto se ve bien  ;-)

LO he intentado compilar en DevC aver que tal y casi me da un sofocón:

Citar
36 C:\Dev-Cpp\SinNombre1.cpp initializer-string for array of chars is too long
....................................................................

Y así un motón de líneas. Pero claro, no me fije que por defecto el "programilla" lo guarda con extensión .cpp por defecto. Así que volví a guardarlo con extensión .c y ¡boommmm!, corre sin pronlemas ni advertencias:


Ya sabía que te daría problemas por el dichosito Dev.C++. Te reitero mi sugerencia de trabajar mejor con Code::Blocks

Elige la de 96.8 MB, la codeblocks-13.12mingw-setup-TDM-GCC-481.exe.


Mira mi salida en Code::Blocks, y eso con el compilador en modo pedantic o Wall que canta a la más mínima::

Citar
...............................................................
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings (0 minutes, 0 seconds)

.....................................

Ya me cuentas como te ha ido.



¡¡¡¡ Saluditos! ..... !!!!

:rolleyes: ;) ;) ;) :rolleyes:




Páginas: 1 ... 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [52] 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 ... 132
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines