Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MAFUS

#1001
Programación C/C++ / Re: Duda cadenas C
1 Diciembre 2016, 22:30 PM
Qué tal con indices?
Uno desde el principio hasta la mitad y el otro desde el final hasta la mitad. Si las letras en el índice son iguales mueves el índice, sino paras el bucle.
Compruebas si el índice ha llegado a la mitad, si es así es un palíndromo.
#1002
Programación C/C++ / Re: no se que esta mal
1 Diciembre 2016, 20:59 PM
Como dice engel lex tu código es demasiado complicado. Debes aprender a refactorizar tus bucles para simplificarlos y los códigos que se repiten y siempre son los mismos ponlos dentro de una función. Y cuida de las identaciones: además de funcional debe ser bonito visualmente para que se pueda seguir bien.

Tu código rehecho y funcional quedaría así:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define FILAS 5
#define COLUMNAS 5
#define MAX_BARCOS (FILAS * COLUMNAS / 4)

void mostrar_tablero(int tablero[][COLUMNAS]) {
   int x, y;
   
   for(y = 0; y < FILAS; ++y) {
       for(x = 0; x < COLUMNAS; ++x)
           printf("%i ", tablero[y][x]);
       putchar('\n');
   }
}

int main() {
   int tablero[FILAS][COLUMNAS] = {0};
   int i;
   int x, y;
   int num_barcos = 0;
   
   srand(time(NULL));
   
   printf("se colocaran %d barcos\n", MAX_BARCOS);
   puts("tablero original\n");
   
   mostrar_tablero(tablero);
   
   for(i = 0; i < MAX_BARCOS; ++i) {
       x = rand() % COLUMNAS;
       y = rand() % FILAS;
       
       if(tablero[y][x] == 0) {
           tablero[y][x] = 1;
           
           printf("\nse colocaron %d barcos\n", ++num_barcos);
           puts("tablero con barcos\n");
           
           mostrar_tablero(tablero);
       }
       else
           --i;
   }
   
   return 0;
}
#1003
Tienes razón, se me fue el santo al cielo, como se suele decir.
#1004
Línea 7: A malloc debes darle la cantidad de bytes que debe reservar y tu tan solo le dices que reserve un byte que es lo que devuelve sizeof(char). Una dirección estilo aaa.bbb.ccc.ddd tiene 16 bytes: cuatro ternas de números, tres puntos y el caracter nulo de fin de cadena. Por tanto debes reservar memoria de esta forma:

dir = malloc(16 * sizeof(char));


Línea 9: Vas a imprimir un error y a salir, no debes usar sprintf porqué nunca se imprimirá el mensaje, usa un printf normal o un fprintf a stderr, si lo prefieres.


Línea 13: sprintf espera un puntero a la cadena, no el contenido del primer elemento. Quita el asterisco a dir. De igual forma revisa las variables que van a construir la cadena, te falta la variable d3 y te sobra una d4.


Línea 20: Los estándares actuales de C esperan que main sea declarada como una función que devuelve un entero. Defínela como int main....


Línea 22: Ya que vas a devolver un puntero con la función necesitas de una variable que lo reciba. Declara una variable tipo puntero a char: por ejemplo char *ip;


Línea 32: Como se ha dicho la función regresa el dato como cadena y debería recibirla la variable que has creado antes: ip = IP(&a, &b, &c, &d);


Línea 33: puts espera que se le de una cadena, no la dirección de una función O_o . Por tanto dale la variable que guarda la cadena: puts(ip);


Línea 34: Una vez que no necesites más un elemento creado dinámicamente debes liberarlo. Hay que acostumbrarse a ello. free(ip);


#1005
Esto es básico de C: todo valor diferente a 0 se considera cierto para operadores e instrucciones lógicas. Todo valor igual a 0 se considera falso para operadores e instrucciones lógicas.
#1006
Algo así:

#include <stdlib.h>
#include <time.h>

// ...
// Ejecutar una única vez en todo el programa
srand(time(NULL));

// ...
// Bucle del juego
// ...
// Si el jugador no ha elegido un número:
opcion = rand()%6 + 1 // Para un dado de 6 caras: 1 mínimo valor del dado; 6 máximo valor del dado

switch(opcion) {
    case 1: //...
    //...
}
#1007
Programación C/C++ / Re: Sin metodo burbuja
23 Noviembre 2016, 18:45 PM
Sorpréndelo con qsort de stdlib.h
#1008
Puedes cambiar todo ese if else por switch.
Por otro lado tienes meses de 35 días. Recuerda que son de 28, 29, 30 y 31 días según el mes y año.
#1009
No es putchar. Es getchar.

Date cuenta de que no reinicias cont. Al siguiente año, si implementas el código para reiniciar los días a cada año, no va a funcionar.
#1010
Línea 67: una condición del if es inf=sup