Rombo di asterischi in c++

di il
2 risposte

Rombo di asterischi in c++

Buona sera, avrei bisogno di un parere o giudizio(vorrei sapere se il mio codice è troppo lungo ad esempio o se ci sono variabli che possono essere tolte) riguardo allo svolgimento del mio esercizio in c++:

Testo: Scrivere un programma che chiede all’utente un numero intero positivo n e stampa un rombo di asterischi che sulla diagonale
ha 2 n + 1 caratteri.

Questa è la mia soluzione fatta più veloce che potevo...:

#include <iostream>
using namespace std;
/*chiede all’utente un numero intero positivo n e stampa un rombo di asterischi che sulla diagonale
ha 2 * n + 1 caratteri*/
int main()
{
 unsigned int spazi, spazi1, n, m = 1;
 cout << "Inserisci un numero intero positivo: ";
 cin >> n;
 spazi = n;
 spazi1 = m;
 
 for (int i = 0;i <= n;++i)
 { 
  for (int h = spazi;h >= 0;--h)
  {
   cout << ' ';
  }
  --spazi;
  for (int j = 0;j < m;++j)
   {
    cout << '*';
   }
   m+=2;
   cout << "\n";
 }
 
  for (int i = 0;i <= n;++i)
  {
   for (int h = 0;h <= spazi1;++h)
   {
    cout << ' ';
   }
   ++spazi1;
   for (int j = (m-5);j >= 0;--j)
   {
    cout << '*';
   }
   m-=2;
   cout << "\n";
  }
  
 return 0;
}

2 Risposte

  • Re: Rombo di asterischi in c++

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int n = 7;
        for(int i = 0; i < 2 * n + 1; ++i)
        {
            int a = i < n ? n - i : i - n;//OPPURE a = (1 - 2 * (n < i)) * (n - i);
            for(int j = 0; j < a; ++j)
            {
                cout << ' ';
            }
            for(int j = 0; j < 2 * (n - a) + 1; ++j)
            {
                cout << '*';
            }
            cout << endl;
        }
    }
  • Re: Rombo di asterischi in c++

    Oppure in modo ancora più conciso:
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int n = 5;
        for(int i = 0; i < 2 * n + 1; ++i)
        {
            for(int j = 0, a = i < n ? n - i : i - n; j < 2 * n - a + 1; ++j)
            {
                cout << (j < a ? ' ' : '*');
            }
            cout << endl;
        }
    }
Devi accedere o registrarti per scrivere nel forum
2 risposte