http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog118&feed=atom&action=history
Curso de Programación en C/Prog118 - Historial de revisiones
2024-03-28T21:56:03Z
Historial de revisiones para esta página en el wiki
MediaWiki 1.32.1
http://wiki.cabal.mx/index.php?title=Curso_de_Programaci%C3%B3n_en_C/Prog118&diff=5520&oldid=prev
Perseuz: /* Prog118 */
2014-06-04T22:32:50Z
<p><span dir="auto"><span class="autocomment">Prog118</span></span></p>
<p><b>Página nueva</b></p><div>__NOTOC__<br />
* [[:#Prog118 | Arreglos de structs]]<br />
** [[:#Resultado | Resultado]]<br />
** [[:#Explicación | Explicación]]<br />
<br />
== Prog118 ==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_FANCY_LINE_NUMBERS"><br />
<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#define MAXTITL 40<br />
#define MAXAUTL 40<br />
#define MAXVALL 12<br />
#define MAXLIBROS 100<br />
<br />
struct Libro {<br />
char Titulo[MAXTITL];<br />
char Autor[MAXAUTL];<br />
float Valor;<br />
};<br />
<br />
int main( void )<br />
{<br />
struct Libro Biblioteca[MAXLIBROS];<br />
int Conteo = 0,<br />
Index,<br />
NumPuntos,<br />
i;<br />
char ValSTR[MAXVALL];<br />
<br />
printf( "Ingresa el nombre del libro: " );<br />
while( Conteo < MAXLIBROS )<br />
{<br />
if( fgets( Biblioteca[Conteo].Titulo, MAXTITL - 2, stdin ) &&<br />
Biblioteca[Conteo].Titulo[0] != '\n' )<br />
{<br />
if( *(Biblioteca[Conteo].Titulo +<br />
strlen( Biblioteca[Conteo].Titulo ) -1 ) != '\n' )<br />
{<br />
printf( "El titulo que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXTITL - 2 );<br />
exit(1);<br />
}<br />
<br />
*(Biblioteca[Conteo].Titulo +<br />
strlen( Biblioteca[Conteo].Titulo ) -1 ) = '\0';<br />
}<br />
else<br />
break;<br />
<br />
printf( "Ingresa el nombre del autor: " );<br />
if( fgets( Biblioteca[Conteo].Autor, MAXAUTL - 2, stdin ) &&<br />
Biblioteca[Conteo].Autor[0] != '\n' )<br />
{<br />
if( *(Biblioteca[Conteo].Autor +<br />
strlen( Biblioteca[Conteo].Autor ) -1 ) != '\n' )<br />
{<br />
printf( "El autor que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXAUTL - 2 );<br />
exit(1);<br />
}<br />
<br />
*(Biblioteca[Conteo].Autor +<br />
strlen( Biblioteca[Conteo].Autor ) -1 ) = '\0';<br />
}<br />
else<br />
{<br />
printf( "Faltan el nombre del autor de \"%s\"\n",<br />
Biblioteca[Conteo].Titulo );<br />
exit(1);<br />
}<br />
<br />
NumPuntos = 0;<br />
printf( "Ingresa el valor: " );<br />
if( fgets( ValSTR, MAXVALL - 2, stdin ) && ValSTR[0] != '\n' )<br />
{<br />
if( *(ValSTR + strlen( ValSTR ) -1 ) != '\n' )<br />
{<br />
printf( "El valor que entraste es demasiado largo.\n"<br />
"Solo %d chars MAX\n", MAXVALL - 2 );<br />
exit(1);<br />
}<br />
<br />
*(ValSTR + strlen( ValSTR ) -1 ) = '\0';<br />
<br />
if( ValSTR[0] == '-' )<br />
{<br />
puts( "No se permiten valores negativos." );<br />
exit(1);<br />
}<br />
<br />
for( i = 0; i < strlen( ValSTR ) - 1; i++ )<br />
{<br />
if( ValSTR[i] < '0' || ValSTR[i] > '9' )<br />
{<br />
if( ValSTR[i] == '.' )<br />
{<br />
if( ++NumPuntos > 1 )<br />
{<br />
fprintf( stderr, "Se permite solo 1 punto.\n" );<br />
exit(1);<br />
}<br />
<br />
if( strlen( ValSTR ) - i > 3 )<br />
{<br />
puts( "Se permiten solo 2 decimales después del punto." );<br />
exit(1);<br />
}<br />
}<br />
else<br />
{<br />
puts( "Caracteres ilegales en su valor." );<br />
exit(1);<br />
}<br />
}<br />
}<br />
<br />
Biblioteca[Conteo++].Valor = atof( ValSTR );<br />
}<br />
else<br />
{<br />
printf( "Faltan el valor de \"%s\"\n", Biblioteca[Conteo].Titulo );<br />
exit(1);<br />
}<br />
<br />
if( Conteo < MAXLIBROS )<br />
printf( "Ingresa el siguiente titulo: (<Enter> para terminar): " );<br />
}<br />
<br />
if (Conteo > 0)<br />
{<br />
puts( "Aquí está la lista de tus libros:" );<br />
for (Index = 0; Index < Conteo; Index++)<br />
printf( "\t\"%s\" por \"%s\": $%.2f\n", Biblioteca[Index].Titulo,<br />
Biblioteca[Index].Autor, Biblioteca[Index].Valor);<br />
}<br />
else<br />
puts( "Lo siento pero no tengo libros para mostrar." );<br />
<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
=== Resultado ===<br />
<pre><br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog118 Prog118.c<br />
[rrc@llawyr CClase]$ ./Prog118<br />
Ingresa el nombre del libro: <br />
Lo siento pero no tengo libros para mostrar.<br />
[rrc@llawyr CClase]$ ./Prog118<br />
Ingresa el nombre del libro: Libro 118<br />
Ingresa el nombre del autor: <br />
Faltan el nombre del autor de "Libro 118"<br />
[rrc@llawyr CClase]$ gcc -Wall -o Prog118 Prog118.c<br />
[rrc@llawyr CClase]$ ./Prog118<br />
Ingresa el nombre del libro: Libro 1<br />
Ingresa el nombre del autor: Autor 1<br />
Ingresa el valor: <br />
Faltan el valor de "Libro 1"<br />
[rrc@llawyr CClase]$ ./Prog118<br />
Ingresa el nombre del libro: Libro 1<br />
Ingresa el nombre del autor: Autor 1<br />
Ingresa el valor: 34<br />
Ingresa el siguiente titulo: (<Enter> para terminar): <br />
Aquí está la lista de tus libros:<br />
"Libro 1" por "Autor 1": $34.00<br />
[rrc@llawyr CClase]$ ./Prog118<br />
Ingresa el nombre del libro: Libro 1<br />
Ingresa el nombre del autor: Autor 1<br />
Ingresa el valor: 45.33<br />
Ingresa el siguiente titulo: (<Enter> para terminar): Libro 2<br />
Ingresa el nombre del autor: Autor 2<br />
Ingresa el valor: 53<br />
Ingresa el siguiente titulo: (<Enter> para terminar): <br />
Aquí es la lista de sus libros:<br />
"Libro 1" por "Autor 1": $45.33<br />
"Libro 2" por "Autor 2": $53.00<br />
[rrc@llawyr CClase]$ <br />
</pre><br />
<br />
=== Explicación ===<br />
<br />
[[Category:Programación en C]]<br />
[[Category:CCabal]]<br />
[[Category:CursoC]]</div>
Perseuz