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