Ласло Краус |
Програмски језици (ЕГ) Испит 13. 3. 2004. |
---|
Саставити на језику C функцију за уметање низа целих бројева испред k-тог елемента другог низа целих бројева. Вредност функције треба да је индикатор успеха. Операција је неуспешна ако је k изван дозвољених граница (мања од нуле или већа од дужине одредишног низа).
Саставити на језику C главни програм који прочита два низа целих бројева, позове горњу функцију, испише добијене резултате и понавља претходне кораке све док за дужину једног од низова не прочита недозвољену вредност.
Саставити на језику C главни програм за израчунавање збира елемената изнад, на и испод главне дијагонале квадратне матрице реалних бројева (резултат су три броја). Подаци о матрици се налазе у секвенцијалној текстуалној датотеци. У првом реду се налазе димензије матрице, а у преосталим редовима по једна врстa матрице. Програм треба да прочита име матрице преко главног улаза, изврши тражену обраду, испише добијене резултате на главном излазу и понавља претходне кораке све док уместо имена матрице прочита једну звездицу (*).
Саставити на језику FORTRAN потпрограм за израчунавање збирова елемената целобројног низа који при дељењу са k дају исте остатке (резултат је низ од k елемената). На пример, за низ 8, 1, 3, 2, 5, 7, 4, 6 при k=3 резултат је низ 9, 12, 15 (3+6, 1+7+4, 8+2+5).
Саставити на језику FORTRAN главни програм који прочита потребне податке, позове горњи потпрограм, испише добијене резултате и понавља претходне кораке се док за дужину низа не прочита недозвољену вредност.
#include <stdio.h> #include <stdlib.h> #define N 50 int umet (int a[], int *m, int b[], int n, int k) { int i, j=0; if (k<0 || k>*n) return 0; for (i=m-1; i>=k; i--) a[i+n] = a[i]; for (i=0; i<n, i++) a[k+i] = b[i]; *m += n; return 1; } main () { int a[2*N], b[N], m, n, i; while (1) { printf ("\nm? "); scanf ("%d", &m); if (m<0 || m>2*N) break; printf ("A? "); for (i=0; i<m; scanf("%d",&a[i++])); printf ("\nn? "); scanf ("%d", &n); if (n<0 || n>N) break; printf ("B? "); for (i=0; i<n; scanf("%d",&b[i++])); printf ("k? "); scanf ("%d", &k); if (umet (a, &m, b, n, k)) { printf ("A= "); for (i=0;i<m; printf("%d ",a[i++]); putchar ('\n'); } else printf ("*** Nedozvoljeno k!\n"); } }
#include <stdio.h> #define N 50 main () { float a[N][N], ispod, na, iznad; int n, i, j; FILE *dat; char ime[31]; while (1) { printf ("Ulaz A? "); scanf ("%s", ime); if (ime[0] == '*') break; dat = fopen (ime, "r"); fscanf (dat, "%d", &n); for (i=0; i<n; i++) for (j=0; j<n; j++) fscanf(dat,"%d",&a[i][j]); fclose (dat); ispod = na = iznad = 0; for (i=0; i<n; i++) for (j=0; j<n; j++) if (i > j) ispod += a[i][j]; else if (i < j) iznad += a[i][j]; else na += a[i][j]; printf ("ispod= %f\n, ispod); printf ("na = %f\n, na ); printf ("iznad= %f\n, iznad); } }
SUBROUTINE Zbir (A, n, B, k) INTEGER A(n), B(k) DO i = 1, k B(i) = 0 END DO DO i = 1, n j = mod (A(i), k) + 1 B(j) = B(j) + A(i) END DO END PROGRAM Radi PARAMETER (max = 40) INTEGER A(max), B(max) 10 CONTINUE PRINT *, 'n?' READ *, n IF (n.lt.0 .or. n.gt.max) GO TO 99 PRINT *, 'A?' READ *, (a(i), i=1,n) PRINT *, 'k?' READ *, k zbir (a, n, b, k) PRINT *, 'B=' PRINT *, (B(i), i=1,k) GO TO 10 99 CONTINUE END(⇒ почетак)
Copyright © 2004, Laslo Kraus
Последња ревизија: 6.7.2004.