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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: [1]
1  Programación / Programación General / Implementar warnings en compilador en: 28 Junio 2016, 21:16 pm
Hola buenas, estoy tratando de implementar los warnings en un compilador desarrollado por mí.
2  Programación / ASM / Duda urgente en NASM, ayuda por favor en: 28 Junio 2016, 14:28 pm
Duda resuelta
3  Programación / Programación C/C++ / fallo inexplicable en este programa, ayuda por favor en: 11 Octubre 2010, 20:37 pm
Hola buenas, desde hace algunos dias me he roto la cabeza con este programa, el cual consiste en un tablero de sudoku que pide numeros (en este caso caracteres) para ir rellenando dicho tablero de sudoku.

La version de este programa que utiliza enteros en vez de caracteres me salió sin ningún problema, pero en esta version, en la que se pide realizar lo mismo pero con caracteres no entiendo por qué se salta scanf's, rellena irracionalmente espacios, desordenando el tablero, etc...

He comprobado que el tipo de datos valor sea char, que los scanf recojan los caracteres con %c, que el tablero muestre los numeros con %c...

El fallo parece estar a partir de introducir el primer valor que se pide, a partir de ahí es el caos, repite todo de 2 en 2.

Creedme, si no estuviera tan desquiciado no habría preguntado. Puede que sea una tontería, pues estoy empezando, pero no lo entiendo. Respecto al uso de bucles, no he usado porque no nos lo permiten aún, así como punteros, etc... la estructura que tengo es la pedida.

Aquí el código fuente del programa:

Código
  1. #include <stdio.h>
  2. #define TAM 9  //Por mayor comodidad y fiabilidad, establecemos que TAM equivalga a la constante 9
  3.  
  4. void main()
  5. {
  6. char valor[TAM];
  7. int hueco = TAM;  //El número de huecos del tablero será igual a TAM hasta que se decremente en una unidad sucesivamente
  8.  
  9. double porcentaje;  //Declaramos el tipo de dato double porcentaje para mostrar el % adecuado en cada momento
  10.  
  11.  
  12.  
  13. valor [0]='.';
  14. valor [1]='.';
  15. valor [2]='.';
  16. valor [3]='.';
  17. valor [4]='.';  //Inicializamos con '.' todas las variables, como se pide.
  18. valor [5]='.';
  19. valor [6]='.';
  20. valor [7]='.';
  21. valor [8]='.';
  22.  
  23.  
  24. printf("  | 1 2 3 |\n");
  25. printf("- + - - - +\n");
  26. printf("A | %c %c %c |\n", valor[0], valor[1], valor[2]);
  27. printf("B | %c %c %c |\n", valor[3], valor[4], valor[5]);  //Mostramos el tablero con todos los huecos (variables) con '.'
  28. printf("C | %c %c %c |\n", valor[6], valor[7], valor[8]);
  29. printf("- - - - - -\n");
  30. printf("\n");
  31.  
  32.  
  33. printf("Primer Valor: ");
  34. scanf("%c", &valor[0]);  //En ésta ocasión y las siguientes, iremos almacenando en el tablero los valores del usuario
  35.  
  36. porcentaje = (100/9.)*(TAM-8);  //Cálculo del porcentaje, que se irá actualizando conforme vayamos restando una unidad a TAM
  37.  
  38. printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
  39. printf("  | 1 2 3 |\n");
  40. printf("- + - - - +\n");
  41. printf("A | %c %c %c |\n", valor[0], valor[1], valor[2]);
  42. printf("B | %c %c %c |\n", valor[3], valor[4], valor[5]);  //Comienzo del proceso que se repite hasta alcanzar el número de
  43. printf("C | %c %c %c |\n", valor[6], valor[7], valor[8]);  //huecos 0 y porcentaje del tablero lleno 100.00%
  44. printf("- - - - - -\n");
  45. printf("\n");
  46.  
  47.  
  48. valor [0];
  49. valor [1]='.';
  50. valor [2]='.';
  51. valor [3]='.';
  52. valor [4]='.';
  53. valor [5]='.';
  54. valor [6]='.';
  55. valor [7]='.';
  56. valor [8]='.';
  57.  
  58.  
  59.  
  60. printf("Segundo valor: ");
  61. scanf("%c", &valor[1]);
  62.  
  63. porcentaje = (100/9.)*(TAM-7);
  64.  
  65. hueco--;
  66.  
  67. printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
  68. printf("  | 1 2 3 |\n");
  69. printf("- + - - - +\n");
  70. printf("A | %c %c %c |\n", valor[0], valor[1], valor[2]);
  71. printf("B | %c %c %c |\n", valor[3], valor[4], valor[5]);
  72. printf("C | %c %c %c |\n", valor[6], valor[7], valor[8]);
  73. printf("- - - - - -\n");
  74. printf("\n");
  75.  
  76.  
  77.    valor [0];
  78. valor [1];
  79. valor [2]='.';
  80. valor [3]='.';
  81. valor [4]='.';
  82. valor [5]='.';
  83. valor [6]='.';
  84. valor [7]='.';
  85. valor [8]='.';
  86.  
  87.  
  88.  
  89. printf("Tercer valor: ");
  90. scanf("%c", &valor[2]);
  91.  
  92. porcentaje = (100/9.)*(TAM-6);
  93.  
  94. hueco--;
  95.  
  96. printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
  97. printf("  | 1 2 3 |\n");
  98. printf("- + - - - +\n");
  99. printf("A | %c %c %c |\n", valor[0], valor[1], valor[2]);
  100. printf("B | %c %c %c |\n", valor[3], valor[4], valor[5]);
  101. printf("C | %c %c %c |\n", valor[6], valor[7], valor[8]);
  102. printf("- - - - - -\n");
  103. printf("\n");
  104.  
  105.  
  106.    valor [0];
  107. valor [1];
  108. valor [2];
  109. valor [3]='.';
  110. valor [4]='.';
  111. valor [5]='.';
  112. valor [6]='.';
  113. valor [7]='.';
  114. valor [8]='.';
  115.  
  116.  
  117.  
  118. printf("Cuarto valor: ");
  119. scanf("%c", &valor[3]);
  120.  
  121. porcentaje = (100/9.)*(TAM-5);
  122.  
  123. hueco--;
  124.  
  125. printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
  126. printf("  | 1 2 3 |\n");
  127. printf("- + - - - +\n");
  128. printf("A | %c %c %c |\n", valor[0], valor[1], valor[2]);
  129. printf("B | %c %c %c |\n", valor[3], valor[4], valor[5]);
  130. printf("C | %c %c %c |\n", valor[6], valor[7], valor[8]);
  131. printf("- - - - - -\n");
  132. printf("\n");
  133.  
  134.  
  135.    valor [0];
  136. valor [1];
  137. valor [2];
  138. valor [3];
  139. valor [4]='.';
  140. valor [5]='.';
  141. valor [6]='.';
  142. valor [7]='.';
  143. valor [8]='.';
  144.  
  145.  
  146.  
  147. printf("Quinto valor: ");
  148. scanf("%c", &valor[4]);
  149.  
  150. porcentaje = (100/9.)*(TAM-4);
  151.  
  152. hueco--;
  153.  
  154. printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
  155. printf("  | 1 2 3 |\n");
  156. printf("- + - - - +\n");
  157. printf("A | %c %c %c |\n", valor[0], valor[1], valor[2]);
  158. printf("B | %c %c %c |\n", valor[3], valor[4], valor[5]);
  159. printf("C | %c %c %c |\n", valor[6], valor[7], valor[8]);
  160. printf("- - - - - -\n");
  161. printf("\n");
  162.  
  163.  
  164.    valor [0];
  165. valor [1];
  166. valor [2];
  167. valor [3];
  168. valor [4];
  169. valor [5]='.';
  170. valor [6]='.';
  171. valor [7]='.';
  172. valor [8]='.';
  173.  
  174.  
  175.  
  176. printf("Sexto valor: ");
  177. scanf("%c", &valor[5]);
  178.  
  179. porcentaje = (100/9.)*(TAM-3);
  180.  
  181. hueco--;
  182.  
  183. printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
  184. printf("  | 1 2 3 |\n");
  185. printf("- + - - - +\n");
  186. printf("A | %c %c %c |\n", valor[0], valor[1], valor[2]);
  187. printf("B | %c %c %c |\n", valor[3], valor[4], valor[5]);
  188. printf("C | %c %c %c |\n", valor[6], valor[7], valor[8]);
  189. printf("- - - - - -\n");
  190. printf("\n");
  191.  
  192.  
  193.    valor [0];
  194. valor [1];
  195. valor [2];
  196. valor [3];
  197. valor [4];
  198. valor [5];
  199. valor [6]='.';
  200. valor [7]='.';
  201. valor [8]='.';
  202.  
  203.  
  204. printf("Septimo valor: ");
  205. scanf("%c", &valor[6]);
  206.  
  207. porcentaje = (100/9.)*(TAM-2);
  208.  
  209. hueco--;
  210.  
  211. printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
  212. printf("  | 1 2 3 |\n");
  213. printf("- + - - - +\n");
  214. printf("A | %c %c %c |\n", valor[0], valor[1], valor[2]);
  215. printf("B | %c %c %c |\n", valor[3], valor[4], valor[5]);
  216. printf("C | %c %c %c |\n", valor[6], valor[7], valor[8]);
  217. printf("- - - - - -\n");
  218. printf("\n");
  219.  
  220.  
  221.    valor [0];
  222. valor [1];
  223. valor [2];
  224. valor [3];
  225. valor [4];
  226. valor [5];
  227. valor [6];
  228. valor [7]='.';
  229. valor [8]='.';
  230.  
  231.  
  232. printf("Octavo valor: ");
  233. scanf("%c", &valor[7]);
  234.  
  235. porcentaje = (100/9.)*(TAM-1);
  236.  
  237. hueco--;
  238.  
  239. printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
  240. printf("  | 1 2 3 |\n");
  241. printf("- + - - - +\n");
  242. printf("A | %c %c %c |\n", valor[0], valor[1], valor[2]);
  243. printf("B | %c %c %c |\n", valor[3], valor[4], valor[5]);
  244. printf("C | %c %c %c |\n", valor[6], valor[7], valor[8]);
  245. printf("- - - - - -\n");
  246. printf("\n");
  247.  
  248.  
  249.    valor [0];
  250. valor [1];
  251. valor [2];
  252. valor [3];
  253. valor [4];
  254. valor [5];
  255. valor [6];
  256. valor [7];
  257. valor [8]='.';
  258.  
  259.  
  260.  
  261. printf("Ultimo valor: ");
  262. scanf("%c", &valor[8]);
  263.  
  264. porcentaje = (100/9.)*(TAM);
  265.  
  266. hueco--;
  267.  
  268. printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
  269. printf("  | 1 2 3 |\n");
  270. printf("- + - - - +\n");
  271. printf("A | %c %c %c |\n", valor[0], valor[1], valor[2]);
  272. printf("B | %c %c %c |\n", valor[3], valor[4], valor[5]);
  273. printf("C | %c %c %c |\n", valor[6], valor[7], valor[8]);
  274. printf("- - - - - -\n");
  275. printf("\n");
  276.  
  277.        valor [0];
  278. valor [1];
  279. valor [2];
  280. valor [3];
  281. valor [4];
  282. valor [5];
  283. valor [6];
  284. valor [7];
  285. valor [8];
  286. }
4  Programación / Programación C/C++ / Duda programa principiante C en: 13 Junio 2010, 18:17 pm
Hola, soy muy principiante en la programación, y he intentado hacer un programa que, leyendo la frase queintroduces por teclado, te indica el numero de veces que aparece la letra a, la letra b, y los espacios. Mi problema esque el programa ignora completamente las primeras letras (en el caso de poner "Mi perro es blanco", te devuelve laslecturas de " perro es blanco", dejando un espacio extra).

Para llevar a cabo el programa he usado el comando gets, y puede que radique ahí el fallo, pero no lo se...

Aquí está mi programa:

#include <stdio.h>
#include <string.h>


int main()
     {

     char micadena [50];
     char *p;

     int espacios = 0;
     int letraa = 0;
     int letrab = 0;


     printf ("Introduce tu frase: ");

     scanf("%s", micadena);

     p = gets (micadena);

     while (*p != '\0')

     {
         if (*p == 'a') letraa++;
         if (*p == 'b') letrab++;
         if (*p == ' ') espacios++;

         p++;
     }

     printf ("En tu cadena \'%s\' hay %d letras \'a\', %d letras \'b\', y %d espacios ", micadena, letraa, letrab, espacios);

     return 0;

     }

´
Muchas gracias de antemano, y perdón por las molestias, y mas si es una duda absurda ^^
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines