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