Ласло Краус |
Програмски језици (ЕГ) Испит 1. 7. 2002. |
|---|
Саставити на језику C потпрограм за уметање елемената уређеног низа реалних бројева у други уређени низ тако да низ и даље буде уређен. Оба низа су урђена по неопадајућем редоследу. Радити са два низа, без употребе помоћног низа.
Саставити на језику C главни програм који прочита два низа реалних бројева, позива горњи потпрограм, испише добијени резултат и понавља претходне кораке све док за дужину једног од низова не прочита недозвољену вредност.
Саставити на језику C главни програм којим се, заменом одговарајуће две колоне и одговарајуће две врсте, међусобно замене највећи и најмањи елемент правоугаоне целобројне матрице која не садржи два једнака елемента. Подаци о почетној матрици се налазе у секвенцијалној текстуалној датотеци (димензије матрице у првом реду, иза тога свака врста у засебном реду). Резултат треба уписати у другу секвенцијалну текстуалну датотеку.
Саставити на језику FORTRAN потпрограм за изостављање свих елемената реалног низа чије су вредности једнаки највећем или најмањем елементу почетног низа.
Саставити на језику FORTRAN главни програм који прочита низ реалних бројева, позива горњи потпрограм, испише добијени резултат и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
#include <stdio.h>
#define N 150
void fuzija (float a[], int *na, float b[], int nb ) {
int ia=*na-1, ib=nb-1, ic=((*na)+=nb)-1;
while (ia>=0 && ib>=0)
a[ic--] = (a[ia]>b[ib]) ? a[ia--] : b[ib--];
while (ib >= 0) a[ic--] = a[ib--];
}
main () {
float a[N], b[N]; int i, na, nb;
while (1) {
printf ("na, nb? "); scanf ("%d%d", &na, &nb);
if (na<0 || na>N || nb<0 || nb>N) break;
printf ("A? ");
for(i=0; i<na; scanf("%f",&a[i++]));
printf ("B? ");
for(i=0; i<nb; scanf("%f",&b[i++]));
fuzija (a, &na, b, nb);
printf ("A=");
for (i=0; i<na; printf("%.2f",&a[i++]));
putchar ('\n');
}
}
#include <stdio.h>
#define N 30
main () {
int i, j, m, n, a[N][N], min, max, imin, jmin, imax, jmax, b;
FILE *dat;
dat = fopen ("ulaz.txt", "r");
fscanf (dat, "%d%d", &m, &n);
for (i=0; i<m; i++)
for (j=0; j<n; fscanf(dat,"%d",&a[i][j++]));
fclose (dat);
min = max = a[0][0];
imin = jmin = imax = jmax = 0;
for (i=0; i<m; i++)
for (j=0; j<n; j++)
if (a[i][j] < min) {
min = a[i][j]; imin = i, jmin = j;
} else if (a[i][j] > max) {
max = a[i][j]; imax = i; jmax = j;
}
for (i=0; i<m; i++) {
b = a[i][jmin]; a[i][jmin] = a[i][jmax]; a[i][jmax] = b;
}
for (j=0; j<n; j++) {
b = a[imin][j]; a[imin][j] = a[imax][j]; a[imax][j] = b;
}
dat = fopen ("izlaz.txt", "w");
fprintf (dat, "%d %d\n", m, n);
for (i=0; i<m; i++) {
for (j=0; j<n; fprintf(dat,"%d ",a[i][j++]));
fputc ('\n', dat);
}
}
SUBROUTINE Izostavi (A, n)
REAL A(n), min, max
min = A(1)
max = A(1)
DO i = 2, n
IF (A(i).lt.min) min=A(i)
IF (A(i).gt.max) max=A(i)
END DO
j = 0
DO i = 1, n
IF (A(i).ne.min .and.
* A(i).ne.max ) THEN
j = j + 1
A(j) = A(i)
END IF
END DO
n = j
END
PROGRAM IzostT
PARAMETER (nmax = 20)
REAL A(nmax)
10 CONTINUE
PRINT *, 'n?'
READ *, n
IF(n.le.0 .or. n.gt.nmax) GO TO 99
PRINT *, 'A?'
READ *, (A(i), i=1,n)
CALL Izost (A, n)
PRINT *, 'A='
PRINT *, (A(i), i=1,n)
GO TO 10
99 CONTINUE
END
(⇒ почетак)
Copyright © 2002, Laslo Kraus
Последња ревизија: 30.9.2002.