+Stefan Posted May 7, 2018 Report Posted May 7, 2018 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; }
Moderators Courage Posted May 8, 2018 Moderators Report Posted May 8, 2018 11 hours ago, Stefan said: Hide contents //Construim capul for(i=1;i<=n;i++) for(j=1;j<=n;j++) //Daca s-a gasit pozitia capului, punem un X if(i==y && j==x) M[i][j]='X'; Asta nu-i echivalent cu M[y][x] = 'X'; ? 1
+Stefan Posted May 8, 2018 Author Report Posted May 8, 2018 Ups, mersi de observatie, chiar nu stiu de ce am facut cu for:-??
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now