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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  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 ... 132
121  Programación / Programación C/C++ / Re: Auxilio :C en: 14 Julio 2014, 15:09 pm
Para evitar ese "rosario" de if, yo usaría un par de arrays que recojan el palo y el valor de la carta, algo como:

Código
  1.  const char *palo[4] = { "Corazones", "Diamantes", "Treboles", "Picas" };
  2.  const char *valor[13] = {  "As", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve","Diez", "Jack", "Reina", "Rey" };

donde con las operaciones " % "  y  " / "  obtendría del valor de la carta el palo y su valor.

Y después de barajar, como te comentó anteriormente eferion, el reparto, suponiendo como planteas cuatro jugadores,  haría algo como:

Código
  1.  int carta;
  2.  for( carta = 0 ; carta < 20; carta++){
  3.    if ( carta %10 == 0 )
  4.      putchar('\n');
  5.  printf("\t%7s de %-9s%c", valor[baraja[carta] % 13], palo[baraja[carta] / 13],  ( carta+1 )  %2 == 0 ? '\n' : '\t');
  6.  }

para obtener una salida como:

Código
  1.  
  2.           Seis de Corazones               Diez de Corazones
  3.            Rey de Treboles                  As de Picas
  4.             As de Treboles               Nueve de Treboles
  5.            Dos de Picas                     As de Corazones
  6.            Dos de Treboles              Cuatro de Treboles
  7.  
  8.          Cinco de Corazones              Siete de Picas
  9.          Reina de Diamantes              Siete de Treboles
  10.           Diez de Diamantes               Jack de Diamantes
  11.            Dos de Diamantes               Tres de Picas
  12.          Reina de Corazones             Cuatro de Diamantes
  13.  
  14.  

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


122  Programación / Programación C/C++ / Re: Soy Principiante en: 13 Julio 2014, 13:56 pm
.................................................................................................
Si yo escribo: "C", que el programa me responda con la palabra: "FA"
Si yo escribo: "FA", que el programa me responda con la palabra: "SIB"

Eso seria de gran ayuda amigos, gracias de antemano.

PD: No se nada de programación, estoy aprendiendo apenas  :xD

Antes que nada debes declarar las variables a utilizar en el código, algo como:

Código
  1. int i , opc = -1 , tamay ;
  2.  char entrada[100] ;
  3.  const char *palabras[] = { "C","FA" /** mas..... **/ } ;
  4.  const char *respuestas[] = { "FA","SIB" /** mas..... **/ } ;

donde i se usará como índice, opc como opción y tamay como tamaño del array a usar, que lo podrías calcular como:

Código
  1. tamay = sizeof palabras / sizeof palabras[0] ;

A continuación necesitas entrar por teclado la palabra a comparar/buscar, teniendo en cuenta lo que no hay que hacer en C/C++. Nivel basico:

Código
  1. fgets(entrada , 100 , stdin );
  2.  if (entrada[strlen(entrada)-1] == '\n')
  3.    entrada[strlen(entrada)-1] = '\0';

Una vez entrada la palabra todo es comparar con el array palabras, cosa que se hace usando la función /strcmp:

Código
  1. for ( i = 0 ; i < tamay ; i++ )
  2.    if ( strcmp ( entrada  , palabras[i] ) == 0){
  3.      opc = i ;
  4.      break ;
  5.    }

Y ya casi está. Ahora, y según el valor de opc, se imprimirá la respuesta si la hay:

Código
  1. if ( opc != -1 )
  2.    printf ( "%s" , respuestas[opc] );
  3.  else
  4.    printf ( "No hay respuesta" );

No olvides incluir la librería string.h para el uso de strcmp.

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


123  Programación / Programación C/C++ / Re: Como pasar a mayuscula vocales acentuadas ? en: 12 Julio 2014, 22:42 pm
Ahora sí:

Citar

LA CABALA DE LA SEÑORA


Código
  1. *****************
  2.  for ( i = 0 ; i < strlen(cad) ; i++ ){
  3.    if( cad[i] == 'á' )
  4.      cad[i] = 65 ;
  5.    else if (cad[i] == 'ñ' )
  6.      cad[i] = 165 ;
  7.    else if( cad[i] == ' ' )
  8.      continue ;
  9.    else if( cad[i] >= 97 && cad[i] <= 122 )
  10.      cad[i] = cad[i] -32 ;
  11.  }
  12. *************************

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


124  Programación / Programación C/C++ / Re: problema con array de punteros a cadenas en: 11 Julio 2014, 18:50 pm
Me debo haber expresado ma.l.....................
La linea 9 y la linea 14 son una repetición de la linea 4. Esas 2 lineas son superfluas. Osea, si decides usar punteros, asignarlos 1 vez (en este caso) sería suficiente.


Sorry!, eso pasa por querer aprovechar el código previo.

Efectivamente, están de más (para el caso de  usar punteros):

Código
  1. int  mayor = 0 , menor = 0 , *posicion1 , *posicion2 ;
  2.  mayor = votos[0];
  3.  menor = votos[0];
  4.  posicion1 = &mayor_, posicion2 = &menor_;
  5. for( contador = 1 ; contador < 4 ; contador++ ){
  6.  if ( votos[contador] > mayor){
  7.    mayor_= contador ;
  8.    mayor = votos[mayor_];
  9. }
  10.  else if ( votos[contador] < menor){
  11.    menor_= contador ;
  12.    menor = votos[menor_];
  13.  }
  14. }

Y gracias por la observación!!!!!, sólo espero no haberla pifiado esta vez.  ;)

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



EDITADO: Con la perspicaz observación de CalgaryCorpus. ;)
125  Programación / Programación C/C++ / Re: problema con array de punteros a cadenas en: 11 Julio 2014, 18:13 pm
............................................
y es que de manera premeditada asigne votacion de la siguiente manera. japon =7  brazil=2 suecia=1 mexico=0
y me sale bien el del mayor pero en el menor me imprime que el de menor votos es suecia con 1 voto cuando en realidad es mexico

Pues a mi con:

Código
  1. for( contador = 1 ; contador < 4 ; contador++ ){
  2.    if ( votos[contador] > mayor){
  3.      mayor=votos[contador];
  4.     posicion1=contador;
  5.    }
  6.   if ( votos[contador] < menor){
  7.      menor=votos[contador];
  8.      posicion2=contador;
  9.    }
  10. }

me da una solución correcta:

Código
  1. votos[0]=7
  2. votos[1]=2
  3. votos[2]=1
  4. votos[3]=0
  5.  
  6. EL PAIS GANADOR ES Japon con 7 votos
  7.  
  8. EL PAIS CON MENOS VOTOS ES Mexico con 0 votos
  9.  

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



EDITADO: Con la perspicaz observación de CalgaryCorpus. ;)
126  Programación / Programación C/C++ / Re: problema con array de punteros a cadenas en: 11 Julio 2014, 16:43 pm
Es superfluo asignar los punteros en cada vuelta.
Si se eliminan esas asignaciones el resultado será el mismo.


Ya, estoy "totalmente" de acuerdo contigo. Sólo era una opción por si "sí o sí" tenía que usar punteros. No sé, a lo mejor era una tarea en la que obligaban a hacer uso de los mismos.

Si no es así es una redundancia su uso y tu propuesta es más que suficiente.

ok me quedo mejor con la segunda sugerencia. ahora como para imprimir el pais que esta en la posicion del mayor y menor??

e intentado de varias formas pero nada

Código
  1. printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[(int)posicion1], mayor);
  2. printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[posicion1], mayor);
  3. printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[*posicion1], mayor);

Sería:

Código
  1. printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[*posicion1], mayor);
  2.  printf("\n\nEL PAIS CON MENOS VOTOS ES %s con %d votos",paises_postulados[*posicion2],menor);

si eso lo acabo de notar, donde me dices que quite los asteriscos? en la declaracion o en la asignacion dentro del for??

En ese caso de todos los lados.


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



127  Programación / Programación C/C++ / Re: problema con array de punteros a cadenas en: 11 Julio 2014, 15:31 pm
Antes que nada debes cambiar la función mayor_menor a algo como esto:

Código
  1. void mayor_menor(int votos[])

ya que haces uso del array votos en ella.

Y el array votos lo puedes inicializar de forma más simple:

Código
  1. int votos[10]={0};

Si quieres usar punteros, por lo que sea, en lugar de :

Código
  1. *posicion1=contador;

deberías hacer:

Código
  1. posicion1 = &mayor_;

Pero ello se traduce en un error lógico y es que el puntero posicion1 apuntaría siempre a contador, con lo que su valor sería siempre 4.

En su lugar habría que usar unas nuevas variables donde guardar el mayor valor de contador y hacer que el puntero apunte a esa variable. Y lo mismo con la posicion2.

Algo como, y aprovecha el for para calcular tanto el mayor como el menor, en lugar de dos for:

Código
  1. ****************************************
  2.  int mayor_= 0, menor_= 0;
  3.  mayor = votos[0];
  4.  menor = votos[0];
  5.  posicion1 = &mayor_, posicion2 = &menor_;
  6.  for( contador = 1 ; contador < 4 ; contador++ ){
  7.    if ( votos[contador] > mayor){
  8. mayor_= contador ;
  9. mayor = votos[mayor_];
  10. posicion1 = &mayor_;
  11.    }
  12.    else{
  13. menor_= contador ;
  14. menor = votos[menor_];
  15. posicion2 = &menor_;
  16.    }
  17. }
  18. ***************************
  19.  

Pero doctores tiene el foro en punteros y yo no soy uno de ellos, así que es muy posible que lo que propongo sea mejorable.

En cualquier caso la propuesta de CalgaryCorpus es la más razonable, sólo pongo lo anterior si es que sí o sí debes  usar punteros.

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


128  Programación / Programación C/C++ / Re: Como pasar a mayuscula vocales acentuadas ? en: 10 Julio 2014, 13:12 pm
No sabría decirte... a mi me funcionan las dos:

á = -96
ñ = -92

... yo estoy compilando con un compilador de C++, no tengo muy claro hasta que punto influye en este caso.

Es que yo lo puse File enconding "UTF-8 y es donde la á no aparece.  :silbar:

129  Programación / Programación C/C++ / Re: Como pasar a mayuscula vocales acentuadas ? en: 10 Julio 2014, 12:56 pm
Si por ejemplo fuese UTF-8... la codificación de la 'ñ' y la 'á' ocuparían más de un byte.

He probado y la ñ sigue siendo -92, pero la á no aparece. ¿Qué puedo hacer en este caso?.

Saludos, ¡fenómeno!.

130  Programación / Programación C/C++ / Re: Como pasar a mayuscula vocales acentuadas ? en: 10 Julio 2014, 10:14 am
......................................
este es mi programa usando el codigo ASCII, pero no funciona, me devuelve la ñ y la á en minuscula
..................................

Usa un:

Código
  1. for(i=0;i<strlen(cad);i++)
  2.    printf("%d  ",cad[i]);

para que veas con qué int se corresponden la ñ y la á y ya tá.

¡¡¡¡ 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 ... 132
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines