Basic - Ayuda QBASIC

 
Vista:

Ayuda QBASIC

Publicado por Juan Barrera (1 intervención) el 18/05/2009 00:46:39
Hola a todos, estoy creando un algoritmo que permita asignar a la diagonal de una matriz cuadrada la sgte serie de números primos...

|2 0 0 0 |
|0 3 0 0 |
|0 0 5 0 |
|0 0 0 7 ..|

Y esto tengo, pero al ejecutarlo me resulta la matriz sólo con 0.
PD: No importa que la matriz no quede como asi como la escribi antes, tengo claro que en el programa saldrá

2
0
0
0
3
0
0
0
5 (Si fuera de 3x3 la matrz)

CLS
'$DYNAMIC
DIM A(1, 1) AS DOUBLE
DIM B(1) AS DOUBLE
INPUT "INGRESE ORDEN DE MATRIZ N"; N
REDIM A(N, N)
REDIM B(N)
I = 2
L = 1
WHILE L < N
Z = Y
J = 2
WHILE J < I
X = I MOD J
IF X = 0 THEN
Z = W
END IF
J = J + 1
WEND
IF Z = Y THEN
I = B(I)
L = L + 1
END IF
I = I + 1
WEND
FOR I = 1 TO N
FOR J = 1 TO N
IF I = J THEN
A(I, J) = B(I)
ELSE
A(I, J) = 0
END IF
NEXT J
NEXT I
FOR I = 1 TO N
FOR J = 1 TO N
PRINT A(I, J)
NEXT J
NEXT I

Cuál es el error?
Gracias a los que puedan ayudar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda QBASIC

Publicado por Jose Ramon Castelo (2 intervenciones) el 26/05/2009 12:49:27
Hola, el problema está en el valor que le estás dando a los elementos de la tabla B, creo que no está haciendo bien los bucles While/Wend.

Yo lo he hecho de la siguiente forma con un FOR... NEXT:

CLS
'$DYNAMIC
DIM A(1, 1)
DIM B(1)
INPUT "INGRESE ORDEN DE MATRIZ N"; N
REDIM A(N, N) AS DOUBLE
REDIM B(N) AS DOUBLE

REM CARGAR TABLA DE PRIMOS
I = 2
FOR L = 1 TO N
J = 2
WHILE J < I
X = I MOD J
IF X = 0 THEN
I = I + 1
J = 2
ELSE
J = J + 1
END IF
WEND
B(L) = I
I = I + 1
NEXT L

REM ASIGNAR VALORES A MATRIZ
FOR I = 1 TO N
FOR J = 1 TO N
IF I = J THEN
A(I, J) = B(I)
ELSE
A(I, J) = 0
END IF
NEXT J
NEXT I

REM PINTAR LA MATRIZ
FOR I = 1 TO N
FOR J = 1 TO N
PRINT A(I, J);
NEXT J
PRINT
NEXT I

Para que salgan impresos en forma de matriz por pantalla lo que tienes que hacer es
poner un punto y coma ";" al final del PRINT de esta forma no hace un salto de linea. Para que salte de linea pones un PRINT sin nada mas y ya estaría.

Espero haber ayudado. Un saludo desde A Coruña (España).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar