在一个循环中并排打印数字
问题描述:
所以我写了我的代码,我必须在不同位置获得直角三角形。这是我下面的代码:在一个循环中并排打印数字
#include <iostream>
using namespace std;
int main()
{
for (int i = 1 ; i <= 10 ; ++i) {
for (int j = 1 ; j <= i ; j++) {
if (j <= i)
cout << "*";
}
cout << endl;
}
cout <<"\n";
for (int i = 10 ; i >= 1 ; --i) {
for (int j = 1 ; j <= i ; j++) {
cout << "*";
}
cout << endl;
}
cout <<"\n";
int i , j;
for ( i = 1 ; i <= 10 ; i++) {
for (j = 1 ; j < i ; j++) {
cout << " ";
}
for (j = i ; j <= 10 ; ++j) {
cout << "*";
}
cout << endl;
}
cout <<"\n";
int k , l ;
for ( k = 1 ; k <= 10 ; k++) {
for (l = k ; l < 10 ; l++) {
cout << " ";
}
for (l = 1 ; l <= k ; l++) {
cout << "*";
}
cout << endl;
}
system ("pause");
return 0 ;
}
而不是被一个低于其他类似的在我的代码,输出应该是并排这样的:
* *************** *************** *
** ************** ************** **
*** ************* ************* ***
**** ************ ************ ****
***** *********** *********** *****
****** ********** ********** ******
******* ********* ********* *******
******** ******** ******** ********
********* ******* ******* *********
********** ****** ****** **********
*********** ***** ***** ***********
************ **** **** ************
************* *** *** *************
************** ** ** **************
*************** * * ***************
的方式
,低于这个提示应该帮助我使用循环,因为需要显示形状的问题任何人都可以帮忙?非常感谢。
// needs additional counter for B and C who rely on decremented counting
for(int i=1, j=10; i<=10; i++, j--){
// A
for(int k=1; k<=10; k++){
std::cout << ((k <= i) ? '*' : ' ');
}
std::cout << " ";
// B
for(int k=1; k<=10; k++){
std::cout << ((k <= j) ? '*' : ' ');
}
std::cout << " ";
// C
for(int k=10; k>=1; k--){
std::cout << ((k <= j) ? '*' : ' ');
}
std::cout << " ";
// D
for(int k=10; k>=1; k--){
std::cout << ((k <= i) ? '*' : ' ');
}
std::cout << std::endl;
}
}
答
您可以将所有内部循环打包在外部循环中。只要确保它们在需要时也产生空间。
对于前两个三角形,这应该是这样的:
#include <iostream>
using std::cout;
using std::endl;
int main(){
for (int i = 0 ; i < 10 ; i++) {
for (int j = 0 ; j < 10 ; j++) {
if (j <= i){
cout << "*";
} else {
cout << " ";
}
}
for (int j = 0 ; j < 10 ; j++) {
if (j >= i){
cout << "*";
} else {
cout << " ";
}
}
cout << endl;
}
}
(运行版本:http://www.cpp.sh/5zqei)
不过从评论的阵列的事情是更好的方法,你也应该尝试一。如果不是这个练习,那么你自己。
编辑:将循环更改为0..9。习惯这种变体,只是为了与数组之类的容器迭代一致。
+0
谢谢。我会看看它,并尝试做其他2。 –
在每个可能的单独的2d数组中填充三角形?然后将它们全部连接成一个二维数组,然后将其打印出来。 (或者只是在连接之前打印,但是按行打印) –
我对数组不熟悉。我应该只使用使物体变硬的覆盖材料。我对循环很熟悉,并且嵌套,但没有你进一步看到的地方?问题给了我这个提示,我不知道如何使用它 –
你需要修改你的循环,以便他们打印星星*和*空间 – RPGillespie