Member 14843505 Ответов: 1

C++: домашнее задание, где мне нужно напечатать ромбовидный узор, используя введенное слово.


Я изо всех сил пытаюсь понять, как сделать так, чтобы второй треугольник был перевернут вверх ногами, я думаю
Я понимаю концепцию того, как это сделать (просто сделайте код обычного треугольника, но в обратном порядке), но я борюсь с выполнением. Любая помощь будет очень признательна, так как я относительно новичок в c++.

What the code prints is this:
     
              S
             SAS
            SAMAS
           SAMPMAS
          SAMPLPMAS
         SAMPLELPMAS
              S
             SAS
            SAMAS
           SAMPMAS
          SAMPLPMAS
         SAMPLELPMAS

When it's supposed to print this:
`````
              S
             SAS
            SAMAS
           SAMPMAS
          SAMPLPMAS
         SAMPLELPMAS
          SAMPLPMAS
           SAMPMAS
            SAMAS
             SAS
              S


Что я уже пробовал:

#include <iostream>

using namespace std;
int main(){

string word;
int length, i, j;
cout<<"Enter a word: ";
cin>>word;

length=word.size();
if (word.size()>10){
    length=10;
}

for (i=0; i<length; i++){
    for (j=length-1-i; j>0; j--){
        cout<<" ";
    }
    for (j=0; j<=i; j++){
       cout<<word[j];
    }
    
    for (j=i-1;j>=0; j--){
        cout<<word[j];
    }
    
    cout<<endl;
}

for (i=0; i<length; i++){
    for (j=length-1-i; j>0; j--){ 
        cout<<" ";
    }

    for (j=0; j<=i; j++){ 
       cout<<word[j];
    }
   
    for (j=i-1;j>=0; j--){ 
        cout<<word[j];
    }
  
    cout<<endl;
}

return 0;
}

1 Ответов

Рейтинг:
2

Patrice T

Цитата:
Я понимаю концепцию того, как это сделать (просто сделайте код обычного треугольника, но в обратном порядке), но я борюсь с выполнением.

Во второй части,
for (i=0; i<length; i++){

вам нужно изменить порядок
for (i=length-1; i>=0; i--){

[Обновление]
Цитата:
Это сработало, но теперь средняя линия происходит дважды, Есть ли способ исправить это?

Затем удалить 1 сперва значение:
for (i=length-2; i>=0; i--){


Member 14843505

Это сработало, но теперь средняя линия происходит дважды, Есть ли способ исправить это?

Rick York

Конечно, есть. Это ваша домашняя работа, так что будет лучше, если вы ее исправите.

CPallini

5.

Patrice T

Спасибо