Ласло Краус |
Програмски језици (ЕГ) Испит 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.