For loops help

2260 views
Skip to first unread message

paolo....@gmail.com

unread,
May 11, 2006, 6:51:47 AM5/11/06
to
Dear everyone,

Can someone please help me on my HW. I'm trying to write a program
that will display the following:

*
***
*****
*******
*********
*********
*******
*****
***
*

I'm having a hard time writing a code for this one. I tried several
times, but I can't get it to work properly. I live in Japan and I take
an online C++ course. The instructor lives in the US so whenever I am
awake, he's asleep. Therefore, I cannot contact him directly when I
need help. I have to get this program up and running ASAP. I tried
searching everywhere for help, but there's none except for this group.
My textbook isn't much of a help either. I WILL GREATLY APPRECIATE THE
HELP I WILL GET!

Vladimir Oka

unread,
May 11, 2006, 7:07:47 AM5/11/06
to

Post some of the attempts you have made. Nobody will just give you the
solution. Also, read the link below, especially where it talks about
(or links to) how a homework question should be asked:

http://www.clc-wiki.net/wiki/Introduction_to_comp.lang.c

I can offer one solution, though I doubt that's what you're looking
for:

#include <stdio.h>

int main(void)
{
int i;

for (i=0; i<1; i++)
{
printf(" *\n");
printf(" ***\n");
printf(" *****\n");
printf(" *******\n");
printf("*********\n");
printf("*********\n");
printf(" *******\n");
printf(" *****\n");
printf(" ***\n");
printf(" *\n");
}

return 0;
}

Christopher Benson-Manica

unread,
May 11, 2006, 7:15:16 AM5/11/06
to
paolo....@gmail.com wrote:

> Can someone please help me on my HW. I'm trying to write a program
> that will display the following:

(snip asterisks)

> I'm having a hard time writing a code for this one. I tried several
> times, but I can't get it to work properly.

Post your best attempt. We'll fix your code, but we won't write it
for you.

> I live in Japan and I take
> an online C++ course.

And post to the correct newsgroup. comp.lang.c++ is that way ---->

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.

Richard Bos

unread,
May 11, 2006, 7:14:40 AM5/11/06
to
paolo....@gmail.com wrote:

> Can someone please help me on my HW. I'm trying to write a program
> that will display the following:
>
> *
> ***
> *****
> *******
> *********
> *********
> *******
> *****
> ***
> *

#include <stdio.h>

int main(void)
{
puts(" *");
puts(" ***");
puts(" *****");
puts(" *******");
puts("*********");
puts("*********");
puts(" *******");
puts(" *****");
puts(" ***");
puts(" *");
puts("");
puts("Copyright 2006 Richard L. Bos - all rights reserved.");

return 0;
}

> I'm having a hard time writing a code for this one. I tried several
> times, but I can't get it to work properly. I live in Japan and I take
> an online C++ course.

Then a. you want to replace <stdio.h> with something like <cstdio.h++>;
b. you want something like stdout << instead of puts(; and c. you need
to ask in comp.lang.c++, not comp.lang.c.

> The instructor lives in the US so whenever I am awake, he's asleep.
> Therefore, I cannot contact him directly when I need help.

They don't have e-mail in the US? Gosh. I knew that country was a bit
primitive in some aspects, but that's truly backwards.

> I have to get this program up and running ASAP.

I really, really doubt that.

FWIW: DYODH. HTH; HAND.

Richard

pete

unread,
May 11, 2006, 7:43:57 AM5/11/06
to
paolo....@gmail.com wrote:

> *
> ***
> *****
> *******
> *********
> *********
> *******
> *****
> ***
> *

/* BEGIN new.c */

#include <stdio.h>
#include <string.h>

#define FIVE 5

void function(char *array, int max, int limit);
char *str_rev(char *s);

int main(void)
{
char array[FIVE] = "";
int counter;

counter = FIVE;
while (counter-- != 0) {
function(array, FIVE - 1, counter);
}
for (counter = 0; counter != FIVE; ++counter) {
function(array, FIVE - 1, counter);
}
return 0;
}

void function(char *array, int max, int limit)
{
int count;

for (count = 0; count != limit; ++count) {
array[count] = ' ';
}
while (count != max) {
array[count] = '*';
++count;
}
printf(array);
putchar('*');
str_rev(array);
puts(array);
}

char *str_rev(char *s)
{
char *t, swap;
char *const p = s;

if (s[0] != '\0' && s[1] != '\0') {
t = s + 1 + strlen(s + 2);
do {
swap = *t;
*t-- = *s;
*s++ = swap;
} while (t > s);
}
return p;
}

/* END new.c */

--
pete

osmium

unread,
May 11, 2006, 7:59:39 AM5/11/06
to
<paolo....@gmail.com> wrote:

Resolve to do it in two parts, the asterisks are growing or the asterisks
are shrinking.

For the growing asterisks:
Write two functions, one to print n spaces and another to print n asterisks.
Call these functions with the appropriate parameters, and have the main loop
provide the end of line. That is, one iteration of the for loop prints one
*line*.

Make a table like this:

line nbr nbr asterisks
1 1
2 3
3 5
4 6

Note the sequence and provide appropriate code in the for loop to provide
the appropriate value to the asterisk printing function.

Note well how the liberal use of functions empties the mind of extraneous
non-interesting (at the moment) things.

Now do the shrinking asterisks bit.

Done.
-----
I *finally* figured out what HW is. Homework!


Richard Heathfield

unread,
May 11, 2006, 10:00:50 AM5/11/06
to
paolo....@gmail.com said:

My pleasure.

#define M 002354l
#define A 000644l
#define G 000132l
#define I 000322l
#define C 000374l

#define a ;
#define b for
#define c ++
#define d %
#define e int
#define f ,
#define g -
#define h 011
#define i =
#define j {
#define k )
#define l '\n'
#define m main
#define n <
#define o }
#define p >
#define q &&
#define r (
#define s ||
#define t ?
#define u putchar
#define v void
#define w '*'
#define x :
#define y ' '
#define _ /
#define C_O_O_L return

e u r e k a

e
m r
v k j
j j j j
j j j j j
j j j j j j
j j j j j j j
j e z a b r z i
M _ A _ G _ I _ C
a z n G a u r z d h
+ z _ h p M _ A q z d
h + z _ h n M _ G q z _
h n z d h + M _ I q z _ h
p z d h g M _ C t w x y k f
z d h g h + 1 s u r l k f z c
k a u r l k a j j j j j j j j j
j j C_O_O_L M _ A _ G _ I _ C a o
o o o o o o o o o o o o o o o o o o
o o o o
o o o o
o o o o
o o o o


--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)

Vladimir Oka

unread,
May 11, 2006, 10:10:35 AM5/11/06
to

Thank you! You've definitely made my day! LoL

Robert Latest

unread,
May 11, 2006, 11:22:00 AM5/11/06
to
On Thu, 11 May 2006 14:00:50 +0000,
Richard Heathfield <inv...@invalid.invalid> wrote
in Msg. <IvqdnVvtxcAH3v7Z...@bt.com>

>
> #define M 002354l
> #define A 000644l
> #define G 000132l
> #define I 000322l
> #define C 000374l

[...]

> h n z d h + M _ I q z _ h
> p z d h g M _ C t w x y k f
> z d h g h + 1 s u r l k f z c
> k a u r l k a j j j j j j j j j
> j j C_O_O_L M _ A _ G _ I _ C a o
> o o o o o o o o o o o o o o o o o o
> o o o o
> o o o o
> o o o o
> o o o o

OK, let's un-obfuscate this a little bit:

------
int putchar(int);

int main(void)
{
int z;

for (z =
002354l / 000644l / 000132l / 000322l / 000374l; z < 000132l;
putchar(z % 011 + z / 011 > 002354l / 000644l
&& z % 011 + z / 011 < 002354l / 000132l
&& z / 011 < z % 011 + 002354l / 000322l
&& z / 011 > z % 011 - 002354l / 000374l ? '*' : ' '),
z % 011 - 011 + 1 || putchar('\n'), z++);
putchar('\n');
return 002354l / 000644l / 000132l / 000322l / 000374l;
}
------

Ho do you come up with stuff like this? I don't get it. My mind doesn't
work that way.

Puzzled,
robert

Richard Heathfield

unread,
May 11, 2006, 11:55:08 AM5/11/06
to
Robert Latest said:

> for (z =
> 002354l / 000644l / 000132l / 000322l / 000374l; z < 000132l;
> putchar(z % 011 + z / 011 > 002354l / 000644l
> && z % 011 + z / 011 < 002354l / 000132l
> && z / 011 < z % 011 + 002354l / 000322l
> && z / 011 > z % 011 - 002354l / 000374l ? '*' : ' '),
> z % 011 - 011 + 1 || putchar('\n'), z++);
> putchar('\n');
> return 002354l / 000644l / 000132l / 000322l / 000374l;
> }
> ------
>
> Ho do you come up with stuff like this? I don't get it. My mind doesn't
> work that way.

Well, I see no point using two loops when one will do, that's all.

I also don't think a program is sufficiently obfuscated if its workings are
immediately clear to the reader after running the source through cpp and
indent!

Toni

unread,
May 14, 2006, 4:45:16 AM5/14/06
to
lovely. This surely redefines creative programming.

Keith Thompson

unread,
May 14, 2006, 5:00:35 AM5/14/06
to
Toni <deve...@gmail.com> writes:
> lovely. This surely redefines creative programming.

What does?

Read <http://cfaj.freeshell.org/google/>.

--
Keith Thompson (The_Other_Keith) ks...@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.

zwjzhan...@gmail.com

unread,
May 14, 2006, 5:16:49 AM5/14/06
to
just a test. i just can speak a little englise.

everybody's answer is so interesting that i can not help reply

CBFalconer

unread,
May 14, 2006, 6:42:44 AM5/14/06
to
zwjzhan...@gmail.com wrote:
>
> just a test. i just can speak a little englise.
>
> everybody's answer is so interesting that i can not help reply

Then read and heed the following sig.

--
"If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the
"Reply" at the bottom of the article headers." - Keith Thompson
More details at: <http://cfaj.freeshell.org/google/>
Also see <http://www.safalra.com/special/googlegroupsreply/>


Andrew Poelstra

unread,
May 14, 2006, 1:20:35 PM5/14/06
to
On 2006-05-14, CBFalconer <cbfal...@yahoo.com> wrote:
> zwjzhan...@gmail.com wrote:
>>
>> just a test. i just can speak a little englise.
>>
>> everybody's answer is so interesting that i can not help reply
>
> Then read and heed the following sig.
>

Your sig didn't show that time, it seems.

Here it is, basically: Click on 'More Options' and 'Add Reply' to reply
using the Google Groups interface. Don't use the broken 'Reply' button.

Vladimir Oka

unread,
May 14, 2006, 2:34:32 PM5/14/06
to
Andrew Poelstra opined:

Looked quite alright for me, strangely enough (KNode on SUSE). Usenet
*is* a strange place, after all.

--
Fascinating is a word I use for the unexpected.
-- Spock, "The Squire of Gothos", stardate 2124.5

<http://clc-wiki.net/wiki/Introduction_to_comp.lang.c>

CBFalconer

unread,
May 14, 2006, 1:29:14 PM5/14/06
to

It normally shows, and is in the usenet article. The only place it
should be suppressed is in a reply to my article. If your reader
doesn't show it on a normal read, something is wrong with your
reader.

Andrew Poelstra

unread,
May 14, 2006, 3:11:54 PM5/14/06
to
On 2006-05-14, CBFalconer <cbfal...@yahoo.com> wrote:
> Andrew Poelstra wrote:
>> On 2006-05-14, CBFalconer <cbfal...@yahoo.com> wrote:
>>> zwjzhan...@gmail.com wrote:
>>>>
>>>> just a test. i just can speak a little englise.
>>>>
>>>> everybody's answer is so interesting that i can not help reply
>>>
>>> Then read and heed the following sig.
>>
>> Your sig didn't show that time, it seems.
>>
>> Here it is, basically: Click on 'More Options' and 'Add Reply' to
>> reply using the Google Groups interface. Don't use the broken
>> 'Reply' button.
>
> It normally shows, and is in the usenet article. The only place it
> should be suppressed is in a reply to my article. If your reader
> doesn't show it on a normal read, something is wrong with your
> reader.
>

True, but the interesting thing is that it /does/ show in every single
post you make, with the exception of the one that I replied to.
Perhaps my ISP's news server flaked out or something.

Keith Thompson

unread,
May 14, 2006, 3:26:11 PM5/14/06
to

That is odd. The sig definitely showed up when I read the article.

Chris F.A. Johnson

unread,
May 14, 2006, 9:27:09 PM5/14/06
to
On 2006-05-14, Andrew Poelstra wrote:
> On 2006-05-14, CBFalconer <cbfal...@yahoo.com> wrote:
>> zwjzhan...@gmail.com wrote:
>>>
>>> just a test. i just can speak a little englise.
>>>
>>> everybody's answer is so interesting that i can not help reply
>>
>> Then read and heed the following sig.
>
> Your sig didn't show that time, it seems.

In slrn, toggle showing the sig with \.

--
Chris F.A. Johnson, author <http://cfaj.freeshell.org>
Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)
===== My code in this post, if any, assumes the POSIX locale
===== and is released under the GNU General Public Licence

Andrew Poelstra

unread,
May 15, 2006, 10:49:09 AM5/15/06
to
On 2006-05-15, Chris F.A. Johnson <cfajo...@gmail.com> wrote:
> On 2006-05-14, Andrew Poelstra wrote:
>> On 2006-05-14, CBFalconer <cbfal...@yahoo.com> wrote:
>>> zwjzhan...@gmail.com wrote:
>>>>
>>>> just a test. i just can speak a little englise.
>>>>
>>>> everybody's answer is so interesting that i can not help reply
>>>
>>> Then read and heed the following sig.
>>
>> Your sig didn't show that time, it seems.
>
> In slrn, toggle showing the sig with \.
>

Thanks, Chris. I'm going to take a trek through my help files now...

Reply all
Reply to author
Forward
0 new messages