im taking a qbasic class and am having a very hard time on this program...here is the question:
Using the ASCII table and the CHR\$ function, write a program that prints the following output using a nested for next loop:
A
AB
ABC
ABCD
ABCDE

--------------------------------------------------------------------
heres what I have so far...i keep getting a "type mismatch":

CLS
FOR Outer = 1 TO 5 STEP 1
FOR in = CHR\$(65) TO CHR\$(70) <------TYPE MISMATCH?????
PRINT in;
NEXT in
PRINT
NEXT Outer

what am i doing wrong? any help on this would be greatly appreciated....thanks :confused:

## All 7 Replies

CLS
FOR Outer = 1 TO 5 STEP 1
FOR in = CHR\$(65) TO CHR\$(70) <------TYPE MISMATCH?????
PRINT in;
NEXT in
PRINT
NEXT Outer

what am i doing wrong? any help on this would be greatly appreciated....thanks :confused:

Well you are making it too difficult, the reason is write in front of you. CHR\$(65) gives you what value?

...
Look at your ASCII Table if you don't know off hand.....

It is the Character A .

Now, look at your code. For in = CHR\$(65) Stop right there!
If CHR\$(65) gives a value of A and in is no doubt an integer value this is where you mismatch starts. You care comparing a Character String (albiet one character) to an Integer! So it unfortunately won't work. Can only compare like datatypes.

So some Conversion will be needed and I think you need to check your logic for this code....

Hope this helps.... If not let me know if you need more help!

I sill don't quite get it. Every time I try and switch it up to change values I get another error. I know im close but just cant figure it out. any suggestions?

first of all, you don't need STEP, because the default step value is always 1. Secondly, A FOR statement is looking for an integer. CHR\$() returns a character, which is not a number. Leave the CHR\$() out of the FOR header. Look at the example below.

``````FOR outer = 1 to 5
FOR in = 1 to outer
PRINT CHR\$(in+64)
NEXT in
NEXT outer``````

Now lets run through the code step by step. First time through, "outer" will equal 1. So the following statement would actually be "FOR in = 1 to 1". "in" will equal 1 as well. Next line "PRINT CHR\$(in+64)" This will be the same as "PRINT CHR\$(65)" because "in" is 1. Now the loops starts back from the top. This time, "outer" will equal 2. So therefore, the following FOR statement would really mean "FOR in = 1 to 2". So that FOR loop will run through twice. The first time "in" being 1 and the second time "in" being 2. Which would print CHR\$(1+64) and CHR\$(2+64). And the pattern repeats until "outer" finally equals 5. Hope this helped you a little.

I just had a problem similar to this one. But I ended up making it harder than it really was. It all clicked when I figured out FOR is looking for integers instea of characters. Here's what I did:

CLS

FOR num = 32 TO 255
PRINT CHR\$(num)
NEXT num

END

It can't get more simple than that.

The code below should work if Qbasic works at all like BCX:

dim inner, outer

FOR outer = 1 to 5
FOR inner = 1 to outer
PRINT CHR\$(inner + 64); ' stay on line
NEXT innner
PRINT ' new line feed
NEXT outer

The code below should work if Qbasic works at all like BCX:

dim inner, outer

FOR outer = 1 to 5
FOR inner = 1 to outer
PRINT CHR\$(inner + 64); ' stay on line
NEXT innner
PRINT ' new line feed
NEXT outer

Well I do appreciate your help, but I took this class back in April and this is no longer useful to me. I got a B+........thanks anyway

WELL U AIN'T PROBABLY GONNA WATCH THIS BUT I HAVE GOT A EASIER SOLUTION:

CLS
FOR I = 65 TO 69
FOR J = 65 TO I
D\$=CHR(J)
PRINT D\$;
NEXT J
PRINT
NEXT I
END

SEE SIMPLE AS THAT

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.