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 - AlbertoBSD

#1641
Muy buen dia compañeros.

Ayer publique el tema Números de longitud variable en C (Numeros muy grandes)

Donde transformo strings de numeros a su representación en "binario"  en memoria. Ya hago sumas y multiplicaciones en forma de sumas multiples.
Necesito hacer ahora restas tengo mis dudas se que es una tonteria pero estoy hecho un lio.

Las sumas a nivel de "byte" las hago asi:

unsigned char resultado[3];
unsigned char acarreo;
unsigned char a;
unsigned char b;
unsigned short c;
a = 0xFF;
b = 0x01;
c = a + b;
//ahora c vale 0x0101
resultado[0] = c;
acarreo = c >> 8;
//el acarreo se le suma al siguiente ciclo de bytes


Asi puedo meter ese seudo codigo en un ciclo de N bytes y poder trabajar con numetro positivos de cualquier longitud

Ahora el detalle que necesito usar la operacion modulo y para ello necesito hacer diviciones y por lo tante necesito restas.

Mi duda es hacer las restas mas o menos igual

#include<stdio.h>

int main() {
unsigned char a;
unsigned char b;
unsigned short c;
a = 0xFF;
b = 0x01;
c = a - b;
}



Obvio tendré que tener forma de capturar los números negativos, y si es negativo ¿Que hay que hacer? ¿es como si fuera el acarreo en la suma?

intente hacer las restas en el cuaderno en binario y me dormi en el intento eso fue hace unas 5 horas.
#1642
Programación C/C++ / Re: punteros en c.
1 Mayo 2016, 06:01 AM
Sin que el puntero apunte a esa variable no lo veo viable, a no ser que se trate de algun overflow... que seria en teoria lo mismo

#include<stdio.h>

int main() {
int i = 2;
char *ptr;
printf("valor de i %i\n",i);
ptr = (char *) &i;
ptr[2] = 'A';
printf("valor de i %i\n",i);
}
#1643

Y si bien deben de existir varias librerías que ya lo implementen a su manera no me quería quedar sin implementar mi propia solución.

El programa ahora solo convierte cadenas de números decimales "1234" en su representación binaria en memoria, pero no se engañen esta no es la función strtol, esta puede almacenar numeros (sin signo por el momento) de cualquier longitud siempre y cuando tengamos memoria suficiente.

Vamos a ver un ejemplo de las siguientes cadenas:
"1"
"50"
"200"
"255"
"65535"
"4294967295"
"18446744073709551615"

int main() {
numero *n;
n = valor("1"); //Ejemplo de 1 solo digito
free_numero(n);
n = valor("50"); //Ejemplo de 2 digitos
free_numero(n);
n = valor("200"); //Ejemplo de 3 digitos
free_numero(n);
n = valor("255"); //Maximo numero de 1 byte
free_numero(n);
n = valor("65535"); //Maximo numero de 2 bytes
free_numero(n);
n = valor("4294967295"); //Maximo numero de 4 bytes
free_numero(n);
n = valor("18446744073709551615"); //Maximo numero de 8 bytes
free_numero(n);
}


Salida (Con un poco de depuración)
procesando numero 1
1 x10^0 : numeros[0]->valor: 0x456b30 01
b->valor: 0x456bb0 01
procesando numero 50
5 x10^1 : numeros[0]->valor: 0x451480 32
0 x10^0 : numeros[1]->valor: 0x451470 00
b->valor: 0x451530 32
procesando numero 200
2 x10^2 : numeros[0]->valor: 0x451470 c8
0 x10^1 : numeros[1]->valor: 0x4514f0 00
0 x10^0 : numeros[2]->valor: 0x4514b0 00
b->valor: 0x451500 c8
procesando numero 255
2 x10^2 : numeros[0]->valor: 0x451550 c8
5 x10^1 : numeros[1]->valor: 0x451420 32
5 x10^0 : numeros[2]->valor: 0x451530 05
b->valor: 0x451420 ff
procesando numero 65535
6 x10^4 : numeros[0]->valor: 0x451410 60ea
5 x10^3 : numeros[1]->valor: 0x451510 8813
5 x10^2 : numeros[2]->valor: 0x4514a0 f401
3 x10^1 : numeros[3]->valor: 0x451530 1e
5 x10^0 : numeros[4]->valor: 0x4513e0 05
b->valor: 0x451420 ffff
procesando numero 4294967295
4 x10^9 : numeros[0]->valor: 0x4514f0 00286bee
2 x10^8 : numeros[1]->valor: 0x4514a0 00c2eb0b
9 x10^7 : numeros[2]->valor: 0x4514b0 804a5d05
4 x10^6 : numeros[3]->valor: 0x457210 00093d
9 x10^5 : numeros[4]->valor: 0x4571a0 a0bb0d
6 x10^4 : numeros[5]->valor: 0x457160 60ea
7 x10^3 : numeros[6]->valor: 0x457380 581b
2 x10^2 : numeros[7]->valor: 0x456ff0 c8
9 x10^1 : numeros[8]->valor: 0x457230 5a
5 x10^0 : numeros[9]->valor: 0x4572e0 05
b->valor: 0x457210 ffffffff
procesando numero 18446744073709551615
1 x10^19 : numeros[0]->valor: 0x457180 0000e8890423c78a
8 x10^18 : numeros[1]->valor: 0x4572e0 0000203b9db5056f
4 x10^17 : numeros[2]->valor: 0x457370 00002876e1158d05
4 x10^16 : numeros[3]->valor: 0x457390 000004bfc91b8e
6 x10^15 : numeros[4]->valor: 0x457360 0000a7dcf75015
7 x10^14 : numeros[5]->valor: 0x456ff0 00c05773a57c02
4 x10^13 : numeros[6]->valor: 0x457060 0080ca396124
4 x10^12 : numeros[7]->valor: 0x457000 00409452a303
0 x10^11 : numeros[8]->valor: 0x457080 00
7 x10^10 : numeros[9]->valor: 0x457290 003c534c10
3 x10^9 : numeros[10]->valor: 0x457330 005ed0b2
7 x10^8 : numeros[11]->valor: 0x4571a0 0027b929
0 x10^7 : numeros[12]->valor: 0x4571e0 00
9 x10^6 : numeros[13]->valor: 0x457200 405489
5 x10^5 : numeros[14]->valor: 0x4570d0 20a107
5 x10^4 : numeros[15]->valor: 0x457250 50c3
1 x10^3 : numeros[16]->valor: 0x4572a0 e803
6 x10^2 : numeros[17]->valor: 0x457240 5802
1 x10^1 : numeros[18]->valor: 0x457130 0a
5 x10^0 : numeros[19]->valor: 0x457150 05
b->valor: 0x457840 ffffffffffffffff


Ahora esos son ejemplo que las funciones estándar existentes pueden manejar correctamente

Ahora bien el siguiente numero
98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210
int main() {
numero *n;
n = valor("98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210"); //Ejemplo de un Googol???
free_numero(n);
}


Salida sin tanta depuración:


procesando numero 98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210
b->valor: 0x777b70 ea7ec651d7671ed5de67409bdc172dc9a9d7bbd8302306b3a2e2a0cf7730b39b359cea778e3d200b9b9fb6770c6b95b395e8ab9f1474014c01ce7a3e870aa632c1ce5b705dc9f0a328d297dc436038565411ca0e338c7db56f94881768b143402be103d352ddf1beb8d5d3f59c88bb500306744fbfea44dca84d3c2cca5a88060c7168dfa57b5f86a57dda5ad3d0957639100089ca6ac40c6fbc516e76821e8026d3fce0d3fa4b1a5c5b42f723c67c3801e5b6146b5c44a3c70c7b7f63634f14211881cf4fca1bd9f7d9b8bda6db831e0a06f25384fd4262826ba6498c9ec27623314c5d7222d86a9cdf905544e7d67a056bb74b830615b2a164ba237a3889fd302bd8e092456865c265c8202d61ff55a442dc22547e68935d270fa33825e4cd331378afe199ae4ab2acea2aca6330f4727f244b72569ba75bab5a53ce22e2472f603d57314b8b02b361931bcef98c0911032db9e418e9288359f38c1fdfbe7f6a4d2fed867f76fd66d82cd107278f5ae8ec0033a226a31d2e2415f9eb72e910bfad8c2d7c02e8d44c2689de3587e51162308a50fbb776d016ea5491929011176ec8401dbed59282af7910675df3810d704db4faca2e8b44ab92d06237e872c0deef48718f59edd1541f5366e49dcabd9a00c64ec1c99f23be503b0a559e545702185426b2d94b5d7dac547ae430ebac390487d3d80b8b7b7d7d1cd2a40688f96c286cb522671faa5f272e4dd858d3f6bcbdb10fa70bebbef59aa82c18fdfd622c4b7e215c315373e366e84e0a
el numero necesita 557 bytes



Falta optimizar las funciones, el proceso de multiplicación lo hace mediante sumas continuas, trate de liberar la memoria con forme se va usando para no olvidar ninguna variable pero se me pudo pasar alguna.

Usos que se le pueden dar al programa
Si necesitas algo especializado y almacenar números extremadamente grandes para su posterior uso esta es una buena forma de hacerlo.
Yo en lo personal trabaje con esta aplicación por que necesito una forma de almacenar números de mas de 4096 bits tengan encuenta que en el ejemplo anterior el numero mas grande fue un numero de 557 bytes que son 4456 bits.
El proceso mas tardado es convertir el numero de string a binario. Posteriormente considero que las sumas son algo eficientes cuando los números ya se encuentran en su representación binaria.

Codigo completo:

/*
Twitter @albertobsd
*/

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

typedef unsigned char byte;

typedef struct numero_struct {
byte *valor;
unsigned int bytes;
}numero;

numero *valorBase10(unsigned char n,unsigned char e);
numero *valor(char *n);
unsigned short add(unsigned char a, unsigned char b);
void debug(char*s,unsigned char *ptr,unsigned int l,...);
numero *add_numero(numero *a,numero *b);
numero *copiar(numero* n);

numero *add_numero(numero *a,numero *b) {
numero *c;
unsigned char flag_a = 1,flag_b = 1,valor_a,valor_b,acarreo;
unsigned short valor_c;
unsigned int i = 0,max,entrar =1;
//printf("add_numero\n");
//debug("a->valor",a->valor,a->bytes);
//debug("b->valor",b->valor,b->bytes);
c = calloc(sizeof(numero),1);
max = a->bytes + b->bytes;
c->valor = calloc(max,1);
//printf("while\n");
while(entrar) {
valor_c = 0;
//printf("valor de i: %u\n",i);
//printf("valor de a->bytes: %u\n",a->bytes);
if(i < a->bytes) {
valor_a = a->valor[i];
}
else {
flag_a = 0;
valor_a = 0;
}
//printf("valor de b->bytes: %u\n",b->bytes);
if(i < b->bytes) {
valor_b = b->valor[i];
}
else {
flag_b = 0;
valor_b = 0;
}
if(flag_a || flag_b) {
if(c->valor[i] != 0) {
//printf("valor de c->valor[%i]: 0x%.2x\n",i,c->valor[i]);
valor_c+=c->valor[i];
c->valor[i] = 0;
}
//printf("valor de valor_a: 0x%.2x\n",valor_a);
//printf("valor de valor_b: 0x%.2x\n",valor_b);
valor_c+= add(valor_a,valor_b);
//printf("valor de valor_c: 0x%.4x\n",valor_c);
c->valor[i] = valor_c;
acarreo = valor_c >> 8;
i++;
if(acarreo) {
//printf("valor de acarreo: 0x%.2x\n",acarreo);
c->valor[i] = acarreo;
//printf("valor de c->valor[%i]: %.2x\n",i,c->valor[i]);
}
}
else {
entrar = 0;
}
}
//printf("end while\n");
if(acarreo) {
c->bytes = i+1;
}
else {
c->bytes = i;
}
//printf("bytes: %i\n",c->bytes);
//debug("c->valor",c->valor,c->bytes);
//printf("End add_numero\n");
return c;
}

void free_numero(numero* t) {
if(t) {
if(t->valor) {
memset(t->valor,0,t->bytes);
free(t->valor);
}
memset(t,0,sizeof(numero));
free(t);
}
}

numero *copiar(numero* n) {
numero *t;
t= calloc(sizeof(numero),1);
t->bytes = n->bytes;
t->valor = calloc(t->bytes,1);
memcpy(t->valor,n->valor,t->bytes);
return t;
}

void debug(char *s,unsigned char *ptr,unsigned int l,...) {
va_list args;
int i = 0;
char *buffer;
buffer = calloc(strlen(s)*10,sizeof(char));
va_start(args, l);
vsprintf(buffer,s, args);
printf("%s: 0x%x ",buffer,ptr);
while(ptr && i < l) {
printf("%.2x",ptr[i++]);
}
printf("\n");
va_end(args);
free(buffer);
}

numero *valorBase10(unsigned char n,unsigned char e) {
int i,j;
numero *a,*b,*t,*zero,**tofree;
a = calloc(sizeof(numero),1);
a->bytes = 1;
a->valor = calloc(a->bytes,1);
a->valor[0] = n;
zero = calloc(sizeof(numero),1);
zero->bytes = 1;
zero->valor = calloc(zero->bytes,1);
zero->valor[0] = 0;
b = zero;
i = 0;
while(i< e) {
j = 0;
tofree = calloc(sizeof(numero*),10);
while(j < 10) {
t = add_numero(a,b);
tofree[j++] = t;
b = t;
}
free_numero(a);
a = copiar(b);
j = 0;
while(j<10) {
free_numero(tofree[j++]);
}
free(tofree);
b = zero;
i++;
}
free_numero(b);
return a;
}

numero *valor(char *n) {
numero *zero,*b;
numero **numeros;
char *ptr;
int bytes;
int i,j;
printf("procesando numero %s\n",n);
ptr = n;
bytes = strlen(n);
numeros = calloc(sizeof(numero*),bytes);
i = 0;
while(i < bytes) {
numeros[i] = valorBase10(ptr[i] - '0' , (bytes-1) - i);
//debug("numeros[i]",(unsigned char*)numeros[i],sizeof(numero));
//debug("%c x10^%i : numeros[%i]->valor",(unsigned char*)numeros[i]->valor,numeros[i]->bytes,ptr[i],(bytes-1) - i,i);
i++;
}
zero = calloc(sizeof(numero),1);
zero->bytes = 1;
zero->valor = calloc(zero->bytes,1);
zero->valor[0] = 0;
b = zero;
i = 0;
while(i < bytes) {
b = add_numero(numeros[i],b);
free_numero(numeros[i]);
i++;
}
//debug("b",(unsigned char*)b,sizeof(numero));
debug("b->valor",(unsigned char*)b->valor,b->bytes);
free(zero);
return b;
}
unsigned short add(unsigned char a, unsigned char b) {
return a+b;
}
int main() {
numero *n;
n = valor("1"); //Ejemplo de 1 solo digito
free_numero(n);
n = valor("50"); //Ejemplo de 2 digitos
free_numero(n);
n = valor("200"); //Ejemplo de 3 digitos
free_numero(n);
n = valor("255"); //Maximo numero de 1 byte
free_numero(n);
n = valor("65535"); //Maximo numero de 2 bytes
free_numero(n);
n = valor("4294967295"); //Maximo numero de 4 bytes
free_numero(n);
n = valor("18446744073709551615"); //Maximo numero de 8 bytes
free_numero(n);
n = valor("98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210"); //Ejemplo de un Googol???
printf("el numero necesita %i bytes\n",n->bytes);
free_numero(n);
}
#1644
Estoy buscando una solucion simplo como
Código (php) [Seleccionar]
json_encode

pero en ASP.net ya se C# o VB



Solucion

Código (csharp) [Seleccionar]
JavaScriptSerializer serie = new JavaScriptSerializer();
lista = serie.Serialize(Objeto);



#1645
Código (vbnet) [Seleccionar]
Imports System.Web
Imports MySql.Data.MySqlClient


Pues eso donde tengo que colocar las sentecias imports dentro del documento aspx?

Estoy usando Visual Studio Express 2015

Saludos.




Solucion

en el archivo defualt.aspx tiene que estar la primera linea debe de decir al como:

Código (vbnet) [Seleccionar]
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="default.aspx.vb" Inherits="WebApplication5.WebForm1" %>
Entonces debe exister un archivo llamado defualt.aspx.vb

Ahi tenemos que colocar las sentecias
#1646
Siempre es lo mislo en estas redes, primero estan spammeando por todos los medios posibles y ya que son muy conocudidos bloquean a las otras marcas a diestra y siniestra.

por ejemplo yo he desactivado las notificaciones de twitter y fb en una cuenta que ya no uso y de todos modos cada cierto tiempo recibo correos suplicando que regrese  dus redes..

En whatsapp ya no te dejan poner links a telegram.
#1647
Lei la noticia hace como una semana, y la verdad que muchas veces me arrepiento de entrar a noticias como esta, pase como 3 minutos buscando algo que dijiera adidas y no vi nada
#1648
Desarrollo Web / Re: Recomendando host
28 Abril 2016, 13:47 PM
¿Alguien a probado la nube de Google?

Cita de: uzi en 15 Agosto 2013, 07:39 AM
Necesito una página donde pueda hacer un dominio para mi correo, que sea totalmente gratis...

¿Necesitas que almacenen tu correo?

Gratis la verdad no conozco ninguno, en go daddy si tienes hosting, puedes configurar para los coreeos de cualquiera de tus dominios sin costo extra y eso pocos lo saben, ellos generalmente te venden el paquete de correo por aparte y por cada correo adional te cobran mas.

Estoy pensando en usar la nube de google minimo la prueba de 30 dias que ofrecen.

¿Alguien a probado la nube de Google?
#1649
Original:
http://codigoenc.com/post/33/Juego_de_BlackJack_en_C_paso_a_paso/#msg-41

Otra codigo que podemos aplicar es el estar contando cartas, si alguno ha visto la pelicula de 21 en donde el protagonista es un genio con los numeros y es capas de llevar el conteo de cartas de forma facil, pues el contar cartas para un progragrama de computadoras bien diseñado es simple:

La siguiente funcion asigna valores a las cartas en modo contador para las altas un valor de -1 y para las chicas un valor de +1. lo que quiere decir es que cuando salgan muchas cartas chica, el contador tendra un valor alto, y es cuando mas probabilidades tenemos de que la próxima carta sea una carta de 10 o J,Q,K y  As.

Y dependiendo de la mano que tengamos es posible pedir mas cartas o plantarnos.

int valor_conteo(char c) {
int r = 0;
switch(c) {
case 'A':
case 'K':
case 'Q':
case 'J':
case '0':
r = -1;
break;
case '7':
case '8':
case '9':
r = 0;
break;
case '2':
case '3':
case '4':
case '5':
case '6':
r =1;
break;
}
return r;
}


Ahora para mostrar que funciona vamos a contar toda la baraja y ver la salida

baraja = barajar_baraja(baraja);
len = strlen(baraja);
printf("%s\n",baraja);
i = 0;
while(i < len) {
conteo += valor_conteo(baraja[i]);
printf("%i\n",conteo);
i++;
}


Salida

Creando barja:
A234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQKA234567890JQK
Barajando:
4Q907566846A3J8Q6Q287270A388J2J9KK0J323QK390K98A6428539804723J74A954862KK5JAQ9Q80066233067347AJQ0708K56A49A9686322Q63QJA48AJ5795Q7903JQ87J9J44596K36J06Q3A7794562732AK652AJ6J005QQ0A024A62A8K0409298A62KJ754Q553Q8A59278QK745342Q6782588Q9897K7A9J40JA9407K05K087A623K542Q5K92A3K9K57338KQJQ5K6K3AJJQ35494J20J4Q5K47A0KJ
Conteo:
1
0
0
-1
-1
0
1
2
2
3
4
3
4
3
3
2
3
2
3
3
3
4
4
3
2
3
3
3
2
3
2
2
1
0
-1
-2
-1
0
1
0
-1
0
0
-1
-2
-2
-2
-3
-2
-1
0
0
1
2
2
2
1
2
2
3
4
3
3
4
3
3
4
5
5
6
7
6
5
6
5
4
3
3
2
2
1
0
1
2
3
4
5
4
5
5
6
7
7
6
5
4
3
3
2
2
1
2
3
2
3
3
2
2
3
3
4
5
6
7
6
7
8
7
6
5
6
6
5
4
5
5
5
6
5
5
5
4
5
4
3
3
3
2
2
1
2
3
4
4
5
4
5
6
5
4
5
4
5
4
4
4
4
5
6
7
8
8
9
10
9
8
9
10
11
10
9
10
9
8
7
8
7
6
5
4
3
4
5
4
5
6
5
5
4
3
4
3
3
4
4
4
3
4
5
4
3
3
4
5
4
5
6
7
6
6
5
6
6
7
7
7
6
5
5
6
7
8
9
10
9
10
10
10
11
12
12
12
11
11
11
11
11
10
10
9
9
8
9
8
7
6
6
7
6
6
5
4
5
4
3
3
3
2
3
4
5
4
5
6
7
6
7
6
6
7
6
7
6
6
5
6
6
7
8
8
7
6
5
4
5
4
5
4
5
4
3
2
1
2
3
4
4
5
4
5
4
3
4
3
4
3
4
4
3
2
1
0


En teoria cuando los numeros estan sobre 10 tenemos mas chance de recibir una carta alta, asi que si en nuestra mano tenesmo 10 u 11 podremos ganar, en caso de tener mas de 11 nos arriesgamos a perder, igualemente si tenemos 2 10, podriamos hacer split

El ejemplo anterior se uso con 6 barajas, lo he probado con 1000 barajas y los contadores son mas variables que van desde los -130 hasta los 130
#1650
Muy buen dia compañeros, yo realmente prefiero las soluciones en algun otro lenguaje como PHP pero.... me estan pidiendo trabajar en ASP.NET

Me he topado al tratar de ejcutar un codigo sencillo de ejemplo de la siguiente pagina

http://www.w3schools.com/aspnet/razor_syntax.asp

Código (csharp) [Seleccionar]

<!-- Single statement block -->
@{ var myMessage = "Hello World"; }

<!-- Inline expression or variable -->
<p>The value of myMessage is: @myMessage</p>

<!-- Multi-statement block -->
@{
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Here in Huston it is: " + weekDay;
}
<p>The greeting is: @greetingMessage</p>


Al momento de cargar en la URL en el navegaor me dice que:

http://localhost/test.cshtml


Server Error in '/' Application.

This type of page is not served.

Description: The type of page you have requested is not served because it has been explicitly forbidden.  The extension '.cshtml' may be incorrect.   Please review the URL below and make sure that it is spelled correctly.

Requested URL: /test.cshtml

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34209



He googleado bastante y no he encontrado solucion al problema.

Tengo el IIS instaldo y el codigo lo pongo desde el block de notas en el directorio correspondiente.
Uso windows 8.1 en este momento.

Tengo bastante sin usar windows aun asi no he encontrado la configuracion correspondiente para ejcutar esos codigos.

Si escribo ejemplo de codigo de ASP clasico si los ejecuta, incluso algunos codgios de .net en VB y C# tambien pero el anterior no lo ejecuta para nada.