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