Ласло Краус |
Програмски језици (ЕГ) Испит 12. 7. 2003. |
---|
Саставити на језику C потпрограм којим се из низа целих бројева изоставља свако појављивање најмањег и највећег елемента почетног низа.
Саставити на језику C главни програм који прочита низ целих бројева, позива горњи потпрограм, испише добијени резултат и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
Секвенцијална текстуална датотека о студентима за сваког студента у једном реду садржи име (низ од највише 30 знакова), број индекса (низ од највише 7 знакова), број оцена са испита (не већи од 50) и низ оцена. Саставити на језику C главни програм којим се у нову текстуалну датотеку уписују сви прочитани подаци о оним студентима којима је просек положених испита бар осам.
Саставити на језику FORTRAN потпрограм за премештање елемента низа реалних бројева са места са редним бројем p на место са редним бројем q. Aко је p<q, елементи од места p+1 до q се померају за по једно место ка почетку низа, a ако је p>q, елементи од места q до p-1 се померају за по једно место ка крају низа.
Саставити на језику FORTRAN главни програм који прочита низ реалних бројева и бројеве p и q, позива горњи потпрограм, испише добијени резултат и понавља претходне кораке све док за дужину низа или за бројеве p или q не прочита недозвољену вредност.
#include <stdio.h> #define N 100 void izost (int a[], int *n) { int i, min=a[0], max=a[0], j; for (i=1; i<*n; i++) if (a[i] < min) min = a[i]; else if (a[i] > max) max = a[i]; for (j=i=0; i<*n; i++) if (a[i]!=min && a[i]!=max) a[j++] = a[i]; *n = j; } main () { int a[N], i, n; while (1) { printf ("n? "); scanf ("%d", &n); if (n<=0 || n>N) break; printf ("A? "); for (i=0; i<=n; scanf("%d",&a[i++])); izost (a, &n); printf ("A="); for (i=0; i<n; printf(" %d",a[i++])); printf ("\n\n"); } }
#include <stdio.h> #define N 50 main () { int a[N], k, n, i, z; FILE *ul, *izl; char ime[31], ind[8]; ul = fopen ("studenti.txt", "r"); izl = fopen ("prosek8.txt", "w"); while (!feof(ul)) { fscanf (ul, "%s%s%d", ime, ind, &n); for (i=k=z=0; i<n; i++) { fscanf (ul, "%d", &a[i]); if (a[i] > 5) { z += a[i]; k++; } } if (k>0 && (float)z/k>=8) { fprintf (izl, "%s %s %d", ime, ind, n); for (i=0; i<n; fprintf(izl," %d",a[i++])); fprintf (izl, "\n"); } } fclose (ul); fclose (izl); }
SUBROUTINE Premesti(A, n, p, q) REAL A(n) INTEGER p, q b = A(p) IF (p .lt. q) THEN DO i = p, q-1 A(i) = A(i+1) END DO ELSE IF (p .gt. q) THEN DO i = p, q+1, -1 A(i) = A(i-1) END DO END IF A(q) = b END PROGRAM Premestanje PARAMETER (nmax = 20) REAL A(nmax) INTEGER p, q 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) PRINT *, 'p, q?' READ *, p, q IF (p.le.0 .or. p.gt.n .or. q.le.0 .or. q.gt.n) GO TO 99 CALL Premesti (A, n, p, q) PRINT *, 'A=' PRINT *, (A(i), i=1,n) GO TO 10 99 CONTINUE END(⇒ почетак)
Copyright © 2003, Laslo Kraus
Последња ревизија: 14.9.2003.