944,021 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 9752
  • C++ RSS
Oct 24th, 2004
0

loop problem

Expand Post »
:rolleyes: i have to write a program which ask the user the height of a pyramid between 1 and 15 and displays a pyramid of this height made up of "*" characters on screen.for example

how high would you like the pyramid?:37
pick another height(must be between 1 and 15):6

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

i have written the following but its displaying something like that
**
**
**
**.........

it continues like that for the number of * that is suppose to made the pyramid

#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
clrscr();

char ch;
int h,i;

cout<<"how high would you like the pyramid?";

cin>>h;

ch='*';

if(h>15)
cout<<"pick another height between 1 and 15"<<endl;

cin>>h;

if((h>=1)&&(h<15))

for(i=1;i<=h;i++)
{
for(int a=1;a<=i;a++)

{ cout<<ch<<ch<<endl; }
}


getch();
}
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
pratima is offline Offline
7 posts
since Sep 2004
Oct 24th, 2004
0

Re: loop problem

>#include<iostream.h>
No, not C++.

>#include<iomanip.h>
Also not C++.

>#include<conio.h>
Not only is this not C++, it's also only available on a limited number of implementations.

>void main()
This never has been, and hopefully never will be, correct C++. main returns int. In fact, the old argument of being a lazy ******* ("void main means I don't have to use 'return 0;' at the end of main") doesn't apply anymore because main returns 0 implicitly. So doing things the right way actually saves you a keystroke!

>clrscr();
If getch is the patron saint of nonportable functions, clrscr is it's god. Not only is this functionality rarely needed in valid situations, calling it at the start of a program is almost never a valid situation.

>getch();
The patron saint of nonportable functions, but for this use you can replace it with cin.get() and have a similar effect. Sure, you require the user to hit enter instead of any key, but what do they usually hit anyway? :rolleyes:

On to the meat of the problem, unless you know of a clever way to solve the problem (I do, and I'll post it because there's no way you can turn it in as your work), you need three loops. The first loop handles the rows, the second loop is nested inside the first loop and handles leading whitespace, and the third loop comes after the second loop and prints the requisite number of stars:
C++ Syntax (Toggle Plain Text)
  1. for rows to 1 do
  2. for 1 to spaces do
  3. print space
  4. loop
  5.  
  6. for 1 to stars do
  7. print star
  8. loop
  9. loop
Here is the nifty way to do it with a single loop:
C++ Syntax (Toggle Plain Text)
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int rows;
  9.  
  10. cout<<"Enter the pyramid height: ";
  11. if ( cin>> rows ) {
  12. for ( int i = 0; i < rows; i++ ) {
  13. cout<< setw ( rows - i ) << setfill ( ' ' ) <<"";
  14. cout<< setw ( i * 2 + 1 ) << setfill ( '*' ) <<""<<endl;
  15. }
  16. }
  17. }
If, on the off chance that the problem is to print a right triangle rather than an equilateral triangle, the problem is even simpler. Just remove the space printing step.
Administrator
Reputation Points: 6442
Solved Threads: 1393
Bad Cop
Narue is offline Offline
11,807 posts
since Sep 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: writing a class without the class declaration?
Next Thread in C++ Forum Timeline: Write sentence, then return # of vowels - Need help, plz.





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC