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


 


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 92
1  Programación / Programación C/C++ / Re: Palindromo C++ en: 23 Agosto 2014, 22:45
Pero de igual manera podrías inicializar q a -1 y no restarle 1 a p:
.......................................

Y ya puestos podríamos ahorrarnos una variable:

Código
  1. bool Palindromo(char palabra[40]) {
  2.  int p = LongCad ( palabra ) ;
  3.  while ( ( p-- ) > ( LongCad ( palabra ) - 1 ) / 2 )
  4.    if ( tolower (palabra [ p ] ) != tolower ( palabra [ LongCad ( palabra ) - 1 - p ] ) )
  5.      return false;
  6.  return true;
  7. }

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



2  Programación / Programación C/C++ / Re: Palindromo C++ en: 23 Agosto 2014, 21:03
Seria mas apropiado realizar el decremento e incremento fuera del while justo después de la primera comparación:
...........................
Saludos

Por algo puse "Creo", no sé por qué pero algo me decía que no estaba bien.  ;)

Gracias por la observación. Ya edité el mensaje anterior donde recojo lo que mencionas.

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


3  Programación / Programación C/C++ / Re: Palindromo C++ en: 23 Agosto 2014, 20:10
Lo que no me acaba de convencer es la necesidad de usar una copia de "palabra". Podrías comparar directamente los caracteres equidistantes de palabra, algo como:

Código
  1. bool Palindromo(char palabra[40]) {
  2.  nt q = 0, p = (LongCad(palabra) - 1);
  3.  while (q < p) {
  4.    if ( tolower (palabra[q]) != tolower (palabra[p]) )
  5.      return false;
  6.    q++, p--;
  7.  }
  8.  return true;
  9. }

"Creo" que así funcionará.

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



EDITADO con la observación de Blaster.
4  Programación / Programación C/C++ / Re: Problema en ejercicio: Sacar factorial de entero positivo (C++) en: 21 Agosto 2014, 15:18
...............................................
 (el ejercicio me pide hacerlo con for):
...............................................

Ya que es con un for, prueba algo como esto:

Código
  1.  int factorial=1;
  2.  for (int contador=2;contador <= numero;contador++)
  3.    factorial *= contador;

Creo que el código se explica por si solo.  ;)

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


5  Programación / Programación C/C++ / Re: Cuando utilizar signed y cuando unsigned (lenguaje C) en: 21 Agosto 2014, 14:03
En los dos mensajes anteriores al tuyo se hace eso, trata de no romper las reglas todo el tiempo, si se te borra un mensaje es por algo, volver a publicarlo no es una buena idea.
............................................................

Me pareció que se hacia hincapié en la impresión en lugar de la asignación.

De todas formas si he molestado por reiterativo es que no supe interpretar los dos mensajes anteriores, que para mí iban en el sentido, reitero, de la impresión. Tal vez el de rir3760 sí hacía referencia a la asignación pero tan sólo quise ser más explícito.

Siento las molestias y estaré más al loro.

Un fuerte saludo de León.

6  Programación / Programación C/C++ / Re: Cuando utilizar signed y cuando unsigned (lenguaje C) en: 21 Agosto 2014, 01:42
Hola rir.
Gracias por el aporte, hay cosas que o no están en todos los manuales o uno las pasa por alto, gracias que están Uds.


No solamente puedes imprimir los valores límites sino que puedes guardarlos en una variable para su uso posterior. Como ejemplo:

Código
  1. ------------------------------------------------------------
  2.  unsigned long long  int a = -1;
  3.  unsigned long long b = a ;
  4. ------------------------------------------------------------

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


7  Programación / Programación C/C++ / Re: Retos de programación C/C++ en: 17 Agosto 2014, 07:23
Tal vez no sea la solución mas rápida pero ira mejorando:
..............................................
Seria interesante que publiquen los códigos con los cuales resuelven el problema

No dudo que lo podamos mejorar, aunque a bote pronto no veo por donde.

Respecto a lo de publicar código siento haber puesto la otra noche la solución sin el mismo pero los habituales del foro creo que me comprenderán. Se debe a que en estos últimos tiempos cuando cuelgo código en el foro o me lo borran directamente o sencillamente bloquean el tema y esto último me hubiera dolido ya que habría afectado a todos los seguidores del tema por mi culpa. Y es que me zumban todavía en mis oídos unas palabras de engel lex: "León para que pones código si sabes que te lo van a borrar".

Pero en vista de que, por ahora al menos, eso no ha pasado, paso a poner mi código que básicamente es similar al ya expuesto sólo que no hago uso de función, más que nada para no tener que estar llamando a la misma tropecientas veces y esperando su respuesta, y que es más "cortito", está compactado como simple ejercicio. Lo habría hecho más cortito sin tanto define pero por claridad y facilidad para cambiar (podemos calcular qué dos enteros tienen dos factores, o tres tres, o tres cuatro, o cuatro cuatro o ....). Creo que venía bien, así como los nombres dados a las variables. Son largos pero sabes en cada momento qué diablos hace cada variable:   ;)

Código
  1. #include <stdio.h>
  2. #define NumFactores 4u
  3. #define NumEnteros 4u
  4. #define NumInicial 130000u
  5.  
  6. int main ( ) {
  7.  unsigned int i , numero , inumero = NumInicial , divisor = 2 , contEnteros = 0 , num_fact = 0 ;
  8.  while ( 1 ) {
  9.    num_fact = 0 , numero = inumero++ ;
  10.    while ( numero > 1 )
  11.      for( divisor = 2 ; numero > 1 ; divisor++ )
  12.        if ( numero % divisor == 0 && num_fact++ >= 0 ) {
  13.          while ( ( numero /= divisor ) % divisor == 0 ) ;
  14.        }
  15.    if ( ( contEnteros = ( num_fact == NumFactores ) ? contEnteros + 1 : 0 ) == NumEnteros ) {
  16.      for ( i = 0 ; i < NumEnteros ; i ++ )
  17.        printf ( "%u   " , inumero - NumEnteros + i )  ;
  18.      break ;
  19.      }
  20.  }
  21.  return 0;
  22. }

Y ojito a la variable "NumInicial" ya que si vas a calcular los tres primeros enteros que tengan tres factores habrá que bajarla a algo como 600 (eso es porque ya lo he calculado y sé que salen algo superior a 600  :laugh: ) o a 20 si vas a calcular qué dos enteros tienen dos factores, etc. Lo propio sería ponerla a 2 y así vale para cualquier valor sólo que se penaliza el tiempo de respuesta.  :o

Y sin otro particular, y a la espera de nuevos Retos, un fuerte abrazo a todos de León.

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



P.D: Sólo espero que no sea una tarea disfrazada de Reto.  :silbar:
8  Programación / Programación C/C++ / Re: Retos de programación C/C++ en: 16 Agosto 2014, 11:26
Buenas, abro este post para ir publicando una serie de retos a medida que vayan resolviendo los mismo, con el objetivo estimular a la comunidad a participar mediante la resolución de problemas que competen al mundo de la programación que tanto nos apasiona


Encuentra los primeros cuatro números enteros consecutivos para tener cuatro factores primos distintos. ¿Cuál es el primero de estos números?

Espero su participación

Código
  1.  
  2. 134043 =  3  * 7 * 13 * 491
  3. 134044 =  2^2 *  23 * 31  * 47  
  4. 134045 =  5 *  17 * 19 *  83
  5. 134046 =  2 * 3^2 * 11 * 677
  6.  
  7.  

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


9  Programación / Programación C/C++ / Re: hola amigos necesito su ayuda en C en: 15 Agosto 2014, 22:29
¿Qué compilador e IDE usas?. Por si no lo es te aconsejo en estos inicios Code::Blocks.

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


10  Programación / Programación C/C++ / Re: Problema en un ejercicio de C++ en: 15 Agosto 2014, 17:57
"Creo que en:

Código
  1. if (valor=9999)
  2. {
  3. continue;
  4. }


deberías poner ("=" no, es para asignar,  "==" sí, es para comparar):

Código
  1.  for (  numeroValores  = 0 ; ; numeroValores ++ )
  2. ------------------------------------------------
  3.  if ( valor == 9999 )
  4.    break;
  5. ------------------------------------------------
  6.  

EDITADO: El for también había que corregirlo.  ;)

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


11  Programación / Programación C/C++ / Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++... en: 15 Agosto 2014, 16:44
Desearia que me ayuden en esta funcion de antemano gracias....
................................................................

Como te comentó rir3760, lo primero es declarar main de tipo int, como manda el estándar de C y evitar el uso de la librería conio y sus funciones por lo mismo, no forman parte del estándar de C.

¿ char a[] ?. Si el array "a" va a almacenar números lo lógico es que sea de tipo int, ¿no?. Y declararlo previamente a tamaño de 100 cuando al introducir los pares pedidos pudiera ser que se pidan 200 pues se quedaría cortito. Mejor declarar el array después de introducir el valor de  "n".

¿La función "prome1" de tipo char?. Ni tan siquiera de tipo int ya que le pasas el array y esto hace que se pase por referencia. No es necesario pues que retorne nada.

Con estas ideas te quedaría algo como:

Código
  1. ********************************************
  2. int main ( ) {
  3. ---------------------------------------------------------------------------
  4.  scanf ( "%d" , &n ) ;
  5.  int a[ n ] ;
  6.  printf( "\n" ) ;
  7.  prome1 ( n , a ) ;
  8.  for ( i = 0 ; i < n ; i++ )
  9.    printf ( "\n\t[%d]" , a[ i ]) ;
  10.  return 0;
  11. ****************************************************
  12. void prome1( int n , int a[ ] ) {
  13.  int i = 0 ;
  14.  for( i = 0 ; i < n ; i++ )
  15.    a[ i ] = ( i ) * 2 ;
  16. }

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


12  Programación / Programación C/C++ / Re: Ayuda en extraer numeros (coordenadas x,y) de un fichero .txt en C en: 13 Agosto 2014, 21:09
No estoy seguro de haberte entendido bien pero parece que quieres leer una cierta cantidad de coordenadas del fichero xy.txt y guardar las  mismas en otro fichero que yo llamaré Copiaxy. Si es así lo siguiente lo realiza:

Código
  1. ***************************************
  2.  scanf("%d",&n);
  3.  txt = fopen ( "xy.txt" , "r" ) ;
  4.  for ( i = 0 ; i < n ;  i++  )
  5.    fscanf  ( txt , "%lf%lf"  , &c  [ i ][  0 ] , &c  [ i ][  1 ] )  ;
  6.  fclose ( txt ) ;
  7.  
  8. /* ***** OPERO SOBRE LAS COORDENADAS Y LAS GUARDO ***** */
  9.  
  10.  res = fopen ( "Copia_xy.txt" , "w" ) ;
  11.  for ( i = 0 ; i <n ; i++ )
  12.    fprintf ( res , "%lf  %lf\n" , c [ i ][ 0 ] , c [ i ][ 1 ] )  ;
  13.  fclose ( res ) ;
  14. ************************************************

Y si lo que quieres es leer las coordenadas para "operar" sobre ellas, tipo ordenarlas y cosa por el estilo, están en el array "c". Puedes hacer lo que quieras con ellas y después guardarlas.

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


13  Programación / Programación C/C++ / Re: Matriz con puntos de silla (lenguaje C) en: 13 Agosto 2014, 00:09
Para ser un punto de silla debe cumplir una de estas dos condiciones:

1) Dentro de la fila son mínimos y dentro de la columna son máximos
2) Dentro de la fila son máximos y dentro de la columna son mínimos


Me debo estar quedando obsoleto, ¡los años no pasan en balde!.

Yo me quedé en la definición primera como punto de silla , para nada la segunda. Sniff!!!!!...¿o tal vez esté en lo cierto?.  :silbar:

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


14  Programación / Programación C/C++ / Re: Matriz con puntos de silla (lenguaje C) en: 12 Agosto 2014, 21:45
Hola gente.
Tengo un error con la validación de datos en este programa y por más que práctico no logro dar con la tecla.-
Debo reconocer que puedo estar cometiendo un error que ya debería resolver por mi mismo pero me pase 2 días de 8 horas cada uno para hacer que funcionara la matriz de punto de silla y cuando lo logré (bueno creo que lo logré porque lo corrí más de 50 veces y nunca me sale la tabla con la coincidencia) me aparece este error que deseo que me ayuden a resolver porque quiero dejar perfectamente establecida la forma correcta de utilizar fgets.-
..........................................

Bienvenido otra vez amigo Daniel.

El código funciona perfecto pero pretender que de forma aleatoria te salga un punto de silla es mucho pedir.  :o

Te aconsejo introducir a mano una matriz que sepas que tiene punto de silla y así compruebas que el código funciona O.K.

Cambia a:

Código
  1. void ingreso(int matriz[], int intFil, int intCol){
  2. unsigned int hora = time(NULL), i=0, j=0, indice=0;
  3. srand(hora);
  4.  
  5. for(; i < intFil; i++){
  6. for(j=0; j < intCol; j++){
  7. indice = i * intCol + j;
  8. printf("Introduzca la posicion %d, %d: ", i+1, j+1);
  9. scanf ("%d",&matriz[indice]);
  10. //matriz[indice] = rand ()% 100;
  11. }
  12. }
  13. printf("\n");
  14. for(i=0; i<intFil; i++){
  15. for(j=0; j<intCol; j++){
  16. indice = i * intCol + j;
  17. printf(" %3d", matriz[indice]);
  18. }
  19. if(j%intCol==0) printf("\n");
  20. }
  21. }

e introduce como ejemplo de matriz con punto de silla:

Código
  1.    1       2       3
  2.    2       3       4
  3.    1       5       2

Y de paso cambia, para que el resultado sea más chachi en la función puntoDeSilla:

Código
  1. printf("\n en la fila %d columna %d hay punto de silla", i+1, colMen+1);

Veras como sí que detecta el punto de silla en la fila 2 y columna 1, con los cambios que te he mencionado, claro.  ;)

Lo dicho, un fuerte saludo Daniel de tu amigo León.

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




Sorry!, ya han contestado mientras escribía esto.
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 92
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines