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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 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 68 69 70 71 72 ... 102
561  Programación / Programación C/C++ / Re: Vector de cadena de caracteres en: 6 Agosto 2019, 06:06 am
Entiendo que lo que quieres hacer es un vector de cadenas de caracteres. Entonces como una cadena de caracteres ya es un vector, pues necesitas un vector de vectores. Un vector de vectores es lo mismo que una matriz.

Código
  1. #include <stdio.h>
  2.  
  3. #define MAX_ARTICULOS 4
  4. #define MAX_SIZE 100
  5.  
  6. int main(){
  7.    char descripciones[MAX_ARTICULOS][MAX_SIZE];
  8.  
  9.    for(size_t i = 0; i < MAX_ARTICULOS; ++i){
  10.        printf("Introduce la descripcion del articulo %d: ", i+1);
  11.        fgets(descripciones[i], MAX_SIZE, stdin);
  12.    }
  13.  
  14.    for(size_t i = 0; i < MAX_ARTICULOS; ++i)
  15.        printf("Descripcion %d: %s", i+1, descripciones[i]);
  16. }

Ahí tienes un ejemplo de cómo trabajar con vectores de cadenas. Piensa que cada línea es una cadena (una frase) y cada columna es un caracter.
Puedes probar ese pequeño código para que veas cómo funciona o intentar hacer algún cambio para entender el funcionamiento. También puedes por ejemplo pedir el número de artículos a tratar y si es menor que <MAX_ARTICULOS> usarlo como condición del bucle.
562  Programación / Programación C/C++ / Re: Ayuda con problema de figuras en: 5 Agosto 2019, 15:15 pm
No sé de dónde habrás sacado tal ejercicio pero mi respuesta después de haberle dado algunas vueltas es que no puedes encontrar una solución con esos datos. Para ello lo único que voy a hacer es ponerte un ejemplo...
Datos:
Código:
numeroLados = 4
perimetro = 20
area = 24

Solución: (Soluciones más bien :rolleyes:)
Código:
Rectangulo con base = 6 y altura = 4 (o viceversa)
Rombo con base (lado) = 5 y altura = 4.8
Puedes comprobarlo con las fórmulas... Ambas soluciones satisfacen todas las condiciones por lo que sólo con esos datos es imposible diferenciar si la figura en cuestión es un rectángulo o un rombo.

Revisa el ejercicio ya que puede que te hayas dejado alguna condición como otro dato más o que los valores sólo puedan ser enteros o algo por el estilo. O que la solución englobe al rectángulo y rombo dentro de la misma opción, es decir, distinguir entre: cuadrado, rectángulo/rombo, trapecio.
563  Programación / Programación C/C++ / Re: Problema con LISTAS y un switch. en: 5 Agosto 2019, 01:44 am
Tienes que saber cuándo tienes algo en el buffer y cuando no. Si no tienes nada y pones un <getchar()> el programa espera un ENTER, entonces tienes que darlo antes de que te salga el siguiente mensaje y puedas introducir el siguiente dato. En tu caso sobran <getchar()> ya que <fgets()> guarda el ENTER dentro del nombre y no son necesarios pero si tienes problemas será que estás sobrepasando el límite de tamaño que tienes establecido.

Si cambiando el tamaño no consigues solucionarlo coloca un ejemplo de ejecución para poder verlo con más detalle.
564  Programación / Programación C/C++ / Re: Problema con LISTAS y un switch. en: 4 Agosto 2019, 02:10 am
No creo que tenga ninguna complicación. En internet habrá infinidad de ejemplos al igual que en otros temas de este foro...
Código
  1. char nombre[50];
  2.  
  3. printf("Introduce tu nombre: ");
  4. fgets(nombre, 50, stdin);
  5.  
  6. printf("Tu nombre es: %s", nombre); // se mostrara "Tu nombre es: <nombre>\n" (con salto de linea al final)
PD: Ten cuidado ya que <fgets()> guarda también el salto de línea de cuando das al ENTER.

Y el problema que tendrás será porque tienes cosas en el buffer (saltos de línea seguramente) y no lo limpias. Es cierto que todo el mundo usa la función <fflush(stdin)> de forma incorrecta ya que <fflush()> está diseñada para trabajar con <stdout> pero obviamente no hace lo mismo. Tienes otras alternativas para limpiar el buffer que se comentaron en un tema de este foro de C/C++.
565  Programación / Programación C/C++ / Re: solicitar día de la semana e imprimir número correspondiente en: 2 Agosto 2019, 23:48 pm
Eso es porque usas condicionales aislados. Es decir, que has utilizado un conjunto de condiciones que son independientes por lo que tu programa las comprueba todas. En estos casos en los que una coincidencia en un <if> excluye que pueda ser verdadera otra coincidencia se usa <if - else if - else if - ... - else>.

Aquí tienes un código sencillo que funciona correctamente pero que no es muy eficiente ya que se compara el valor de <numero> con 1 y coincida o no, se compara con 2 y coincida o no se comprueba que el número sea distinto de 1 y de 2:
(Sé que el código es un poco absurdo pero me parecía un buen ejemplo para mostrarte el problema)
Código
  1. int numero = 1;
  2.  
  3. if(numero == 1)
  4.    printf("El numero vale 1");
  5. if(numero == 2)
  6.    printf("El numero vale 2");
  7. if(numero != 1 && numero != 2)
  8.    printf("El numero es distinto de 1 y de 2");


Se ve claramente que si el número vale 1 ya no va a valer 2 ni ningún otro valor. Por lo que se puede hacer más eficiente así:
Código
  1. int numero = 2;
  2.  
  3. if(numero == 1) // si vale 1...
  4.    printf("El numero vale 1");
  5. else if(numero == 2) // si no vale 1, si vale 2...
  6.    printf("El numero vale 2");
  7. else // si no vale 1 ni 2... ya se da por hecho que es distinto de 1 y de 2
  8.    printf("El numero es distinto de 1 y de 2");
En este caso se comprueba cada <if> hasta que uno sea cierto y en el momento que uno es cierto no sigue comprobando el resto de condiciones.

En tu caso compruebas de forma aislada cada mes excepto el último y en el último haces:
Código:
si mes == "diciembre" entonces
    12  invierno
sino entonces
    prueba de nuevo
fin si
Entonces ese <sino> se ejecutará siempre que el mes no sea igual a "diciembre".
566  Programación / Programación C/C++ / Re: solicitar día de la semana e imprimir número correspondiente en: 2 Agosto 2019, 06:53 am
Si estás empezando, hacerlo a la inversa es un poco más complicado pero te comento lo que deberías mirar:
  • Uso de cadenas de C (arrays de <char>) estáticas (también puedes usar memoria dinámica pero mejor dejar esa parte para más adelante)
  • Algunas funciones para trabajar con cadenas de C. La más útil es para comparar dos cadenas <strcmp()> y <strncmp()> (recomendable usar la segunda porque puedes indicar cuántos caracteres comparar de ambas cadenas). Además para pedir una cadena C al usuario deberás usar <fgets()> en lugar de <scanf()>. Te dejo cómo se usan:
Código:
strcmp(const char *cadena1, const char *cadena2); -> Retorna: -1 (cadena1 < cadena2) / 0 (cadena1 == cadena2) / 1 (cadena1 > cadena2) usando el orden lexicográfico.
strncmp(const char *cadena1, const char *cadena2, size_t longitud); -> Igual que la anterior pero compara tantos caracteres como se indica en <longitud> o hasta que una cadena termina.
fgets(char *cadena, int longitud, FILE *stream); -> Almacena en <cadena> lo introducido por la entrada. Usar como <stream> <stdin> para la entrada estándar (teclado). <longitud> determina el número máximo de caracteres que se van a almacenar (normalmente el tamaño de <cadena>).

Yo te recomendaría una forma poco eficiente pero más simple que sería: de forma manual hacer un bloque de <if-else-if> y en cada uno comparar la entrada con cada uno de los días de la semana (colocar de forma manual el número de caracteres a comparar según el día):
Código
  1. if(strncmp(cadenaUsuario, "Lunes", 5) == 0)
  2.    // lo que quieras hacer si es lunes
  3. else if(strncmp(cadenaUsuario, "Martes", 6) == 0)
  4.    // lo que quieras hacer si es martes
  5. //...
PD 1: Cuidado con las mayúsculas/minúsculas ya que hacen que una cadena con el mismo contenido se interprete como cadenas distintas.

Echa un vistazo a lo comentado antes y anímate a intentarlo. Si tienes algún problema, envía tu código para que podamos ver el problema y ayudarte.
PD 2: No olvides colocar los códigos entre etiquetas de Código GeSHi... :rolleyes: :-X
567  Programación / Programación C/C++ / Re: Ayuda! con TP C++ en: 26 Julio 2019, 05:04 am
Hay muchas formas diferentes de afrontar este problema como por ejemplo el uso de <struct> pero si el problema lo tienes a la hora de llevarlo a cabo deberías poner tu código para poder localizar el problema.

PD: El código entre etiquetas de código GeSHi ya que sino se hace ilegible...
568  Programación / Programación C/C++ / Re: como crear este programa en: 11 Julio 2019, 02:42 am
me pidieron hacer este ejercicio en c nose hacerlo, alguien lo puede realizar asi comparo con lo que voy a intentar hacer.

Hay formas y formas de pedir que te hagan la tarea pero esta la veo más trabajada que otras que directamente te lo piden y no se esfuerzan ni en poner una excusa. :xD :xD
¿Qué tal si intentas "lo que vas a intentar hacer" y si no funciona ya te ayudamos a ver por qué no funciona?

crear un programa que reciba un determinado numero e imprima el mismo
pero con el signo cambiado.

El ejercicio es muy simple y como una imagen vale más que mil palabras y un ejemplo más que mil explicaciones:
Código:
0 - (4) = (-4)
0 - (-4) = (4)
El resto es cosa tuya pero vamos que lo tienes hecho. Yo creo que me ha ablandado la forma de pedirlo... :xD
569  Programación / Programación C/C++ / Re: Proyecto Analizador de Parentesis implementado con Puntero de Clase Pila en: 10 Julio 2019, 21:48 pm
Algunas funciones son mejorables...
  • La función <Crear()> se podría implementar como el constructor por defecto para no tener que llamarlo cuando creas una <Pila>.
  • La función <Sacar()> podría devolver el valor en vez de meterlo en una variable por referencia (como el clásico <top()> de la <stack> de STL aunque en este caso <Sacar()> hace el trabajo de <top()> y <pop()> juntos).
  • La función <Analizar()> debería ser de tipo <bool> para evitar un <cout> dentro de la función.
  • Si usas un <string> en lugar de un <char[]> no tendrás el problema de sobrepasar los 30 caracteres (ventajas de C++).
  • El menu podrías poner <while(true)> y evitar una variable más o hacer un <do while> para salir cuando la opción sea 3 y evitar el uso de <exit()>

Estos son únicamente consejos por si quieres mejorar la implementación. Y ya para hacerlo más completo te recomendaría usar un <template> para poder usarla con distintos tipos de datos. Suerte si te animas a implementar alguna de las ideas. :-X
570  Programación / Programación C/C++ / Re: Validacion de Valores dentro de un arreglo estableciendo un limite en: 10 Julio 2019, 21:11 pm
Lo que entiendo que quieres hacer es recorrer el arreglo (lo que se hace elemento a elemento con un bucle) y comparando cada uno de los elementos con el valor límite.
Si quieres ayuda más específica pon un caso concreto para entenderte mejor y el código que tengas.
Páginas: 1 ... 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 68 69 70 71 72 ... 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines