Распечатать в X с *
Я хочу напечатать X с *, я сделал левую сторону X, но я не знаю, как напечатать другую сторону (флип / зеркало) . если вы запустите этот код, он напечатает только левую сторону (X), и теперь я хочу напечатать правую сторону (X)? так что я должен сделать, чтобы завершить (X), используя звезды (*)? Спасибо вам, ребята. мне было интересно, можно ли это сделать?(я новичок в программировании)
#include <iostream>
// Expected output pattern:
//
// * *
// * *
// * *
// *
// * *
// * *
// * *
using namespace std;
int main() {
cout << "Printing X with star(*)" << endl;
cout << endl;
int i;
int p;
for (i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
if (j > i) break;
cout << " ";
cout << "\t";
}
cout << "\t\t\t\t";
for (p = 1; p <= 10; p++) {
cout << "*";
}
cout << endl;
}
for (i = 10; i >= 1; i--) {
for (int j = 1; j <= 10; j++) {
if (j > i) break;
cout << " ";
cout << "\t";
}
cout << "\t\t\t\t";
for (p = 1; p <= 10; p++) {
cout << "*";
}
cout << endl;
}
return 0;
}
2 ответа
Хорошо, спасибо всем, кто помог мне, я нашел ответ, который хотел, спустя почти 6 часов, и вот ответ:
#include <iostream>
using namespace std;
int main() {
cout << "Printing X with stars" << endl;
cout << endl;
int i;
int p;
int k;
int s;
int count = 72;
for (i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
if (j > i) break;
cout << " ";
cout << "\t";
}
cout << "\t\t\t\t";
for (p = 1; p <= 10; p++) {
cout << "* ";
}
for (k=1; k<=count; k++){
cout << " ";
}
count-=8;
for (s=1; s<=10; s++){
cout << "* ";
}
cout << endl;
}
count = 0;
for (i = 10; i >= 1; i--) {
for (int j = 1; j <= 10; j++) {
if (j > i) break;
cout << " ";
cout << "\t";
}
cout << "\t\t\t\t";
for (p = 1; p <= 10; p++) {
cout << "* ";
}
for (k=1; k<=count; k++) {
cout << " ";
}
count +=8;
for (s=1; s<=10; s++){
cout << "* ";
}
cout << endl;
if (count == 80) break;
}
return 0;
}
Вы находитесь на правильном пути, чтобы сделать это с правой стороны, вы должны напечатать больше **** в каждой строке в дополнение к тому, что вы уже сделали. Это может помочь подумать о печати каждой строки X как печати некоторого ****, затем нескольких пробелов, а затем большего **** и уменьшения количества пробелов каждый раз, когда вы приближаетесь к точке пересечения. Имеет ли это смысл? Это может помочь вам продвинуться дальше (. = Пробел):
*......*
.*....*
..*..*
...**
и так далее
Это один из многих способов добраться туда:
int main()
{
int size = 8;
int spacesBefore;
int spacesBetween = size;
int numStars = 1;
// Top half:
int i, j;
for ( i = 0; i < size/2; i++ ) {
spacesBetween = size - ( 2 * ( i + 1 ) );
spacesBefore = i;
for ( j = 0; j < spacesBefore; j++ ) // before
cout << " ";
for ( j = 0; j < numStars; j++ ) // * left
cout << "*";
for ( j = 0; j < spacesBetween; j++ ) // between
cout << " ";
for ( j = 0; j < numStars; j++ ) // * right
cout << "*";
cout << endl;
}
// bottom half, do the same kind of thing but changing the spacings
// ...
}