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

#2411
Scripting / Re: Funcion Palindrome [Batch]
15 Junio 2009, 05:16 AM
Lamentablemente solo funciona con 1 sola palabra, luego veo si lo soluciono.

Gracias por probar el código.
#2412
Aqui esta el nuevo algoritmo, más optimizado:
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
for /l %%_ in (1,1,%numero%) do (
set /a "operacion=%numero%%%%%_"
if !operacion! equ 0 set /a "divisores+=1"
)
if %divisores% equ 2 (echo.Es primo) else (echo.No es primo)
pause>nul
exit /b 0


Salida:

C:\>code
Numero : 2
Es primo

C:\>code
Numero : 21
No es primo

C:\>code
Numero : 71
Es primo

C:\>
#2413
El 2 en Batch:
Código (dos) [Seleccionar]
@echo off
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
if %numero% equ 0 (
echo.Error
exit /b 1
)
set /a "factorial=1"
for /l %%_ in (1 1 %numero%) do (
set /a factorial=factorial * %%_
)
echo.Factorial : %factorial%
pause>nul
exit /b 0

Salida:
Numero : 5
Factorial : 120


El problema 3 en Batch:
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
:code
set /p "numero=Numeros : "
if not defined numero (goto:code)
for /l %%_ in (1,1,%numero%) do (set /p "numeros[%%_]=numeros[%%_] : ")
set "mayor=!numeros[1]!"
for /l %%_ in (1,1,%numero%) do (
if !numeros[%%_]! geq !mayor! (set "mayor=!numeros[%%_]!")
)
set "mayor"
pause>nul
exit /b 0


Salida:
Numeros : 5
numeros[1] : 34
numeros[2] : 6
numeros[3] : 36
numeros[4] : 567
numeros[5] : 23
mayor=567


El 5 en Batch:
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
set "numero_=%numero%"
set /a "contador-=1"
:bucle
set "numero=%numero:~1%"
set /a "contador+=1"
if defined numero (goto:bucle)
:end
for /l %%_ in (0,1,%contador%) do (<nul set /p "=!numero_:~%%_,1! ")
pause>nul
exit /b 0


Salida:
Numero : 314592
3 1 4 5 9 2


El 6 en Batch:
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
:: Checar que sea un numero real :
echo %numero% | find "." > nul 2>&1 || (
echo.El numero no es real.
exit /b 1
)
for /f "tokens=1-2 delims=." %%^1 in ("%numero%") do (
call:lenght %%^1
echo.El numero "!numero!" tiene !contador! de parte entera.
call:lenght %%^2
echo.El numero "!numero!" tiene !contador! de parte decimal.
)
pause>nul
exit /b 0
:lenght
set "cadena=%*"
set /a "contador=0"
:lenght2
set "cadena=%cadena:~1%"
set /a "contador+=1"
if defined cadena (goto:lenght2)
goto:eof

Salida:
Numero : 123.456456345
El numero "123.456456345" tiene 3 de parte entera.
El numero "123.456456345" tiene 9 de parte decimal.


Saludos.
#2414
Podrías detectar las USBS de esta forma:
for /f "tokens=1" %%_ in ('wmic logicaldisk get caption^, description ^| findstr "extra"') do (
echo USB : %%_
)

Limitaciones:
Usa wmic y requiere de privilegios de administrador.
O podrias usar el codigo de Carlos :
http://foro.elhacker.net/printpage.html;topic=218760.0

Otra opcion sería usar FSUTIL:
@echo off
for /f "tokens=2" %%_ in ('fsutil fsinfo drives ^| more') do (
fsutil fsinfo drivetype %%_ | find "extra"
)
for /f "tokens=1 skip=2" %%_ in ('fsutil fsinfo drives ^| more') do (
fsutil fsinfo drivetype %%_ | find "extra"
)


O que usaras esta aplicación que hice, es para detectar USB´sy Cdroms, esta hecha en C:
http://rapidshare.com/files/244616659/usbs.zip.html


@echo off
usbs -usb


Salida:
E:\
G:\

usbs -cdrom
Salida:
D:\

Saludos.
#2415
Scripting / Funcion Palindrome [Batch]
15 Junio 2009, 01:09 AM
Basicamente se pide una palabra, se pone la cadena de forma inversa y se compara con la primera pedida al usuario.

Código (dos) [Seleccionar]
@echo off
if exist "file.txt" (del /f /q "file.txt")
setlocal enabledelayedexpansion
:code
set /p "cadena=Cadena : "
if not defined cadena (goto:code)
set "cadena_=%cadena%"
set /a "longitud-=1"
:bucle
set "cadena=%cadena:~1%"
set /a "longitud+=1"
if defined cadena goto:bucle
for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~%%_,1!" >> "file.txt"
for /f "tokens=*" %%_ in (file.txt) do (
if /i "%cadena_%"=="%%_" (echo.Palindrome) else (echo.No palindrome)
)
pause>nul 2>&1
exit /b 0


Salida:
C:\>este
Cadena : seres
Palindrome

C:\>este
Cadena : algo
No palindrome

C:\>este
Cadena : ana
Palindrome

C:\>este
Cadena : Lalo
No palindrome

C:\>este
Cadena : arenero
No palindrome

C:\>este
Cadena : arenera
Palindrome

C:\>
#2416
Cita de: sirdarckcat en 13 Junio 2009, 19:44 PM
Cita de: Leo Gutierrez. en 13 Junio 2009, 19:40 PM
Una ves le habia dado un uso de sentencia nula, pero ya no encuentro en que.
borrar errorlevel? (creo que borrar errorlevel, la vdd ni me acuerdo xD)


Ni yo me acuerdo, creo que era en un for:
for /f "algo" %%_ in ('rem') do ...
o un else
) else (
rem
)


No recuerdo, pero le habia dado otro uso.
#2417
Una ves le habia dado un uso de sentencia nula, pero ya no encuentro en que.
#2418
Este también reconoce mayusculas :
#include <stdio.h>
#include <ctype.h>
signed int busqueda(char caracter);
int main(void)
{
   char cadena[200];
   printf("Cadena : ");
   scanf("%199[^\n]", cadena);
   for(signed int i = 0; cadena[i] != '\0'; i++)
   printf("%c = %d\n", cadena[i], busqueda(cadena[i]));
   return 0;
}
signed int busqueda(char caracter)
{
   char abecedario[] = "abcdefghijklmnopqrstuvwxyz";
   for(signed int i = 0; abecedario[i] != '\0'; i++)
   if(tolower(caracter) == abecedario[i])
   return i+1;
}


Salida:

C:\>codes
Cadena : LaGuitarra
L = 12
a = 1
G = 7
u = 21
i = 9
t = 20
a = 1
r = 18
r = 18
a = 1

C:\>


Saludos.
#2419
Aqui pongo la solución en C:
#include <stdio.h>
signed int busqueda(char caracter);
int main(void)
{
    char cadena[200];
    printf("Cadena : ");
    scanf("%199[^\n]", cadena);
    for(signed int i = 0; cadena[i] != '\0'; i++)
    printf("%c = %d\n", cadena[i], busqueda(cadena[i]));
    return 0;
}
signed int busqueda(char caracter)
{
    char abecedario[] = "abcdefghijklmnopqrstuvwxyz";
    for(signed int i = 0; abecedario[i] != '\0'; i++)
    if(caracter == abecedario[i])
    return i+1;
}

Salida:

C:\>dudas
Cadena : Guitarra
G = 16
u = 21
i = 9
t = 20
a = 1
r = 18
r = 18
a = 1

C:\>
#2420
Postea aqui el tutorial, nadie querrá bajarlo.

Saludos.