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

#1
Programación General / Re: Ejercicio Pascal
4 Enero 2012, 11:26 AM
Lo que pasa es que en el ejemplo que he puesto los espacios también los cuento como columnas (las dos columnas en blanco).
#2
Programación General / Ejercicio Pascal
1 Enero 2012, 23:41 PM
Buenas noches, tengo un problema con un ejercicio de Pascal, el ejercicio consiste en escribir un programa que a partir de un número entero impar, forme figuras de este tipo:

Número = 5

5
  4
    3
  2
1


Tengo todo el ejercicio hecho, pero me falta una parte, si hay 5 filas y 5 columnas, ¿cuál sería el número de espacios en función de las filas, que debería poner?
Código (pascal) [Seleccionar]
PROGRAM P04_8;
USES    CRT;
VAR     N, i, j, k, cont: integer;
BEGIN
        Write('Introduce un numero positivo impar: ');
        Read(N);

        FOR i := 1 TO N DO
                cont := 0;
                FOR j := 1 TO N DO
                        BEGIN
                                IF (j MOD 2 <> 0) AND (cont = 0) THEN
                                        BEGIN
                                                IF (i <> 1) THEN
                                                        BEGIN
                                                                k := ;   <------ k = Numero de espacios antes del numero, para la fila actual
                                                                REPEAT
                                                                        BEGIN
                                                                                Write(' ');
                                                                                k := k - 1;
                                                                        END;
                                                                UNTIL k = 0;
                                                        END;
                                                Write(N - i + 1);
                                                cont := cont + 1;
                                        END;
                                IF (cont <> 0) THEN Write(' ');
                        END;

READKEY;
END.


No se si me he explicado bien.
#3
Para que cuando introduzcas un número distinto de 1 o 2 te escriba un mensaje tienes que poner esto:
switch (dia) {
             case 1:
                  printf("Lunes\n");
                  break;
             case 2:  
                  printf("Martes\n");
                  break;
     default:
  printf("Introduce un numero valido\n");
                  break;
                  }


En 'default' pones las instrucciones que quieres que se ejecuten cuando no se introduzca ninguno de los números anteriores.

Sobre la segunda pregunta: no se pueden evaluar strings en C, puedes evaluar numeros y letras.
Para evaluar letras:
char dia;
printf("Elige un dia: \n");
scanf("%c" , &dia);
switch (dia) {
case 'A': printf("Lunes\n");
  break;
case 'B': printf("Martes\n");
  break;
default: printf("Introduce una letra valida");
}


Mira esta página si quieres ver como evaluar cadenas: http://foro.elhacker.net/programacion_cc/iquestse_puede_hacer_switch_a_una_cadena_de_caracteres-t215028.0.html

Saludos
#4
La pieza más preciada, el procesador, Intel Core2Quad Q6600.
#5
Hola preython, lo que necesitas para tu programa es una instrucción 'switch' o un conjunto de instrucciones 'if' anidadas.

Mira está pagina que explica de forma fácil la sentencia 'switch': http://www.bloginformatico.com/sentencia-switch-lenguaje-de-programacion-c.php

Si no quieres usar un 'switch', podrías hacer algo parecido a esto:
int main(void)
{
  int op;

  printf("Introduce una opcion: \n");
  scanf("%d", &op)

  if (op = 1) printf("Respuesta 1");
  if (op = 2) printf("Respuesta 2");
  if (op = 3) printf("Respuesta 3");

  if (op != 1) && (op != 2) && (op != 3) printf("No se encuentra la respuesta");

  return 0;
}


Te recomiendo que mires un poco está página: http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Instrucciones_de_control

Saludos.
#6
ASM / Re: Problema con sufijos en ASM de AT&T
20 Diciembre 2011, 15:08 PM
Gracias por responder Eternal Idol, al final lo he solucionado ensamblando y linkeando por separado para una máquina de 32 bits que es como he aprendido a programar.

Código (bash) [Seleccionar]
as --32 -o power.o power.s
ld -m elf_i386 -o power power.o
#7
Hola buenas, tengo un problema al ensamblar un programa escrito en ensamblador con sintaxis de AT&T en un ordenador Linux de 64 bits.
El problema es que al ensamblar con:
Código (bash) [Seleccionar]
gcc -nostartfiles -g -o power power.s

Me da estos errores:
power.s: Assembler messages:
power.s:10: Error: operand type mismatch for `push'
power.s:17: Error: operand type mismatch for `pop'
power.s:24: Error: operand type mismatch for `push'
power.s:45: Error: operand type mismatch for `pop'


Si pongo pushb, pushw, pushl o pushq no se soluciona el problema.
A ver si me podéis ayudar.


Este es mi programa fuente:
Código (asm) [Seleccionar]

.section .data
.section .text
.globl _start
_start:
push $3
push $2
call power
add $8, %esp

push %eax

push $2
push $5
call power
add $8, %esp

pop %ebx
add %eax, %ebx
mov $1, %eax
int $0x80

.type power, @function
power:
push %ebp
mov %esp, %ebp
sub $4, %esp

mov 8(%ebp), %ebx
mov 12(%ebp), %ecx

mov %ebx, -4(%ebp)

power_loop_start:
cmp $1, %ecx
je end_power
mov -4(%ebp), %eax
imul %ebx, %eax
mov %eax,-4(%ebp)
dec %ecx
jmp power_loop_start

end_power:
mov -4(%ebp), %eax
mov %ebp, %esp
pop %ebp
ret
#8
Hola lamaruja, tienes que registrar el archivo ActiveX (.OCX).

Abre una consola de Windows (cmd.exe) y utiliza el siguiente comando:

Regsvr32 C:\Windows\System32\SYSINFO.OCX

Espero que te ayude ^^