Ласло Краус |
Програмски језици (ЕГ) Испит 13. 9. 2002. |
---|
Саставити на језику C потпрограм за формирање уније два скупа реалних бројева. Унија два скупа садржи све елементе који се налазе у првом или у другом скупу.
Саставити на језику C главни програм који чита прочита два скупа, нађе њихову унију, испише добијени резултат и понавља претходне кораке све док за број елемената једног скупа не прочитра недозвољену вредност.
Саставити на језику C главни програм којим се врши међусобна замена колоне правоугаоне матрице целих бројева у којој је збир елемената највећи и колоне у којој је збир елемената најмањи. Ако више колона имају исти највећи збир елемената, одабрати међу њима колону са најмањим редним бројем. Ако више колона имају исти најмањи збир елемената, одабрати међу њима колону са највећим редним бројем. Подаци о почетној матрици се налазе у секвенцијалној текстуалној датотеци (димензије матрице у првом реду, иза тога свака врста у засебном реду). Резултат треба уписати у другу секвенцијалну текстуалну датотеку. Имена датотека читати преко главног улаза рачунара.
Саставити на језику FORTRAN потпрограм за претварање низа реалних бројева (који могу да садрже и међусобно једнаке елементе) у скуп (у коме су сви елементи међусобно различити).
Саставити на језику FORTRAN главни програм који прочита низ реалних бројева, позива горњи потпрограм, испише добијени резултат и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
#include <stdio.h> #define N 50 void unija (float s1[], int n1, float s2[], int n2, float s3[], int *n3) { int i, j, k=n1; for (i=0; i<n1; i++) s3[i] = s1[i]; for (j=0; j<n2; j++) { for(i=0; i<n1&&s1[i]!=s2[j]; i++); if (i == n1) s3[k++] = s1[i]; } *n3 = k; } void main () { float s1[N], s2[N], s3[N]; int n1, n2, n3, i; while (1) { printf ("n1, n2? "); scanf ("%d%d", &n1, &n2); if (n1<0 || n1>N || n2<0 || n2>N) break; printf ("s1? "); for (i=0; i<n1; scanf("%f",&s1[i++])); printf ("s2? "); for (i=0; i<n2; scanf("%f",&s2[i++])); unija (s1,n1,s2,n2,s3,&n3); printf ("s3= "); for (i=0; i<n3; printf("%.2f ",s3[i++])); putchar ('\n'); } }
#include <stdio.h> #define N 30 main () { int i, j, m, n, a[N][N], min, max, jmin, jmax, b; FILE *dat; char ime[30]; printf ("Ulaz? "); scanf ("%s", ime); dat = fopen (ime, "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); for (b=i=0; i<m; b+=a[i++]); min = max = b; jmin = jmax = 0; for (j=1; j<n; j++) { for (b=i=0; i<m; b+=a[i++][j]); if (b <= min) { min = b; jmin = j; } else if (b > max) { max = b; jmax = j; } } for (i=0; i<m; i++) { b = a[i][jmin]; a[i][jmin] = a[i][jmax]; a[i][jmax] = 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; fprintf(dat,"%d ",a[i][j++])); fputc ('\n', dat); } }
SUBROUTINE USkup (A, n) REAL A(n) j = 0; DO i = 1, n k = 1; DO WHILE (k.le.j .and. A(i).ne.A(k)) k = k + 1 END DO IF (k .gt. j) THEN j = j + 1 A(j) = A(i) END IF END DO n = j END PROGRAM USkupT 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) USkup (A, n) PRINT *, 'A=' PRINT *, (A(i), i=1,n) GO TO 10 99 CONTINUE END(⇒ почетак)
Copyright © 2003, Laslo Kraus
Последња ревизија: 20.2.2003.