my ascii art program is showing the wrong chars
both architectures here
http://www.sendspace.com/file/o3w85n
one source code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
//-------------------------------------------------------------------------------
// Untitled1.cpp
// An ASCII art program.
//-------------------------------------------------------------------------------
#include <iostream>
#include <windows.h>
struct staxx {
static const int cMAX = 60;
char s[cMAX];
int TOPs;
};
int main (void) {
staxx stxx;
for (int l = 0; l < stxx.cMAX; l++) {
++stxx.TOPs;
stxx.s[l] = 'z';
std::cout << stxx.s << std::endl;
}
for (int l = stxx.cMAX - 1; l > -1; l--) {
--stxx.TOPs;
stxx.s[l] = ' ';
std::cout << stxx.s << std::endl;
}
for (int l = stxx.cMAX - 1; l > -1; l--) {
--stxx.TOPs;
if (l % 2 == 0)
stxx.s[l] = '!';
else
stxx.s[l] = 'z';
std::cout << stxx.s << std::endl;
}
for (int l = 0; l < stxx.cMAX; l++) {
++stxx.TOPs;
if (l % 2 == 0)
stxx.s[l] = '0';
if (l % 2 == 1 || l % 2 == 3)
stxx.s[l] = 'Z';
if (l % 2 == 2 || l % 2 == 7)
stxx.s[l] = '$';
if (l % 2 == 4 || l % 2 == 5 || l % 2 == 6)
stxx.s[l] = 'z';
if (l % 2 == 8 || l % 2 == 9)
stxx.s[l] = '!';
std::cout << stxx.s << std::endl;
}
for (int l = -1; l < stxx.cMAX - 1; l++) {
++stxx.TOPs;
stxx.s[l] = ' ';
std::cout << stxx.s << std::endl;
}
for (int l = stxx.cMAX - 1; l > -1; l--) {
--stxx.TOPs;
if (l % 2 == 0)
stxx.s[l] = '?';
else
stxx.s[l] = '$';
std::cout << stxx.s << std::endl;
}
MessageBox(0 ,"Why so serious?","t",MB_OK);
return 0;
}
|
Any help will be appreciated.
stxxx.s[cMax-1] must be '\0' always to mark end of char array.
Might help to initialise stxxx.s before use.
Here's what I wrote after line 13:
stxx.s[stxx.cMAX] = { 0 };
Here's lines 60 to 87 of the output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz<
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz ;
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz :
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 9
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 8
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 7
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 6
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 5
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 4
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 3
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 1
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 0
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz /
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz -
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz ,
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz *
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz )
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz (
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz '
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz &
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz %
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz $
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz #
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz "
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz !
|
There's seems to be a 61st character in many lines. Is that what you're trying to tell me?
Hm... I'll try rewriting the
for (int l = stxx.cMAX - 1; l > -1; l--)
's
into
for (int l = stxx.cMAX; l > 0; l--)
I solved it! The struct I defined was needless and caused all the problems.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
//-------------------------------------------------------------------------------
// Untitled1.cpp
// An ASCII art program.
// (C) 2012 speci4lzero
//-------------------------------------------------------------------------------
#include <iostream>
#include <windows.h>
const int cMAX = 60;
char _art[cMAX];
int main (void) {
for (int l = 0; l < 60; l++) {
_art[l] = 'z';
std::cout << _art << std::endl;
}
for (int l = 60; l > 0; l--) {
_art[l] = ' ';
std::cout << _art << std::endl;
}
for (int l = 60; l > 0; l--) {
if (l % 2 == 0)
_art[l] = '!';
else
_art[l] = 'z';
std::cout << _art << std::endl;
}
for (int l = 0; l < 60; l++) {
if (l % 2 == 0)
_art[l] = '0';
if (l % 2 == 1 || l % 2 == 3)
_art[l] = 'Z';
if (l % 2 == 2 || l % 2 == 7)
_art[l] = '$';
if (l % 2 == 4 || l % 2 == 5 || l % 2 == 6)
_art[l] = 'z';
if (l % 2 == 8 || l % 2 == 9)
_art[l] = '!';
std::cout << _art << std::endl;
}
for (int l = 0; l < 60; l++) {
_art[l] = ' ';
std::cout << _art << std::endl;
}
for (int l = 60; l > 0; l--) {
if (l % 2 == 0)
_art[l] = '?';
else
_art[l] = '$';
std::cout << _art << std::endl;
}
MessageBox(0 ,"Drawing complete!","alien",MB_OK);
return 0;
}
|
Topic archived. No new replies allowed.