Cum se scrie un program C pentru a parcurge spirală în limbajul de programare C ?
Solution:
- #include <stdio.h>
- void spirala(int a[][100], int m, int n, int v[])
- {
- int i = 0, j = 0, c = 0, k = 0, i1, j1;
- while(k < m * n)
- {
- for(i1 = i; i1 < n - i; i1++)
- {
- v[k] = a[i1][j];
- k++;
- }
- for(j1 = j + 1; j1 < m - j; j1++)
- {
- v[k] = a[n - i - 1][j1];
- k++;
- }
- for(i1 = n - i - 2; i1 >= i; i1--)
- {
- v[k] = a[i1][m - j - 1];
- k++;
- }
- for(j1 = m - j - 2; j1 >= j+1; j1--)
- {
- v[k] = a[i][j1];
- k++;
- }
- i++;
- j++;
- }
- }
- void afisare(int v[], int dim)
- {
- int i;
- for(i=0;i<dim;i++)
- {
- printf("%d ", v[i]);
- }
- printf("\n");
- }
- int main()
- {
- int n, m, a[100][100], v[10000], i, j, dim;
- scanf("%d %d", &n, &m);
- for(i=0;i<n;i++)
- {
- for(j=0;j<m;j++)
- {
- scanf("%d", &a[i][j]);
- }
- }
- spirala(a, m, n, v);
- dim = n*m;
- afisare(v, dim);
- return 0;
- }