Wypisanie rombu w ASCII

Odpowiedz Nowy wątek
2019-11-07 10:49
0

Witam, mam zadanie które polega na zbudowaniu amuletu i po wielu próbach udało mi się stworzyć program w którym wszystko działa oprócz dla liczb parzystych wyskakuje za dużo kropek i nie mogę dojść dlaczego. Proszę o mała pomoc :)

petla for.png

#include <iostream>

using namespace std;

int main()
{
    int n, i, j;
    cin >> n;

    if (n % 2 == 0)
        i = 1;
    else
        i = 0;

    for (i = 0; i < n / 2 + 1; i++) {
        for (j = 0; j < n / 2 - i; j++)
            cout << ".";
        for (j = n / 2 - i; j < (n + 1) / 2 + i; j++)
            cout << "X";
        for (j = (n + 1) / 2 + i; j < n; j++)
            cout << ".";
        cout << endl;
    }
    for (i = n / 2; i > 1 / 2 - 1; i--) {
        for (j = 0; j < n / 2 - i; j++)
            cout << ".";
        for (j = n / 2 - i; j < (n + 1) / 2 + i; j++)
            cout << "X";
        for (j = (n + 1) / 2 + i; j < n; j++)
            cout << ".";
        cout << endl;
    }
    return 0;
}
edytowany 3x, ostatnio: kq, 2019-11-07 11:40
kod umieszczamy w znacznikach ``` np. ```cpp <twój kod> ``` - superdurszlak 2019-11-07 10:54
Hej! Twój post prawdopodobnie zawiera niesformatowany kod. Użyj znaczników ``` aby oznaczyć, co jest kodem, będzie łatwiej czytać. (jestem botem, ta akcja została wykonana automatycznie, prawdopodobieństwo 0.99968517) - Tasmanian Devil 2019-11-07 11:00
strasznie to irytujące, jak ludzie dołączają tekst jako zdjęcie/screenshot. Na pocieszenie przynajmniej tyle, że nie chodzi o kod, tylko treść zadania. - MarekR22 2019-11-07 11:02

Pozostało 580 znaków

2019-11-07 11:03
1

i < n / 2 + 1
albo
i > 1 / 2 - 1
WTF?

edytowany 1x, ostatnio: szweszwe, 2019-11-07 11:03

Pozostało 580 znaków

2019-11-07 11:22
0

przepraszam za blad bo kombinowałam tutaj bardziej poprawne:


#include <iostream>

using namespace std;

int main()
{
int n,i,j;
cin >> n;

if(n%2==0)
    i=1;
else
    i=0;

for( i; i<n/2+1; i++)
{
    for(j=0; j<n/2-i; j++)
        cout << ".";
    for(j=n/2-i; j<(n+1)/2+i; j++)
        cout << "X";
    for(j=(n+1)/2+i; j<n; j++)
        cout << ".";
        cout << endl;
}
for( i=n/2; i>0; i--)
{
    for(j=0; j<n/2-i; j++)
        cout << ".";
    for(j=n/2-i; j<(n+1)/2+i; j++)
        cout << "X";
    for(j=(n+1)/2+i; j<n; j++)
        cout << ".";
        cout << endl;
}
    return 0;
}
```cpp
edytowany 1x, ostatnio: cerrato, 2019-11-07 11:34
Wstawiaj ten kod w znaczniki! - szweszwe 2019-11-07 11:29
Hej! Twój post prawdopodobnie zawiera niesformatowany kod. Użyj znaczników ``` aby oznaczyć, co jest kodem, będzie łatwiej czytać. (jestem botem, ta akcja została wykonana automatycznie, prawdopodobieństwo 0.99967223) - Tasmanian Devil 2019-11-07 11:31
używanie znaczników nie jest trudne, naprawdę - superdurszlak 2019-11-07 11:32
@Monika Kuźmińska: proszę, zastosuj się do tego co pisał @superdurszlak i wstawiaj kod w odpowiednie znaczniki. Jak będziesz dalej tak olewać formatowanie, to kolejne wpisy/wątki polecą do kosza. - cerrato 2019-11-07 11:38

Pozostało 580 znaków

2019-11-07 11:34
0

Sformatowany kod z kolorowaniem składni (użyj cytuj by zobaczyć jak):

#include <iostream>

using namespace std;

int main()
{
    int n, i, j;
    cin >> n;

    if (n % 2 == 0)
        i = 1;
    else
        i = 0;

    for (i; i < n / 2 + 1; i++) {
        for (j = 0; j < n / 2 - i; j++)
            cout << ".";
        for (j = n / 2 - i; j < (n + 1) / 2 + i; j++)
            cout << "X";
        for (j = (n + 1) / 2 + i; j < n; j++)
            cout << ".";
        cout << endl;
    }
    for (i = n / 2; i > 0; i--) {
        for (j = 0; j < n / 2 - i; j++)
            cout << ".";
        for (j = n / 2 - i; j < (n + 1) / 2 + i; j++)
            cout << "X";
        for (j = (n + 1) / 2 + i; j < n; j++)
            cout << ".";
        cout << endl;
    }
    return 0;
}

Po uruchomieniu wygląda na to, że działa (trzeba naprawić warrning): https://wandbox.org/permlink/V9M9eOBzERdhxTEu https://wandbox.org/permlink/2GuPDxOwpgtotZQC


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22, 2019-11-07 11:35

Pozostało 580 znaków

2019-11-07 11:49
0
#include <iostream>

using namespace std;

int main()
{
int n,i,j;
cin >> n;

if(n%2==0)
    i=1;
else
    i=0;

for( i; i<n/2+1; i++)
{
    for(j=0; j<n/2-i; j++)
        cout << ".";
    for(j=n/2-i; j<(n+1)/2+i; j++)
        cout << "X";
    for(j=(n+1)/2+i; j<n; j++)
        cout << ".";
        cout << endl;
}
for( i=n/2; i>0; i--)
{
    for(j=0; j<n/2-i; j++)
        cout << ".";
    for(j=n/2-i; j<(n+1)/2+i; j++)
        cout << "X";
    for(j=(n+1)/2+i; j<n; j++)
        cout << ".";
        cout << endl;
}
    return 0;
}

czy tak jest poprawnie?

Pozostało 580 znaków

2019-11-07 15:13
0

Ale zakręcone! Nie da się po ludzku?

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    for(int N=n<<1,y=1;y<=N;y+=2,cout<<endl) for(int x=1;x<=N;x+=2) cout<<((abs(y-n)+abs(x-n))<=n?'#':'.');
    return 0;
}

https://ideone.com/ClBv8n


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
coś Ci się formatowanie rozjechało, spróbuj tak: #include <iostream>using namespace std;int main(){int n;cin>>n;for(int N=n<<1,y=1;y<=N;y+=2,cout<<endl) for(int x=1;x<=N;x+=2) cout<<((abs(y-n)+abs(x-n))<=n?'#':'.');return 0;} - WeiXiao 2019-11-08 18:38
Nic się nie rozjechało, to jednowierszowiec :D - _13th_Dragon 2019-11-08 18:39
thats the joke!!! - WeiXiao 2019-11-08 18:40
Nie, przecież działa, ale prowadzącemu tego kodu nie pokaże :D - _13th_Dragon 2019-11-08 18:40

Pozostało 580 znaków

2019-11-08 17:09
1

https://wandbox.org/permlink/UONAJRFpi0gLJtBK

std::ostream& printDimond(std::ostream& out, size_t size, char fill='X', char space='.', char endline = '\n')
{
    for (size_t spaceCount = (size - 1) / 2; spaceCount > 0; --spaceCount) {
        auto spaces = std::string(spaceCount, space);
        out << spaces << std::string(size - 2 * spaceCount, fill) << spaces << endline;
    }
    if (size % 2 == 0) {
        out << std::string(size, fill) << endline;   
    }
    for (size_t spaceCount = 0; spaceCount < (size + 1) / 2; ++spaceCount) {
        auto spaces = std::string(spaceCount, space);
        out << spaces << std::string(size - spaceCount * 2, fill) << spaces << endline;
    }

    return out;
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22, 2019-11-08 18:37
Wiesz że za jakiś czas to zniknie z wandbox'a? - _13th_Dragon 2019-11-08 18:29
jeszcze nic mi z wandboxa nie znikło. Jaki mają limit? - MarekR22 2019-11-08 18:34
Tego nie wiem, ale na 100% zniknęła mi jedna wstawka z przed 7 lat. Więc teraz przeszedłem na ideone i na wszelki wypadek wklejam również na forum. - _13th_Dragon 2019-11-08 18:35
Najstarszy mój link jaki namierzyłem ma 2 lata. - MarekR22 2019-11-08 18:36
To co za 5 lat będziesz łazić po forum w poszukiwaniu swoich postów z linkiem do wandbox i wklejać kod? - _13th_Dragon 2019-11-08 18:38

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0