Cerință
Andreea se ocupă de aranjarea unei săli. De data aceasta trebuie să picteze pe pereți niște modele în formă de romb, însă nu crede că se va descurca decât dacă primește și schița digitalizată. Astfel, ea vă dă înălțimea rombului, iar voi va trebui să îl reprezentați.
Sarcina ta e să formezi un romb (după modelul din exemplu) cu înălțimea de lungime N și laturile formate din *.
Date de intrare
Se citește un singur număr natural N, înălțimea rombului.
Date de ieșire
Se vor afișa N linii, reprezentând "desenul" cerut.
Restricții
3 ≤ N ≤ 100
Se garantează că N este impar
Exemplu
Pentru n = 5 se va afișa

Răspunsuri la întrebare
Răspuns:
Explicație:
#include <iostream>
using namespace std;
int main()
{
int n,p=-1, i, j;
cin>>n;
for (i=1;i<=n/2+1;++i) {
for (j=1;j<=n/2+1-i;++j){
cout<<" ";
}
cout<<"*";
for (j=1;j<=p;++j){
cout<<" ";
}
if (p>0) { cout<<"*";}
p+=2;cout<<"\n";
}
p=n-3;
for (i=1; i<=n/2; ++i)
{
for (j=1; j<=i; ++j)
cout << " ";
cout << "*";
for (j=1;j<p;++j){
cout<<" ";
}
if (p>0) { cout<<"*";}
p-=2;cout<<"\n";
}
}
Răspuns pascal :
uses crt;
var
i, j, n: integer;
begin
clrscr;
readln(n);
for i := 1 to n do
if i mod 2 = 1 then
begin
for j := 1 to (n - i) div 2 do write(' ');
for j := 1 to i do write('*');
writeln;
end;
for i := n - 1 downto 1 do
if i mod 2 = 1 then
begin
for j := 1 to (n - i) div 2 do write(' ');
for j := 1 to i do write('*');
writeln;
end;
readln;
end.
var
i, j, n, k: byte;
begin
clrscr;
repeat
write('Lungimea diagonalei rombului n=');
readln(n);
until n in [1..23];
clrscr;
writeln('Rombul:');
k := n div 2 + 1;
for i := 1 to n do
begin
for j := 1 to n do
if((i <= k) and (j <= k) and (j > k - i))
or ((i <= k) and (j > k) and (j <= k + i - 1))
or ((i > k) and (j <= k) and (j >= i - k + 1))
or ((i > k) and (j > k) and (j <= n - i + k))
then
write('*') else write(' ');
writeln;
end;
readln
end.