loop problem

Please support our C++ advertiser: Intel Parallel Studio Home
Reply

Join Date: Sep 2004
Posts: 7
Reputation: pratima is an unknown quantity at this point 
Solved Threads: 0
pratima pratima is offline Offline
Newbie Poster

loop problem

 
0
  #1
Oct 24th, 2004
: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();
}
Reply With Quote Quick reply to this message  
Join Date: Sep 2004
Posts: 7,566
Reputation: Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute 
Solved Threads: 705
Team Colleague
Narue's Avatar
Narue Narue is offline Offline
Code Goddess

Re: loop problem

 
0
  #2
Oct 24th, 2004
>#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:
  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:
  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.
I'm here to prove you wrong.
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC