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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 ... 36 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 ... 132
501  Programación / Programación C/C++ / Re: De minúscula a mayúscula a nivel de bits en lenguaje C. en: 3 Enero 2014, 18:10 pm
Creo que esta es la salida que buscas:



No me gusta ni pizca el código que te paso, pero no quería modificarte el tuyo de forma sustancial: :rolleyes: :rolleyes: :rolleyes:

Código
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. void binarioConvertir(int, char[]);
  6.  
  7. int main(void){
  8.  
  9.    char cadena[] = "daniel", cad_binaria[8] = "";
  10.    int ascii=0, i=0, binarioMayuscula=0;
  11.  
  12.    while(i<6){
  13.        ascii = cadena[i];
  14.        binarioConvertir(ascii,cad_binaria);
  15.        convertir_a_decimal(cad_binaria);
  16.        printf("\n%c en decimal %3d en binario %s", cadena[i], ascii, cad_binaria);
  17.        if (cad_binaria[1] = '1')
  18.            cad_binaria[1] = '0';
  19.        printf(" -->mayuscula-->%c-->",convertir_a_decimal(cad_binaria) );
  20.        printf(" %s-->%d",cad_binaria,convertir_a_decimal(cad_binaria));
  21.        i++;
  22.    }
  23.    printf("\n\n");
  24.    return 0;
  25. }
  26.  
  27. void binarioConvertir(int num, char cad[]){
  28.    int i=0, izq=0, der=0, aux=0;
  29.    while(num>0){
  30.        if(num%2 == 0)
  31.            cad[i] = '0';
  32.        else
  33.            cad[i] = '1';
  34.        num = num/2;
  35.        i++;
  36.    }
  37.    der=6;
  38.    while(izq<3){
  39.        aux      = cad[izq];
  40.        cad[izq] = cad[der];
  41.        cad[der] = aux;
  42.        der--;
  43.        izq++;
  44.    }
  45.    cad[7] = '\0';
  46. }
  47.  
  48. int convertir_a_decimal (char cad[]){
  49.    int decimal=0,i;
  50.    for (i=6;i>=0;i--){
  51.        if (cad[6-i]!='0'){
  52.            decimal+=pow (2,i*((cad[6-i])-48));
  53.        }
  54.    }
  55.    return decimal;
  56.  
  57.  
  58. }
  59.  

Todo es jugar con el valor del caracter en la posición 1.

Te he añadido la conversión a decimal usando las potencias de 2. Lo he hecho con "pow" por ganseria xD. ;)


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


502  Programación / Programación C/C++ / Re: problema con el siguiente codigo [C] en: 3 Enero 2014, 15:26 pm
Estoy intentado hacer un programa al cual se le introduce un texto por teclado y que vaya cambiando las vocales por su siguiente vocal:

Si lee una 'a' devuelve una 'e'.

Si lee una u devuelve una 'a'.

No se tienen en cuenta mayusculas ni vocales acentuadas.
...................................................................
Una vez lo consiga hacer con la entrada por teclado y la salida por monitor el siguiente paso seria hacerlo con ficheros. salu2

Antes que nada procura indentar o sangrar el código para que sea más legible y elige las etiquetas de C++, aunque el código sea en C. Salen de esa forma coloreado y es más fácil leerlo.

Y en tema pon una breve descripción de lo que buscas, no aclara nada eso de "problema con el siguiente codigo [C]"

Te pongo el código con las correciones que me han parecido y que no se aparten de tu código original. Por cierto,  ya veras cómo salir del bucle.   ;) ;) ;).


Código
  1. #include <stdio.h>
  2.  
  3. int esVocal (char c);
  4. char sigVocal (char c);
  5.  
  6. int main (){
  7.    char c;
  8.    do{
  9.        puts ("Introduzca vocal:");
  10.        scanf("%c",&c);
  11.        while (getchar ()!='\n');
  12.        if(esVocal(c)!=0)
  13.            printf("%c\n", sigVocal(c));
  14.    }while(c!= EOF);
  15.    return 0;
  16. }
  17.  
  18. int esVocal (char c){
  19.    int si_o_no=0;
  20.    if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u')
  21.        si_o_no=1;
  22.    else si_o_no=0;
  23.    return si_o_no;
  24. }
  25.  
  26. char sigVocal (char c){
  27.    if(c=='a')
  28.        c='e';
  29.    else if(c=='e')
  30.        c='i';
  31.    else if(c=='i')
  32.        c='o';
  33.    else if(c=='o')
  34.        c='u';
  35.    else if(c=='u')
  36.        c='a';
  37.    return c;
  38. }
  39.  

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

:rolleyes: ;) ;) ;) :rolleyes:
503  Programación / Programación C/C++ / Re: Programar quiniela en C. en: 3 Enero 2014, 15:06 pm

Y YO REPITO LO DE:

¿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:
504  Programación / Programación C/C++ / Re: Error en programa en C en: 3 Enero 2014, 15:00 pm
He provado de todo, y no hay manera estoy desesperao xD

¡¡¡Chacho!!!, tranquilito.

No me convence del todo tu código así que lo he "variado" un poquitito.

Y ya que no usas para entrar las cadenas ninguna función -scanf, gets, fgets, etc-, da la sensación que no quieres usar las funciones más habituales. Eso me lleva a que en este caso tampoco tendría sentido usar strcpy, strlen, isupper, bool, isblank, strcmp , vamos "ná de ná" y mucho menos las correspondientes librerías <ctype.h>, <string.h> y<stdbool.h>.

Así que sólo uso la mísera librería <stdio.h> y su función asociada getchar. ¡¡¡Todo un reto!!!.

Y opara que veas que funciona, un pantallazo:



Código
  1. #include <stdio.h>
  2.  
  3. void pillo_cadena (char cad[600],int flag);
  4. int con_pal,con_frase,cont_l_on_palabras,lon_frase;
  5. void palabras_en_palabras (char palabras[],char frase[]);
  6. void ordenar (char cadena[10]);
  7. int comparar (char temp1[10],char temp2[10]);
  8. int longitud_cadena (char cadena[10]);
  9. char convertidor(char caracter);
  10.  
  11. char palabras[10],n_palabras[10][51],temp [10],frase[600];
  12.  
  13. int main (){
  14.  
  15.    char palabras[]="leon San noel.";
  16.    char frase[]="NeoL aSN sAn Nas LeoN.";
  17.    /*
  18.     Acticva lo que sigue para introducir a mano
  19.     los datos y desactiva entonces los dos anteriores
  20.     */
  21.  
  22.    /*int flag=0;
  23.     char palabras[10],frase[600];
  24.     palabras[0]=frase[0]='\0';
  25.      flag=1;
  26.     printf("Introduce un seguido de palabras (10 max) de 50 caracteres como mucho, terminando con un '.'\n");
  27.     pillo_cadena (palabras,flag);
  28.     flag=2;
  29.     printf("Introduce el texto, separando las palabras con especios i terminando con un '.', las palabras deben de ser de 50 letras max\n");
  30.     pillo_cadena (frase,flag);*/
  31.    palabras_en_palabras (palabras,frase);
  32.    return 0;
  33. }
  34.  
  35. void pillo_cadena (char cad[600],int flag){
  36.    int i=0;
  37.    int pillo_cad;
  38.    cad[0]='\0';
  39.    do{
  40.        pillo_cad=getchar();
  41.        cad[i]=pillo_cad;
  42.        if (flag ==1)
  43.            palabras[i]=cad[i];
  44.        if (flag ==2)
  45.            frase[i]=cad[i];
  46.        i++;
  47.    } while (pillo_cad != '\n');
  48.    cad[i-1]='\0';
  49.    if (flag ==1)
  50.        palabras[i-1]=cad[i-1];
  51.    if (flag ==2)
  52.        frase[i]=cad[i-1];
  53. }
  54.  
  55. void palabras_en_frase (char frase[],int con_pal,char temp[]){
  56.    int i,cont=0,cont2=0;
  57.    char aux [10],ch;
  58.    aux [0]='\0';
  59.    for (i=0;frase[i];i++){
  60.        aux[cont]=frase[i];
  61.        ch=frase[i];
  62.        aux[cont]=convertidor (ch);
  63.        cont++;
  64.        if (frase[i]==' ' || frase[i]=='.'){
  65.            aux[cont-1]='\0';
  66.            ordenar  (n_palabras[con_pal]);
  67.            ordenar  (aux);
  68.            if (comparar (aux,n_palabras[con_pal])==0)
  69.                cont2++;
  70.            cont=0;
  71.            aux [0]='\0';
  72.        }
  73.    }
  74.    printf ("\nLa palabra %s tiene %d anagramas " ,temp,cont2);
  75.    printf ("en: %s" ,frase);
  76. }
  77. void palabras_en_palabras (char palabras[],char frase[]){
  78.    int i,j,cont=0,con_pal=0;
  79.    char aux1 [10],temp [10],ch ;
  80.    aux1 [0]=temp [0]='\0';
  81.    for (i=0;palabras[i];i++){
  82.        temp[cont]=palabras[i];
  83.        ch=palabras[i];
  84.        aux1[cont]=convertidor (ch);
  85.        cont++;
  86.        if (palabras[i]==' ' || palabras[i]=='.'){
  87.            aux1[cont-1]=temp[cont-1]='\0';
  88.            for (j=0;aux1[j];j++)
  89.                n_palabras[con_pal][j]=aux1[j];
  90.            n_palabras [con_pal][j]='\0';
  91.            palabras_en_frase (frase,con_pal,temp);
  92.            cont=0,con_pal++;
  93.            aux1 [0]='\0';
  94.        }
  95.    }
  96. }
  97.  
  98. void ordenar (char cadena[10]){
  99.    int i,j,lon;
  100.    char temp1;
  101.    lon=longitud_cadena (cadena);
  102.    for (i = 1; i < lon; i++){
  103.        for (j = 0 ; j < lon-i; j++){
  104.            if (cadena[j] > cadena[j+1]){
  105.                temp1 = cadena[j];
  106.                cadena[j] = cadena[j+1];
  107.                cadena[j+1] = temp1;
  108.            }
  109.        }
  110.    }
  111. }
  112.  
  113. int comparar (char temp1[10],char temp2[10]){
  114.    int i,si_o_no=0;
  115.    if (longitud_cadena(temp1) != longitud_cadena(temp2))
  116.        si_o_no=1;
  117.    else {
  118.        for(i=0;temp1[i];i++)
  119.            if (temp1[i]!=temp2[i])
  120.                si_o_no=1;
  121.        si_o_no=0;
  122.    }
  123.    return si_o_no;
  124. }
  125.  
  126. int longitud_cadena (char cadena[10]){
  127.    int i;
  128.    for (i=0;cadena[i];i++);
  129.    return i;
  130. }
  131. char convertidor(char caracter){
  132.    if (caracter>96 && caracter<123)
  133.            caracter-=32;
  134.    return (caracter);
  135. }
  136.  

Es muy mejorable usando las funciones que mencioné, como para que se puedan introducir números, más espacios entre palabras -como está sólo admite un espacio entre palabras- etc. Pero bueno, creo que lo que te pongo es lo que pedías. Al menos espero te sirva de orientación. ;)

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

:rolleyes: ;) ;) ;) :rolleyes:
505  Programación / Programación C/C++ / Re: Error en programa en C en: 2 Enero 2014, 14:56 pm
(PD: los comentarios y enunciado estan en catalan)

¡¡¡Chacho!!!, afloja un punto. No cuesta tanto castellanizar un código simple y nos ahorras un esfuerzo adicional. ;) ;) ;)

De entrada el código no furula, vamos no compila. Eso porque creo te falta la librería  <stdbool.h>, además de un "return" al final de la función main.

Lo he mirado sólo por encima y me parece poco clara la explicación de lo que hay que introducir y muy rebuscada la solución que planteas.

Los diez nombres que hay que introducir, ¿seguro que pueden llevar espacios y además acabar con punto?. Me parece muy raro si lo que pretendes es buscar anagramas.

Me parece que lo más lógico es que los diez nombres sean simples palabras, sin espacios ni ná de ná, y que la cadena, que es la que parece que puede contener 50 caracteres como máximo, o sea que sí pueda tener espacios y acabar con un punto y ya luego buscar si alguna de las palabras posee anagrama o no en la cadena. ¿Me equivoco?. ¿Puedes sacarme de la duda?.


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

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



506  Programación / Programación C/C++ / Re: busqueda binaria en archivo en: 1 Enero 2014, 06:33 am

........................
 entonces no puedo hacer una búsqueda binaria directamente de un archivo de texto???tomando en cuenta que los codops del archivo estan ya ordenados
........................


Si están ordenados puedes aplicar directamente la búsqueda binaria e ir guardando los resultados en otro fichero auxiliar o en un array/estructura/lista.

........................................
y otra duda que sería más conveniente por ejemplo si tengo la linea:

 ABA     NO   INH   1806     2   0   2

si primero tengo que buscar el codop y después ver checar algunas cosas con los demás datos, que seria mas conveniente guardar solo el ABA en una estructura o toda la linea
 

Yo creo que bastaría ir leyendo sólo los codops, con ellos guardas la línea a la que pertenecen y al final tendrás ordenadas cada línea.

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

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


507  Programación / Programación C/C++ / Re: Como arreglar preoblemas de numeros grandes en C++ en: 1 Enero 2014, 01:11 am

Más comentaros en números grandes.

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

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


508  Programación / Programación C/C++ / Re: busqueda binaria en archivo en: 31 Diciembre 2013, 23:34 pm
Saludos

tengo la siguiente tabla de instrucciones(de un ensamblador) capturada en un archivo txt:
.............................................................
y tengo por ejemplo un código de operación que dice ABY, el cual lo tengo que buscar en este archivo, para ello pense que seria mas rápido si lo hago con una búsqueda binaria, pero me queda la duda de si tengo primero que guardar solamente los códigos de operación(ABA,ADB...) en una estructura de datos para después poder hacer la busqueda, o si tengo que recorrer el archivo completo linea por linea para saber cuantos codops son??
.....................................................


Por lo que tengo entendido, la búsqueda binaria se realiza en un array/estructura/lista previamente ordenada, por lo que en cualquier caso tendrías que recorrer el fichero entero y, guardados los copdops en donde te apetezca- -a mí me gusta la idea de un array -  primero ordenarlo y a continuación aplicarle la búsqueda binaria.

Pero es sólo una idea.


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

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


509  Programación / Programación C/C++ / Re: De minúscula a mayúscula a nivel de bits en lenguaje C. en: 31 Diciembre 2013, 23:01 pm
........................................................
la intriga es porqué frecuentas ese foro, espero urgente respuesta… :huh: :huh: :huh: :) :) :)
    
Saludos.
Daniel


¿Es que crees que este es el único foro con acción?. Pues no, pero sin dudarlo un instante:es el más activo y entretenido. Se aprende un *uevo. ;) ;) ;)

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

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


510  Programación / Programación C/C++ / Re: De minúscula a mayúscula a nivel de bits en lenguaje C. en: 31 Diciembre 2013, 22:30 pm
...................................
Pensándolo un poco mejor también se podría hacer con máscaras y operaciones a nivel de bit.
Felices fiestas.
......................................

Sólo le veo un pero a lo que haces: modificas la cadena. Y si tuviera que usarla a posteriori no le valdría, a no ser que haga una copia previa de la cadena.  Es una chorrada, ¡¡pero!!, podría ser.

Lo que yo propongo es cuasi-igual, sólo que no modifico la cadena original tan solo la imprimo y paso de la variable "len" ya que se puede evitar su uso.

Salida:


Citar
L -> mayuscula
e -> minuscula
o -> minuscula
S -> mayuscula
a -> minuscula
n -> minuscula
S -> mayuscula
a -> minuscula
n -> minuscula
  -> minuscula
L -> mayuscula
e -> minuscula
o -> minuscula
N -> mayuscula

En mayusculas: LEOSANSAN LEON

En minusculas: leosansan leon



Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. char  cadena[]="LeoSanSan LeoN";
  5. int i;
  6. for (i=0; cadena[i]; i++)
  7. if( cadena[i] & 0x20 )
  8. printf("%c -> minuscula\n", cadena[i]);
  9. else
  10. printf("%c -> mayuscula\n", cadena[i]);
  11.  
  12. printf("\nEn mayusculas: ");
  13. for (i=0; cadena[i]; i++)
  14. printf("%c", cadena[i]& 0xDF);
  15. putchar ('\n');
  16. printf("\nEn minusculas: ");
  17. for (i=0; cadena[i]; i++)
  18. printf("%c", cadena[i]| 0x20);
  19.    putchar ('\n');
  20. return 0;
  21. }
  22.  

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

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

P.D: Por ciero, ¿Daniel, Roberto o Pino1952 ?

Páginas: 1 ... 36 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 ... 132
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines