que el apreciar y disfrutar el cuerpo desnudo de una mujer...

Reto

2008-08-27 00:39:39-05

Programacion

Modificar el programa de saidjose:

Superficie de un triangulo rectangulo

de tal manera que quede lo mas profesional posible: validación de datos, validación de entrada, que acepte argumentos a través de la linea de comandos:

# Calcula la superficie de un objeto de altura 10 y de base 3 al estilo BSD:

% calcular -a 10 -b 3

O al estilo GNU:

% calcular --altura=10 --base=3

O usando ambos estilos:

% calcular -a 10 --base=3

*SIN* usar ningún widget (GTK+, Motif, Qt, GNUStep, etc, etc).

Es decir, que no sea para el entorno gráfico sino para la consola.

Tip: En entornos BSD y GNU/Linux pueden usar la funcion getopt(3) incluído en la librería #include <unistd.h> para checar los argumentos de la función main(3).

Permalink: http://www.mononeurona.org/users/entry/asarch/1523


Comments Comentblogs:
1.- thot thot wrote:

No pensaba hacerlo, pero me tomé 10 minutos en la chamba, y aquí está, si alguien lo desea, lo explicaré a detalle en una entrada de mi blog:

#include <stdio.h>
#include <getopt.h>

int main (int argc, char *argv[])
{
int c;
float a = 0, b = 0,area, hypotenusa;
extern char *optarg;
extern int optind, optopt, opterror;
static struct option long_options[] =
{
{"base", required_argument, 0, 'a'},
{"altura", required_argument, 0, 'b'},
{0, 0, 0, 0}
};
int option_index = 0;

while ((c=getopt_long(argc, argv, "a:b:",long_options, &option_index))!=-1)
{
switch(c)
{
case 'a':
printf ("Base:%s\n",optarg);
sscanf (optarg,"%f",&a);
break;
case 'b':
printf ("Altura:%s\n",optarg);
sscanf (optarg,"%f",&b);
break;
case '?':
printf ("Opcion desconocida %c\n", optopt);
break;
}
}

area = (b*a)/2;

hypotenusa = (b*b) + (a*a);

printf ("El area del triangulo equilatero es: %0.2f \nLa hypotenusa al cuadrado es %0.2f\n",area,hypotenusa);
return 0;
}


2008-08-29 11:46:42-05
2.- asarch asarch wrote:

Thot:

Bug:

Si tecleas:

./calculo -b 10

el programa nunca pide el valor de la altura.

Si tecleas:

./calculo

El programa no pide ningun valor.

2008-08-29 11:52:54-05
3.- thot thot wrote:

Como te expliqué no fue Bug, simplemente esos casos no los quise considerar. Alargan el código y pierde la esencia del uso de las funciones, pero aquí está:
#include <stdio.h>
#include <getopt.h>

int main (int argc, char *argv[])
{
int c;
int flagaltura = 0, flagbase=0;
float a = 0, b = 0,area, hypotenusa;
extern char *optarg;
extern int optind, optopt, opterror;
static struct option long_options[] =
{
{"base", required_argument, 0, 'b'},
{"altura", required_argument, 0, 'a'},
{0, 0, 0, 0}
};
int option_index = 0;

while ((c=getopt_long(argc, argv, "a:b:",long_options, &option_index))!=-1)
{
switch(c)
{
case 'b':
printf ("Base:%s\n",optarg);
if (sscanf (optarg,"%f",&b)==1)
flagbase=1;
break;
case 'a':
printf ("Altura:%s\n",optarg);
if (sscanf (optarg,"%f",&a)==1)
flagaltura = 1;
break;
case '?':
printf ("Opcion desconocida %c\n", optopt);
break;
}
}

if (!flagaltura)
{
printf ("Introduzca la altura:");
scanf ("%f",&a);
}
if (!flagbase)
{
printf ("Introduzca la base:");
scanf("%f",&b);
}
area = (b*a)/2;

hypotenusa = (b*b) + (a*a);

printf ("El area del triangulo equilatero es: %0.2f \nLa hypotenusa al cuadrado es %0.2f\n",area,hypotenusa);
return 0;
}


2008-08-29 11:57:13-05
4.- asarch asarch wrote:

Tienes otro bug:

Escribiste:

hypotenuza = (b*b) + (a*a);

y deberia de ser:

hypotenuza = sqrt((b * b) + (a * a));



2008-08-29 12:24:21-05
5.- thot thot wrote:

jajajajaja. No es bug: "La hypotenusa al cuadrado es %0.2f"
Lo hice para no tener que agregar la biblioteca math.h (y para que quedara igual que el código de saidjosé).

2008-08-29 13:32:48-05
6.- rnstux rnstux wrote:

Mejor en java :P

2008-08-29 19:25:46-05
7.- asarch asarch wrote:

Pa' luego es tarde...

2008-08-30 05:10:03-05
8.- asarch asarch wrote:

http://www.bsd.cl/wiki/index.php?title=Intel(R)_PRO/Wireless_3945ABG_con_WPA_en_FreeBSD.

2008-09-07 16:21:12-05

New Comentblog

Captcha



Login



Remember me:
asarch
...sobre todo en la gimnasia.
BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.&#39;
Powered by:
Despabilando la MonoNeurona.org
Livechat

<-Nombre
ana_20 wrote:
y si estudio ing en informatica i sistemas
2 weeks, 3 days ago

ana_20 wrote:
kiero un curso basico d viasual net!!! i soi d peru
2 weeks, 3 days ago

ana_20 wrote:
kiero un curso basico d viasual net!!! i soi d peru
2 weeks, 3 days ago

hola wrote:
alguiene q estudie sistemas
on 23/10/08

hola wrote:
hola aluien de peru
on 23/10/08

hola wrote:
hola aluien de peru
on 23/10/08

hola wrote:
sdfdsf
on 23/10/08

vendaval wrote:
hola, que piensas de mi proyecto comunitario en mi universidad
on 22/10/08

vendaval wrote:
hola, que pienzas de mi proyecto comunitario en mi universidad
on 22/10/08

lokito wrote:
te kiero follarr
on 19/9/08

¿Qué estuve haciendo?
Para usar: qemu -localtime -m 256 -soundhw all -hda c.img
3 days, 20 hours ago
Para instalar: qemu -localtime -m 256 -hda c.img -cdrom linux.iso -boot d
3 days, 20 hours ago
qemu-img create -f qcow2 c.img 10G
3 days, 20 hours ago
A lo mejor fue "brujería" ¡Gulp! :-S
5 days, 18 hours ago
¿"clavo"? ¿Qué clavo si el zapato en esa parte no lleva ningún clavo?
6 days, 6 hours ago
De hecho si. Solamente el dolor que, curiosamente, ya desapareció :-S
6 days, 6 hours ago
Algo me "picó" en mi pie izquierdo. Lo curioso es que tría los zapatos puestos :-(
6 days, 18 hours ago
Ese día yo no estuve ahí :-(
1 week, 2 days ago
¿Alguien sabe la verdadera razón de la rebelión de Lucifer?
1 week, 2 days ago
¡Gloria al nombre del Señor!
1 week, 3 days ago
Galerias
FirefoxjEdit.orgGimpOpenOffice.orgHacker
Top
Colectivo MonoNeurona.org © 2002-2008.