Ласло Краус |
Програмски језици (ЕГ) Испит 14. 2. 2004. |
---|
Саставити на језику C функцију за изостављање сваког k-тог елемента из низа целих бројева. На пример, изостављањем сваког трећег елемента из низа 1, 2, 3, 4, 5, 6, 7, 8 добија се низ 1, 2, 4, 5, 7, 8.
Саставити на језику C главни програм који прочита низ целих бројева, позове горњу функцију, испише добијене резултате и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност. Низ стваљати у динамичку зону меморије (без динамичке доделе меморије задатак вреди 22 поена).
Саставити на језику C главни програм за израчунавање производа две симетричне квадратне матрице реалних бројева (за сваки елемент важи да је aij=aji). Подаци о почетним матрицама се налазе у секвенцијалним текстуалним датотекама. У првом реду се налази димензија матрице, а у преосталим редовима по једна врсте матрице. У датотеци се налазе само елементи на главној дијагонали и испод главне дијагонале (за које важи i>=j). Резултат уписати у нову секвенцијалну текстуалну датотеку по узору на почетне матрице. Ако се димензије почетних матрица не слажу, исписати поруку о томе на главном излазу без стварања нове датотеке. Имена датотека читати преко главног улаза рачунара.
Саставити на језику FORTRAN потпрограм за налажење првог и последњег појављивања датог броја у уређеном низу реалних бројева. Применити поступак бинарног претраживања. У случају неуспеха оба резултата треба да буду једнаки нули.
Саставити на језику FORTRAN главни програм који прочита потребне податке, позове горњи потпрограм, испише добијене резултате и понавља претходне кораке се док за дужину низа не прочита недозвољену вредност.
#include <stdio.h> #include <stdlib.h> void izost (int a[], int *n, int k) { int i, j=0; for (i=0; i<m; i++) if (i%k != k-1) a[j++] = a[i]; *n = j; } main () { int *a, n, i; while (1) { printf ("\nn? "); scanf ("%d", &n); if (n<=0) break; a = malloc (n * sizeof(int)); printf ("A? "); for (i=0; i<=m; scanf("%d",&a[i++])); printf ("k? "); scanf ("%d", &k); izost (a, &n, k); for (i=0; i<n; printf("%d ", a[i++]); putchar ('\n'); free (a); } }
#include <stdio.h> #define N 50 main () { float a[N][N], b[N][N], c[N][N]; int na, nb, nc, i, j, k; FILE *dat; char ime[31]; printf ("Ulaz A? "); scanf ("%s", ime); dat = fopen (ime, "r"); fscanf (dat, "%d", &na); for (i=0; i<na; i++) for (j=0; j<=i; fscanf(dat,"%d",&a[i][j++])); fclose (dat); printf ("Ulaz B? "); scanf ("%s", ime); dat = fopen (ime, "r"); fscanf (dat, "%d", &nb); for (i=0; i<nb; i++) for (j=0; j<=i; fscanf(dat,"%d",&b[i][j++])); fclose (dat); if (na == nb) { nc = na; for (i=0; i<na; i++) for (k=0; k<=i; k++) { c[i][k] = 0; for (j=0; j<na; j++) c[i][k] += (i>j?a[i][j]:a[j][i]) * (j>k?b[j][k]:b[k][j]); } printf ("Izlaz? "); scanf ("%s",ime); dat = fopen (ime, "w"); fprintf (dat, "%d\n", nc); for (i=0; i<nc; i++) { for (j=0; j<=i; fprintf(dat,"%d ",c[i][j++])); fprintf (dat, "\n"); } fclose (dat); } else printf ("Neusaglasene dimenzije!\n"); }
SUBROUTINE bintra (A, n, b, p, q) INTEGER A(n), b, p, q, d, g, s LOGICAL ima d = 1 g = n ima = .false. DO WHILE (d.le.g .and. .not. ima) s = (d + g) / 2 if (a(i) .gt. b) THEN d = s + 1 ELSE IF (a(i) .lt. b) THEN g = s - 1 ELSE ima = .true. END IF END DO IF (ima) THEN p = s DO WHILE (p.gt.1 .and. a(p-1).eq.b) p = p - 1 END DO q = s DO WHILE (q.lt.n .and. a(q+1).eq.b) q = q + 1 END DO ELSE p = 0 q = 0 END IF END PROGRAM Trazi PARAMETER (max = 40) INTEGER A(max), b, p, q 10 CONTINUE PRINT *, 'n?' READ *, n IF (n.lt.0) GO TO 99 PRINT *, 'A?' READ *, (a(i), i=1,n) PRINT *, 'b?' READ *, b bintra (a, n, b, p, q) IF (p .gt. 0) THEN PRINT *, p, q ELSE PRINT *, 'Nema broja!' END IF GO TO 10 99 CONTINUE END(⇒ почетак)
Copyright © 2004, Laslo Kraus
Последња ревизија: 14.3.2004.