Numim tablou spirală un tablou bidimensional T, cu N linii şi N coloane (N număr natural impar, N>2) construit asfel:
T[1][N/2+1] = 1, apoi fiecare din elementele aflate pe diagonală-jos, către EST, primesc valorile 2, 3,, până când se completează elementul de pe ultima coloană
Se continuă numerotarea cu elementele aflate în diagonală-jos către SUD, până când se completează elementul de pe ultima linie
Se continuă numerotarea cu elementele aflate în diagonală-sus către VEST, până când se completează elementul de pe prima coloană
Se continuă numerotarea cu elementele aflate în diagonală-sus către NORD, până când se completează elementul de pe prima linie, deja completat cu 1, care nu va fi modificat. Se completează astfel un romb.
Repetăm acelaşi procedeu, pornind din T[2][N/2+1] şi numerotând rombul aflat în interiorul rombului anterior, până ce ajungem să completăm elementul T[N/2+1][N/2+1]
Elementele rămase trebuie să fie egale cu zero.
a) Scrieţi un program C/C++, care citeste din fişierul spirala.in un număr natural impar N>2, determină şi afişează în fişierul spirala.out numărul valorilor nenule dintr-un tablou spirală cu N linii şi N coloane, fără a construi efectiv tabloul.
b) Scrieţi un program C/C++, care citeste de la tastatură un număr natural impar N (N>2), construieste în memorie si afisează pe ecran un tablou spirală cu N linii.
Va multumesc!
La primul punct, citesti fiecare element din fisier si numeri cate elemente sunt nenule. Deci nu memorezi ce citesti in matrice, ci pur si simplu citesti intr-o variabila.
Asta daca lucrezi cu stream-uri.
La b ai regula de generare in enunt.
Domnu` Pollux ceva de timpi si de complexitate dorita se zice… sau ne apucam sa reinventam roata…? Nu de alta dar nu vreau sa las frau liber imaginatiei😀