Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Problems with for loop to output diamond shape

Posted on 2007-12-05
Medium Priority
3,003 Views
I am doing this exercise to output a diamond entering a size. I have messed around with this using a odd and a positive and didn't like that way of doing it. So I have been trying to get it to enter the size of the middle of the shape. What is wrong with my for loop it displays it all wrong.

``````#include <iostream>
#include <iomanip>

using namespace std;

int main()
{

int size;

cout << "Enter a size of the middle of the diamond: ";
cin >> size;
cout << endl;

for (int i = 1; i < size; i = i + 1)
{
cout << setw(size);
for (int j = 0 ; j < i; j++)
cout << "* ";
cout << endl;
--size;
}
for (int i = 1; i < 4; i = i + 1)
{
cout << setw(size + 2);
for (int j = 4 ; j > i; j--)
cout << "* ";
cout << endl;
++size;
}
}
``````
0
Question by:jschmuff
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2

LVL 55

Accepted Solution

Jaime Olivares earned 1400 total points
ID: 20416946
to print a diamond you will need a main loop from 0 to size-1:
for (int i=0; i<size; i++)

then you will need two loops inside, one to print spaces, and another loop to print the diamond
Looking for the diamond below, size = 9
So, you will need to deduce 2 equations:
1) calculate the white spaces, based on i
2) calculate the diamond marks, based on i

in the example first space is 4 and body is 1
then space decrements and body increments

when i = (size-1)/2, then body = size, and space = 0
I would use something like:
body = abs(i-(size-1)/2+1)
space = abs((size-1)/2 - i)

to write the space or body, would be simpler to print char by char, like this:
for (j=0; j<body; j++)
cout << '#';

``````    #
###
#####
#######
#########
#######
#####
###
#
``````
0

Author Comment

ID: 20416963
This isn't actually my homework assignment, but it is similar. Thanks though I will go over what you said and try and fix what I have.
0

Author Closing Comment

ID: 31413038
Thanks for the help again you could have just in plain text said what was wrong with my code cause it was all messed up it was printing out a diamond but not correctly and wrong size. Instead of me figuring out what you were saying. I have bad reading comprehension.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In days of old, returning something by value from a function in C++ was necessarily avoided because it would, invariably, involve one or even two copies of the object being created and potentially costly calls to a copy-constructor and destructor. A…
Included as part of the C++ Standard Template Library (STL) is a collection of generic containers. Each of these containers serves a different purpose and has different pros and cons. It is often difficult to decide which container to use and …
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.
###### Suggested Courses
Course of the Month9 days, 21 hours left to enroll