<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>http://wiki.cabal.mx/index.php?action=history&amp;feed=atom&amp;title=Curso_de_Programaci%C3%B3n_en_C%2FProg108</id>
	<title>Curso de Programación en C/Prog108 - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.cabal.mx/index.php?action=history&amp;feed=atom&amp;title=Curso_de_Programaci%C3%B3n_en_C%2FProg108"/>
	<link rel="alternate" type="text/html" href="http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog108&amp;action=history"/>
	<updated>2026-05-17T04:59:17Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.32.1</generator>
	<entry>
		<id>http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog108&amp;diff=3896&amp;oldid=prev</id>
		<title>Quetzalzun: /* Prog108 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog108&amp;diff=3896&amp;oldid=prev"/>
		<updated>2012-07-15T05:42:00Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Prog108&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
* [[:#Prog108 | Tirar los Dados]]&lt;br /&gt;
** [[:#Resultado | Resultado]]&lt;br /&gt;
** [[:#Explicación | Explicación]]&lt;br /&gt;
&lt;br /&gt;
== Prog108 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_FANCY_LINE_NUMBERS&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Archivo Prog108.h&lt;br /&gt;
extern int ContarLosTiros;&lt;br /&gt;
int Tira_n_Dados(int, int );&lt;br /&gt;
&lt;br /&gt;
// Archivo Prog108a.c&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;              /* Prototipo para srand()        */&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;                /* Prototipo para time()         */&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;              /* Prototipo para strlen()       */&lt;br /&gt;
#include &amp;quot;Prog108.h&amp;quot;             /* Prototipo para roll_n_Dados()&lt;br /&gt;
                                    y para ContarLosTiros       */&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  int Dados,&lt;br /&gt;
      Lados = 0,&lt;br /&gt;
      NumCharsLeidos,&lt;br /&gt;
      NumValidosChars,&lt;br /&gt;
      Tira,&lt;br /&gt;
      i;&lt;br /&gt;
&lt;br /&gt;
  char NumSTR[10];&lt;br /&gt;
&lt;br /&gt;
  srand( (unsigned int)time( 0 ) ); /* random semilla      */&lt;br /&gt;
  printf( &amp;quot;Ingreso el número de lados de los dados, 0 para terminar: &amp;quot; );&lt;br /&gt;
&lt;br /&gt;
  while( fgets( NumSTR, 9, stdin ) )&lt;br /&gt;
  {&lt;br /&gt;
    NumValidosChars = 0;&lt;br /&gt;
    NumCharsLeidos = strlen( NumSTR );&lt;br /&gt;
&lt;br /&gt;
    if( NumSTR[0] == &amp;#039;0&amp;#039; )&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    if( *(NumSTR + NumCharsLeidos - 1) != &amp;#039;\n&amp;#039; )&lt;br /&gt;
    {&lt;br /&gt;
      puts( &amp;quot;Entrada ¡INVALIDA!&amp;quot; );&lt;br /&gt;
      while( getchar() != &amp;#039;\n&amp;#039; );&lt;br /&gt;
      printf( &amp;quot;Ingreso el número de lados de los dados, 0 para terminar: &amp;quot; );&lt;br /&gt;
      continue;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
      *(NumSTR + NumCharsLeidos - 1) = &amp;#039;\0&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    for( i = 0; i &amp;lt; NumCharsLeidos -1; i++ )&lt;br /&gt;
      if( ( *(NumSTR + i ) &amp;gt;= &amp;#039;0&amp;#039; &amp;amp;&amp;amp; *(NumSTR + i ) &amp;lt;= &amp;#039;9&amp;#039; ) )&lt;br /&gt;
        NumValidosChars++;&lt;br /&gt;
&lt;br /&gt;
    if( NumCharsLeidos == 1 || NumValidosChars != NumCharsLeidos - 1 )&lt;br /&gt;
    {&lt;br /&gt;
      puts( &amp;quot;Entrada ¡INVALIDA!&amp;quot; );&lt;br /&gt;
      printf( &amp;quot;Ingreso el número de lados de los dados, 0 para terminar: &amp;quot; );&lt;br /&gt;
      continue;&lt;br /&gt;
    }&lt;br /&gt;
    Lados = atoi( NumSTR );&lt;br /&gt;
&lt;br /&gt;
    printf( &amp;quot;¿Cuantos dados? &amp;quot; );&lt;br /&gt;
    fgets( NumSTR, 9, stdin );&lt;br /&gt;
    NumValidosChars = 0;&lt;br /&gt;
    NumCharsLeidos = strlen( NumSTR );&lt;br /&gt;
&lt;br /&gt;
    if( *(NumSTR + NumCharsLeidos - 1) != &amp;#039;\n&amp;#039; )&lt;br /&gt;
    {&lt;br /&gt;
      puts( &amp;quot;Entrada ¡INVALIDA! por returno&amp;quot; );&lt;br /&gt;
      while( getchar() != &amp;#039;\n&amp;#039; );&lt;br /&gt;
      printf( &amp;quot;Ingreso el número de lados de los dados, 0 para terminar: &amp;quot; );&lt;br /&gt;
      continue;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
      *(NumSTR + NumCharsLeidos - 1) = &amp;#039;\0&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    for( i = 0; i &amp;lt; NumCharsLeidos -1; i++ )&lt;br /&gt;
      if( ( *(NumSTR + i ) &amp;gt;= &amp;#039;0&amp;#039; &amp;amp;&amp;amp; *(NumSTR + i ) &amp;lt;= &amp;#039;9&amp;#039; ) )&lt;br /&gt;
        NumValidosChars++;&lt;br /&gt;
&lt;br /&gt;
    if( NumCharsLeidos == 1 || NumValidosChars != NumCharsLeidos - 1 )&lt;br /&gt;
    {&lt;br /&gt;
      puts( &amp;quot;\nEntrada ¡INVALIDA!&amp;quot; );&lt;br /&gt;
      printf( &amp;quot;Ingreso el número de lados de los dados, 0 para terminar: &amp;quot; );&lt;br /&gt;
      continue;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Dados = atoi( NumSTR );&lt;br /&gt;
    if( Dados &amp;lt; 1 )&lt;br /&gt;
    {&lt;br /&gt;
      puts( &amp;quot;\nNúmero de dados ¡INVALIDA!&amp;quot; );&lt;br /&gt;
      printf( &amp;quot;Ingreso el número de lados de los dados, 0 para terminar: &amp;quot; );&lt;br /&gt;
      continue;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Tira = Tira_n_Dados( Dados, Lados );&lt;br /&gt;
    printf( &amp;quot;Tiraste %d usando %d dados de %d lados.\n&amp;quot;, Tira, Dados, Lados );&lt;br /&gt;
    printf( &amp;quot;Ingreso el número de lados de los dados, 0 para terminar: &amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
  printf( &amp;quot;La función rollem() se usó %d veces.\n&amp;quot;, ContarLosTiros );&lt;br /&gt;
  puts( &amp;quot;¡Buen suerte!\n&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Archivo Prog108b.c&lt;br /&gt;
#include &amp;quot;Prog108.h&amp;quot;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;             /* Prototipo para rand()   */&lt;br /&gt;
&lt;br /&gt;
int ContarLosTiros  = 0;&lt;br /&gt;
&lt;br /&gt;
static int rollem( int Lados )&lt;br /&gt;
{&lt;br /&gt;
    int Tira;&lt;br /&gt;
&lt;br /&gt;
    Tira = rand() % Lados + 1;&lt;br /&gt;
    ++ContarLosTiros;             /* contar usos de función */&lt;br /&gt;
    return Tira;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int Tira_n_Dados( int Dados, int Lados )&lt;br /&gt;
{&lt;br /&gt;
  int d;&lt;br /&gt;
  int total = 0;&lt;br /&gt;
&lt;br /&gt;
  for( d = 0; d &amp;lt; Dados; d++ )&lt;br /&gt;
    total += rollem( Lados );&lt;br /&gt;
&lt;br /&gt;
  return total;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resultado ===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
[rrc@llawyr CClase]$ gcc -Wall -o Prog108 Prog108a.c Prog108b.c &lt;br /&gt;
[rrc@llawyr CClase]$ ./Prog108&lt;br /&gt;
Ingreso el número de lados de los dados, 0 para terminar: 6&lt;br /&gt;
Cuantos dados? 2&lt;br /&gt;
Tiraste 5 usando 2 dados de 6 lados.&lt;br /&gt;
Ingreso el número de lados de los dados, 0 para terminar: 6&lt;br /&gt;
Cuantos dados? 2&lt;br /&gt;
Tiraste 9 usando 2 dados de 6 lados.&lt;br /&gt;
Ingreso el número de lados de los dados, 0 para terminar: 6&lt;br /&gt;
Cuantos dados? 2&lt;br /&gt;
Tiraste 3 usando 2 dados de 6 lados.&lt;br /&gt;
Ingreso el número de lados de los dados, 0 para terminar: 6&lt;br /&gt;
Cuantos dados? 2&lt;br /&gt;
Tiraste 6 usando 2 dados de 6 lados.&lt;br /&gt;
Ingreso el número de lados de los dados, 0 para terminar: 6&lt;br /&gt;
Cuantos dados? 2&lt;br /&gt;
Tiraste 12 usando 2 dados de 6 lados.&lt;br /&gt;
Ingreso el número de lados de los dados, 0 para terminar: 0&lt;br /&gt;
La función rollem() se usó 10 veces.&lt;br /&gt;
¡Buen suerte!&lt;br /&gt;
[rrc@llawyr CClase]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Explicación ===&lt;br /&gt;
 &lt;br /&gt;
[[Category:Programación en C]]&lt;br /&gt;
[[Category:CCabal]]&lt;br /&gt;
[[Category:CursoC]]&lt;/div&gt;</summary>
		<author><name>Quetzalzun</name></author>
		
	</entry>
</feed>