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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [17] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ... 132
161  Programación / Programación C/C++ / Re: Párametros de funciones en: 11 Junio 2014, 18:03 pm
Sí!

Que bien......

Aquí tienes un listado de varias funciones de cadena. Todo es ir mirando una a una.

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


162  Programación / Programación C/C++ / Re: Problema al dividir un string en: 8 Junio 2014, 12:45 pm
Doctores en C++ tiene esre foro y yo no soy uno de ellos.

Pero probando, probando obtengo la salida que deseas:

Citar

Escribe la frase: leosansan, san,sam, leon, noel, 123,321
leosansan,
san,sam,
leon,
noel,
123,321


Código
  1. #include <iostream>
  2. #include <cstring>
  3. #include <sstream>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8.  string frase, aux;
  9.  cout<<"Escribe la frase: ";
  10.  getline(cin, frase);
  11.  istringstream iss(frase);
  12.  if(getline(iss, aux, ',')){
  13.    istringstream iss(frase);
  14.    while(getline(iss, aux, ' ')){
  15.      istringstream iss(aux);
  16.      cout<<aux<<endl;
  17.    }
  18.  }
  19.  return 0;
  20. }

Supongo que se puede hacer de manera más eficiente, pero es hasta donde yo doy usando sólo istringstream.

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


163  Programación / Programación C/C++ / Re: asignación dinámica de memoria y strcpy en: 5 Junio 2014, 22:42 pm
Ahondando en lo que comenta E.I, al hacer:

  
Código
  1. x = "101010101";

al tratarse de una cadena de caracteres constantes no podrás modificarla a posteriori, de ahi que al intentarlo con strcpy el programa cruja. Para ello, para modificar el valor del puntero, tendría que "apuntar" a una dirección que no sea una constante, como un array.

El resultado que quieres obtener te lo puede proporcionar curiosamente lo mismo que te daba problema:strcpy.

Como ejemplo:

Citar

x=strcpy1=[101010101]
x=strcpy2=[hola]
Process returned 0 (0x0)


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6.  char *x;
  7.  x = (char*)calloc(10,1);
  8.  
  9.  strcpy(x,"101010101");
  10.  printf("\nx=strcpy1=[%s]",x);
  11.  
  12.  strcpy(x,"hola");
  13.  printf("\nx=strcpy2=[%s]",x);
  14.  
  15.  free(x);
  16.  return 0;
  17. }

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


164  Programación / Programación C/C++ / Re: Problema con palindromo en: 31 Mayo 2014, 18:16 pm
Estas comparando "palabra", que si tiene o puede tener mayúsculas con aux a las que has eliminado las mayúsculas:

Código
  1. for(int i=0; i<longCad(aux); i++) { // Bucle para convertir cualquier mayuscula a minuscula.
  2.    if(aux[i]<97){
  3.      palabra[i]+= 32;
  4.      aux[i] += 32;
  5.     }
  6.   }


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


165  Programación / Programación C/C++ / Re: de nuevo con insercion directa en: 26 Mayo 2014, 20:36 pm
A bote pronto a mi me sale esto:

Citar

los numeros introducidos son:
 dato 1 es 3
 dato 2 es 8
 dato 3 es 6
 dato 4 es 5
 dato 5 es 4
 dato 6 es 7
 dato 7 es 9
 dato 8 es 12
 dato 9 es 11
 dato 10 es 10
 dato 11 es 13
 dato 12 es 2
 dato 13 es 21
 dato 14 es 14
 dato 15 es 15

el vector par-impar ordenado es:
 dato 1 es 21
 dato 2 es 15
 dato 3 es 13
 dato 4 es 11
 dato 5 es 9
 dato 6 es 7
 dato 7 es 5
 dato 8 es 3
 dato 9 es 2
 dato 10 es 4
 dato 11 es 6
 dato 12 es 8
 dato 13 es 10
 dato 14 es 12
 dato 15 es 14


Código
  1. void ordenar_pares_impares(int vector[], int elementos)
  2. {
  3.   int i, j, t,n;
  4.     for (i=1; i<elementos; i++)
  5.     {
  6.         j=i;
  7.         t=vector[j];
  8.         if(t%2==0)
  9.         {
  10.         while (j>0 && vector[j-1]>t && vector[j-1]%2==0)
  11.         {
  12.             vector[j]=vector[j-1];
  13.             j--;
  14.         }
  15.         }
  16.         else
  17.         {
  18.         while (j>0 && (vector[j-1]<t || vector[j-1]%2==0))
  19.         {
  20.             vector[j]=vector[j-1];
  21.             j--;
  22.         }
  23.         }
  24.         vector[j]=t;
  25.     }
  26.  
  27.   printf("\n\nel vector par-impar ordenado es: ");
  28.   //imprimimos el vector con su respectivo ordenamiento
  29.   for( n=0;n<elementos;n++)
  30. {
  31. printf("\n dato %d es %d", (n+1), vector[n]);
  32. }
  33.  
  34. char letra;
  35. printf("\ndesea buscar un elemento en el vector?\n presione s para SI y n para NO:  ");
  36. letra=getch();
  37.  
  38. if (letra =='s')
  39. {
  40. busqueda_secuencial(vector,elementos);
  41. }
  42. }

Y para mi:

Código
  1.  int elementos;
  2.  scanf("%d",&elementos);
  3.  
  4.  int v [(elementos-1)];

está bien ya que primero obtienes la dimensión y luego declaras el array. Otra cosa es que lo hubieras hecho al revés aunque como te comentó eferion convendría poner una validación a dicha entrada.


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


166  Programación / Programación C/C++ / Re: Representación hexadecimal de las vocales con acento en: 24 Mayo 2014, 19:44 pm
Por lo que tengo entendido al usar esas secuencias de escape la siguiente letra a dicha secuencia no puede ser un dígito numérico ni letra de la a a la f o el compilador la tomará como parte del hexadecimal y dará el warning que comentas.

Es decir si quieres escribir "tenía"=ten\xA1a como lo que sigue a xA1 es una a se tomará como parte del hexadecimal imprimiendo por ello un caracter no esperado y lanzando el consiguiente warning.


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


167  Programación / Programación C/C++ / Re: Problema con programa para hallar numeros primos en: 24 Mayo 2014, 19:04 pm
.............................................
Aunque en verdad, esa condición debe de ser la única que cumplan los números primos y es lo que no se hacer, como aislar los números que solo cumplen esa condición y ninguna mas.


Has puesto el dedo en la llaga: si es primo los divisores, sin contar el 1 y al propio número son cero, si no no es primo.

Como ves todo se reduce a ver si tiene algún divisor, cosa que previamente no sabes y habrá que ir comprobando para cada número.

Te paso un código comentado con esa idea.

 Ya lo de ir de dos en dos recorriendo sólo los impares o llegar tan sólo hasta sqrt(i) o mejor, porque no usamos la librería math para sqrt, hasta j*j<=i, son detalles de mejorar la eficiencia pero creo que no era esa la cuestión.

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  int i,j,num=15,aux=0;
  5.  printf("2  ");/** supuesto num>1 **/
  6.  for (i=3; i<=num;i+=2) {
  7.    aux=0;
  8.    for (j=3;j*j<=i;j+=2){
  9. /** Aqui si tiene un divisor no es primo y pongo aux a 1
  10.  para saberlo y rompo el bucle ya que no tiene mayor importancia
  11.  que tenga mas divisores **/
  12.      if (i%j==0){
  13.        aux=1;
  14.        break;
  15.      }
  16.    }
  17. /** Aqui si aux=0 es que no tiene divisores y por tanto es primo **/
  18.    if (aux==0)
  19.      printf ("%d  ",i);
  20.  }
  21.  return 0;
  22. }


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



168  Programación / Programación C/C++ / Re: pasar de decimal a cualquier base menor de 10 en: 24 Mayo 2014, 15:14 pm
gracias. Aunq la librería cstdlib no la he dado y eso de atoi nunca lo he usado.
Ademas el ejercicio dice q acepte de entrada una cadena y devuelva un número entero. Y la cadena de entrada es un string en formato "número/base".
Es un ejemplo del tema de array, ¿sabrías alguna forma de hacerlo usando la librería array?

Creo que confundes el usar arrays con usar la librería array.

Una posible solución sin usar atoi ni stdlib y sí arrays donde después de la entrada en el formato 123/2 tipo string paso los valores a enteros para luego poder operar con ellos:

Código
  1. /**
  2. Entrada ejemplo en el formato string:123/2
  3. **/
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. void Conversor(int num,int bas){
  9.  int resto=0;
  10.  for (int factor=1;num>=1;factor*=10,num=num/bas)
  11.    resto+=(num%bas)*factor;
  12.  cout<<resto;
  13. }
  14.  
  15. int main(){
  16.  int i,lon,num=0,bas=0,factor;
  17.  string  numero,base;
  18.  cout<<"Escribe el numero que quieres convertir (num/base): ";
  19.  getline(cin,numero,'/');
  20.  getline(cin,base,'\n');
  21.  for (lon=0;numero[lon];lon++);
  22.  for (i=lon-1,factor=1;i>=0;i--,factor*=10)
  23.    num+=(numero[i]-'0')*factor;
  24.  for (lon=0;base[lon];lon++);
  25.  for (i=lon-1,factor=1;i>=0;i--,factor*=10)
  26.    bas+=(base[i]-'0')*factor;
  27.  if(bas<=10)
  28.    Conversor(num,bas);
  29.  else
  30.    cout<<"Error no es una base menor de 10";
  31.  return 0;
  32. }

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


169  Programación / Programación C/C++ / Re: Problema con float y double!!!! en: 22 Mayo 2014, 22:34 pm
Inesperada la salida que obtengo con el código de Blaster:

Citar

Dame 3 valores de grados a convertir en grados celsius:
Numero 1 >>>> 100
Numero 2 >>>> 200
Numero 3 >>>> 300
Grados Kelvin:

373.149994
473.149994
573.150024


No así con el de yoel_alejandro:

Citar

Dame 3 valores de grados a convertir en grados celsius:
Numero 1 >>>> 100
Numero 2 >>>> 200
Numero 3 >>>> 300
Grados Kelvin:

373.150000
473.150000
573.150000


Análogo al de usar %g en lugar de %f:

Código
  1. void kelvin(float *grados, float * kel){
  2.    int i;
  3.    for( i = 0; i < MAX; i++ )
  4.      printf("%g\n", kel[i] = grados[i] + 273.15);
  5. }

Citar

Dame 3 valores de grados a convertir en grados celsius:
Numero 1 >>>> 100
Numero 2 >>>> 200
Numero 3 >>>> 300
Grados Kelvin:

373.15
473.15
573.15


¿Alguna sugerencia a este comportamiento del %f?.

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





170  Programación / Programación C/C++ / Re: Ayuda para crear tabla de conversión de decimales en: 22 Mayo 2014, 20:38 pm
¡Que manía con obtener las cadenas a la inversa y luego tener que darles la vuelta!

¡¡ ¡Es broma !!!, ¿ehhhh?.

Pero esa es en esencia la diferencia sustancial con códigos anteriores: calculo previamente la longitud de la cadena contenedora del número en la base en cuestión y luego la relleno al revés. Además de otras sutiles diferencias:

Código
  1. #include <stdio.h>
  2.  
  3. #define DIGITOS   "0123456789ABCDEF"/*"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"*/
  4.  
  5. int main(){
  6.  int i,n_digitos,numero,base,cociente,num;
  7.  char cadena[11];
  8.  for (numero=1;numero<=256;numero++){
  9.    printf("\n%3d",numero);
  10.    for(base=2;base<=14/*37*/;base+=6/*base++*/){
  11.      if (base==14)
  12.        base=16;
  13.      cociente=num=numero;
  14.      for (n_digitos=0;num;n_digitos++,num/=base);
  15.      for (i=n_digitos-1;cociente;i--,cociente/=base)
  16.        cadena[i]=DIGITOS[cociente % base];
  17.      cadena[n_digitos]='\0';
  18.      printf("  en BASE (%d)=%-9s ",base,cadena);
  19.    }
  20.  }
  21.  return 0;
  22. }

Y creo que se ve que el código "estaba" para otra cosa. Concreta mente para obtener un número decimal en las bases de 2 a 36, cosa que se consigue activando lo que está desactivado, pero ese ya sería otro problema.

Y aquí la salida para los veinte últimos:

Citar

236  en BASE (2)=11101100    en BASE (8)=354         en BASE (16)=EC
237  en BASE (2)=11101101    en BASE (8)=355         en BASE (16)=ED
238  en BASE (2)=11101110    en BASE (8)=356         en BASE (16)=EE
239  en BASE (2)=11101111    en BASE (8)=357         en BASE (16)=EF
240  en BASE (2)=11110000    en BASE (8)=360         en BASE (16)=F0
241  en BASE (2)=11110001    en BASE (8)=361         en BASE (16)=F1
242  en BASE (2)=11110010    en BASE (8)=362         en BASE (16)=F2
243  en BASE (2)=11110011    en BASE (8)=363         en BASE (16)=F3
244  en BASE (2)=11110100    en BASE (8)=364         en BASE (16)=F4
245  en BASE (2)=11110101    en BASE (8)=365         en BASE (16)=F5
246  en BASE (2)=11110110    en BASE (8)=366         en BASE (16)=F6
247  en BASE (2)=11110111    en BASE (8)=367         en BASE (16)=F7
248  en BASE (2)=11111000    en BASE (8)=370         en BASE (16)=F8
249  en BASE (2)=11111001    en BASE (8)=371         en BASE (16)=F9
250  en BASE (2)=11111010    en BASE (8)=372         en BASE (16)=FA
251  en BASE (2)=11111011    en BASE (8)=373         en BASE (16)=FB
252  en BASE (2)=11111100    en BASE (8)=374         en BASE (16)=FC
253  en BASE (2)=11111101    en BASE (8)=375         en BASE (16)=FD
254  en BASE (2)=11111110    en BASE (8)=376         en BASE (16)=FE
255  en BASE (2)=11111111    en BASE (8)=377         en BASE (16)=FF
256  en BASE (2)=100000000   en BASE (8)=400         en BASE (16)=100


Y un fuerte saludo para yoel_alejandro del que hace semanas que no sabíamos nada. Se te ha echado de menos campeón.

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


Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [17] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ... 132
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines