Ayuda programa en Qbasic!!!

Kasad

Bovino maduro
#1
bueno lo que me pasa es que soy nuevo en esto de la programación y no se casi nada, para acabarla de fregar me toco un maestro de esos culeros frustrados que no enseñan pero ha que bien joden....

y ps he tenido que aprender por mi cuenta XD
y ps no puedo acabar de hacer el el ultimp programa q me pidio se trata de un programa que convierta un numero base 10 a base 2 o 8 o 16


y ya medio hice el codigo se los pongo abajo, lo que me pasa es que a la hora de imprimir el resultado solo imprime el primer resultado osea solo una letra en base 16 o un numero en base 2 y 8. no se si me puedan ayudar pero de antemano gracias

para los que sepan lo de las base les explico la situasion:
tengo que resolver una division i guardar el resultado en enteros
que es el que se va a imprimir pero el residuo de esa division lo tengo que volver a dividir i asi sucecivamente imprimiendo todos los resultados de derecha a izquierda


CLS
INPUT "Da el n£mero en base 10"; x
num = x

A:
INPUT "A que base quieres convertirlo 2, 8 ó 16"; bas
IF bas <> 2 AND bas <> 8 AND bas <> 16 THEN PRINT "Error en los datos de entrada": GOTO A
C = 0

B:
C = C + 1
R(C) = x MOD bas
CO = INT(x / bas)
IF CO = 0 THEN GOTO B:
x = CO
GOTO C

C:
FOR i = 1 TO C
SELECT CASE R(i)
CASE IS <= 9
R$(i) = STR$(R(i))
CASE 10
R$(i) = "A"
CASE 11
R$(i) = "B"
CASE 12
R$(i) = "C"
CASE 13
R$(i) = "D"
CASE 14
R$(i) = "E"
CASE 15
R$(i) = "F"
END SELECT
NEXT i
PRINT
PRINT "El"; num; "en base 10 es ";
FOR i = C TO 1 STEP -1
PRINT R$(i);
NEXT i
PRINT " en base"; bas
END
 

Salandrews

Bovino maduro
#2
El problema esta en el siguiente bloque de código:

IF CO = 0 THEN GOTO B:
x = CO
GOTO C

Cambialo así:

IF CO = 0 THEN GOTO C:
x = CO
GOTO B

Saludos
 

darol860

Bovino maduro
#5
y como comentario Qbasic lo traia instalado de fabrica el Windows 3.1 y te dejaba modificar dicho windows por medio de Qbasic.

Saludos.
 
#7
Qbasic °_0, simon ese profe lo unico que busca es joder, digo igual vas en alguna materia de principios de programación, pero si en verdad quieres aprender, vas por buen cámino no te fies de lo que tus profes te dicen, toma las bases que te proporcionen y extiende conocimiento por tu propia cuenta. Saludos
 
#8
Por que nadie mencionó el hecho de que se abandonó por completo el uso de "goto", y que se conserva en los lenguages por retro compatibilidad y para uso de los optimizadores de codigo, pero para las mentes humanas crea algo que se llama "codigo spaghetti", si haces un programas muy grandes que hacen uso de la instrucción "goto" podrías confudir el flujo de las instruciones sobre todo usando nombres de etiquetas no explicativas, por cierto no temas ponerles nombres a las variables que tengan que ver su funcion, como por ejemplo "contador" "base" "salida".

Sobre lo que mencionaba de la instrucción goto, puedes precindir de ella aunque uses un lenguaje viejo como BASIC, yo lo habría hecho más o menos así:

Código:
bas=2 ' lo pongo aqui en 2 para que
DO
 if bas <> 2 THEN ' Aqui no escriba
  PRINT "Error en los datos de entrada"   ' este mensaje la primera vez
 ENDIF  ' que entra a esta parte.
 INPUT "Introdusca base a convertir el numero:"; bas
UNTIL bas=2 OR bas=8 OR bas=16

C=0

DO
 C=C+1
 R(C) = x MOD bas
 CO = INT(x / bas)
WHILE CO=0

' A partir de la etiqueta C, y antes de la etiqueta A lo dejaría todo igual.
Perdón si cometo algunos errores en la sintaxis del lenguage pero es hace mucho que programé en ese lenguage, y hasta lo estoy olvidando.
 
Arriba