Asterisk Star pattern help

• 10-16-2008, 03:21 PM
MindGAckt
Asterisk Star pattern help
I already know how to do make the patterns
**********
*********
********
*******
******
*****
****
***
**
*

and

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

But im having trouble with patterns like these
http://img184.imageshack.us/my.php?i...6919698zu1.jpg
• 10-16-2008, 05:07 PM
Norm
How are you doing it? Do you have code or are you just typing them in?
• 10-16-2008, 10:35 PM
MindGAckt
Code:

```while (maxRows <= 0)         {             System.out.printf("\nYou did not enter a POSITIVE number.  You entered %d!\n", maxRows);              System.out.print("Enter a positive number for the number of rows: ");             maxRows = stdIn.nextInt();         }               System.out.println();         System.out.println("Book example\n");         for (int row = 1; row <= maxRows; row++)         {             starCnt = row;             for (int star = 1; star <= starCnt; star++)               System.out.print ("*");             System.out.println();         }                   System.out.println();         System.out.println("Example A\n");                              for (int row = maxRows; row >= 0; row--)         {             starCnt = row;             for (int star = 1; star <= starCnt; star++)               System.out.print ("*");             System.out.println();         }```
This is what i have for the first two
• 10-17-2008, 08:59 AM
Norm
How are you doing with the rest?
• 10-17-2008, 01:45 PM
ajhampson
Asterisk Star pattern help
For these exercises, you need to work out the algorithm before you start thinking about code.

For the diamond shape, I noticed that if the maximum number of rows is even, the width will be max rows - 1. Then look at the pattern (for max row = 10):

Row - Spaces - Stars
1 ----- 4 ----- 1
2 ----- 3 ----- 3
3 ----- 2 ----- 5
4 ----- 1 ----- 7
5 ----- 0 ----- 9
6 ----- 0 ----- 9
7 ----- 1 ----- 7
8 ----- 2 ----- 5
9 ----- 3 ----- 3
10 ----- 4 ----- 1

This looks to me like it would be a loop counting by 2s (1, 3, 5, 7 ...). The loop counter would be the number of stars, the number of spaces is calculated. I have 2 loops, one counting up to max rows / 2, and one counting back down.

These loops would have other loops inside it (nested loops) to print the stars and asterisks.

The triangle is easier, it has a pattern like this (again for max row = 10):

Row - Spaces - Stars
0 ----- 0 ----- 10
1 ----- 1 ----- 9
2 ----- 2 ----- 8
3 ----- 3 ----- 7
4 ----- 4 ----- 6

etc.

You need a loop that will go max rows times, then nested loops to print spaces and stars. The number of spaces and stars are calculated based on what row you're printing.

I hope I'm being clear. I'm trying to give you hints without giving away everything. It appears this exercise is about loop control and nested loops. Don't be afraid to experiment and see what you get as a result. Java compile/executes are pretty quick for code this size.

Good luck,
alan
• 11-15-2008, 12:59 PM
lilcoop_69
^^^ I'm having an issue with the same type of problem and I've read over what you wrote, but I think I'm getting my numbers jumbled up. Here is the pattern that I'm working on....
*
***
*****
*******

Here is my code....
final int MAX_ROWS = 4;

for (int row = 1; row <= MAX_ROWS; row++)
{
for (int space = 1; space <= row; space++)
{
for (int star = 1; star <= space; star++)
{
System.out.print ("*");
}
System.out.println();
}
}
}
}
FYI - I'm a true beginner so if you can keep it in lamins terms then that would be great :)
• 11-15-2008, 01:00 PM
lilcoop_69
^^ my bad.... the star pattern didn't stay the way I typed it in.... It's a small diamond consisting of 4 rows.....
• 11-15-2008, 07:28 PM
lilcoop_69
anybody?
• 11-21-2008, 06:15 AM
enbee772
some functions for diff forms
Some functions allowing you such forms:
Code:

```//StarsForms.java public class StarsForms{     public static void main(String argv[]){         leftTriangle(1, 5, 0);         System.out.println("--------------------------------");         leftTriangle(4, 1, 0);         System.out.println("--------------------------------");         rightTriangle(2, 5, 0);         System.out.println("--------------------------------");         rightTriangle(5, 2, 0);         System.out.println("--------------------------------");         centerTriangle(1, 5, 0);         System.out.println("--------------------------------");         centerTriangle(1,-4, 1);         System.out.println("--------------------------------");         diamond(1, 9, 5);         System.out.println("--------------------------------");         diamond(2, 10, 5);             }         public static void leftTriangle(int firstrow, int lastrow, int trans){         if(firstrow < 0 || lastrow < 0)             return;         if(firstrow < lastrow){             for (int i = firstrow; i <= lastrow; i++) {                 printNchars(trans, " ");                 printNcharsln(i, "*");             }         }else{             for (int i = firstrow; i >=lastrow ; i--) {                 printNchars(trans, " ");                 printNcharsln(i, "*");             }         }            }         public static void rightTriangle(int firstrow, int lastrow, int trans){         if(firstrow < 0 || lastrow < 0)             return;         if(firstrow < lastrow){             for (int i = firstrow; i <= lastrow; i++) {                 printNchars(trans, " ");                 printNchars(lastrow-i, " ");                 printNcharsln(i, "*");             }         }else{             for (int i = firstrow; i >=lastrow ; i--) {                 printNchars(trans, " ");                 printNchars(firstrow-i, " ");                 printNcharsln(i, "*");             }         }            }         public static void centerTriangle(int minStars, int rows, int trans){         if(minStars < 0 || rows == 0)             return;         if(0 < rows){             for (int i = 0; i < rows; i++) {                 printNchars(trans, " ");                 printNchars(rows-i-1, " ");                 printNcharsln((i*2)+minStars, "*");             }         }else{             rows = -rows;             for (int i = rows-1; i >= 0; i--) {                 printNchars(trans, " ");                 printNchars(rows-i-1, " ");                 printNcharsln((i*2)+minStars, "*");             }         }     }         public static void diamond(int minStars, int rows, int trans){         if(minStars < 0 || rows == 0)             return;         centerTriangle(minStars, (rows+1)/2, 0 + trans);         centerTriangle(minStars,-rows/2, rows&#37;2 + trans);     }             public static void printNchars(int n, String c){         for(int i = 0; i<n; i++)             System.out.print(c);     }     public static void printNcharsln(int n, String c){         for(int i = 0; i<n; i++)             System.out.print(c);         System.out.println();     } }```
• 11-24-2008, 12:18 PM
ajhampson
Printing stars
Quote:

lilcoop_69
^^^ I'm having an issue with the same type of problem and I've read over what you wrote, but I think I'm getting my numbers jumbled up. Here is the pattern that I'm working on....
The problem is that you've nested all your loops. The one to print spaces and the one to print stars need to be separate:
Code:

```loop to do rows {         loop to print spaces         loop to print stars }```
Sorry you were left hanging, I haven't checked this thread in a while and I apparently didn't set it to mail me when the thread changed. Post again if you have other questions. BTW, if you put CODE tags around your code, it will help us when looking at it.

Quote:

enbee772
Some functions allowing you such forms:
enbee - as a general rule, you shouldn't post homework solutions here. We try to guide people and answer specific questions, but not give them the answers. This helps new developers to think for themselves and learn to solve a variety of problems. It's great that you want to help, but you need to think about giving pointers vs. giving answers.

Thanks,
alan