Jump to content

Creare avion c++


Stefan

Recommended Posts

Am avut de rezolvat o problema interesanta (zic eu) si la care nu am vazut nicio rezolvare pe google, s-ar mai putea imbunatati ceva?

5*.Implementați un program care citește din DATE.IN de pe prima linie un număr natural n iar de pe a doua linie, două numere naturale x și y (cu 1<=x<=n și 1<=y<=n). Programul va crea și va salva în fișierul REZULTAT.OUT o matrice pătratică de n x n elemente în care x și y reprezintă coordonatele capului unui avion; toate componentele avionului vor fi marcate cu X iar restul elementelor din matrice cu 0. Se știe că sub capul avionului aripile sunt unite în mod simetric pe 5 elemente, mai urmează în jos un element iar sub acel element coada avionului care este simetrică față de axă și formată din 3 elemente.
Dacă nu este posibilă construirea unui avion atunci se va scrie în fișier “NU ESTE POSIBIL”.
Ex: dacă x=3, y=1 și n=5 atunci soluția salvată în fișier va fi:

https://imgur.com/a/WPeheYL
 

Spoiler

#include <iostream>
#include <fstream>
using namespace std;
int n,x,y,i,j;
char M[10][10];
ifstream f("date.in");
ofstream g("rezultat.out");
int main()
{
    //Citim din fisier n,x si y
    f>>n>>x>>y;

    //Conditii ca avionul sa se incadreze in matrice
    //n<5, nu s-ar putea creea avionul neavand loc in matrice
    //y<1, capul avionului ar iesi din matrice (in sus)
    //x<3, aripile avionului ar iesi din matrice (in stanga)
    //x+2>n, aripile avionului ar iesi din matrice (in dreapta)
    //y+3>n, coada avionului ar iesi din matrice (in jos)

    if(n<5 || y<1 || y+3>n || x<3 || x+2>n)
        g<<"NU ESTE POSIBIL!";
    else{
        //Facem toata matricea 0
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                M[i][j]='0';

        //Construim capul
       	M[y][x] = 'X';

        //Construim aripile
        //y+1 = o pozitie mai jos de cap
        //pornim cu j de la x-2 (2 pozitii in stanga) pana la x+2 (2 pozitii in dreapta)
        for(j=x-2;j<=x+2;j++)
            M[y+1][j]='X';

        //Construim elementul de sub aripa
        //Punem 'X' cu 2 pozitii mai jos de cap (y+2)
        //M[y+2][x], x = pozitia capului
        M[y+2][x]='X';

        //Constuim coada
        //y+3 = cu 3 pozitii mai jos de cap
        //pornim cu j de la x-1 (o pozitie in stanga) pana la x+1 (o pozitie in dreapta)
        for(j=x-1;j<=x+1;j++)
			M[y+3][j]='X';

        //Afisam matricea in fisier
        for(i=1;i<=n;i++){
            for(j=1;j<=n;j++)
                g<<M[i][j]<<" ";
            g<<'\n';
        }
    }


    //Inchidem fisierele
    f.close();
    g.close();
    return 0;
}

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.