Ласло Краус |
Програмски језици (ЕГ) Испит 11. 10. 2003. |
---|
Саставити на језику C потпрограм за одређивање броја појављивања појединих бројева у неуређеном низу целих бројева. Разултат су два низа: први садржи бројеве који се налазе у почетном низу, а други колико пута се ти бројеви појављују. На пример, за низ 3, 1, 6, 3, 4, 6, 2, 6 резултат су низови 3, 1, 6, 4, 2 и 2, 1, 3, 1, 1.
Саставити на језику C главни програм који прочита низ целих бројева, позове горњи потпрограм, испише добијене резултате и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
Саставити на језику C главни програм за израчунавање производа две правоугаоне матрице реалних бројева. Подаци о почетним матрицама се налазе у секвенцијалним текстуалним датотекама (по једна матрица у свакој датотеци: димензије у првом реду, иза тога свака врста у засебном реду). Резултат уписати у нову секвенцијалну текстуалну датотеку. Ако се димензије почетних матрица не слажу, исписати поруку о томе на главном излазу без стварања нове датотеке. Имена датотека читати преко главног улаза рачунара.
Велики позитивни цели бројеви представљају се у облику низова код којих сваки елемент садржи по једну децималну цифру. На почетку сваког броја, по потреби, могу да буду и цифре нулте вредности. Саставити на језику FORTRAN потпрограм за множење једног таквог броја једним обичним целим бројем.
Саставити на језику FORTRAN главни програм који прочита цео број n, помоћу горњег потпрограма израчунава n! у облику великог целог броја и исписује добијени резултат све док за n не прочита негативну вредност.
#include <stdio.h> #define N 100 void pojava (int a[], int m, int b[], int c[], int *n) { int i, j=0, k; for (i=0; i<m; i++) { for (k=0; k<j && a[i]!=b[k]; k++); if (k == j) { b[j] = a[i]; c[j++] = 1; } else c[k]++; } *n = j; } main () { int a[N], b[N], c[N], m, n, i; while (1) { printf ("\nm? "); scanf ("%d", &m); if (m<=0 || m>N) break; printf ("A? "); for (i=0; i<=m; scanf("%d",&a[i++])); pojava (a, m, b, c, &n); for (i=0; i<n; i++) printf("%4d %2d\n", b[i], c[i]); } }
#include <stdio.h> #define N 50 main () { float a[N][N], b[N][N], c[N][N]; int ma, na, mb, nb, mc, nc, i, j, k; FILE *dat; char ime[31]; printf ("Ulaz A? "); scanf ("%s", ime); dat = fopen (ime, "r"); fscanf (dat, "%d%d", &ma, &na); for (i=0; i<ma; i++) for (j=0; j<na; fscanf(dat,"%d",&a[i][j++])); fclose (dat); printf ("Ulaz B? "); scanf ("%s", ime); dat = fopen (ime, "r"); fscanf (dat, "%d%d", &mb, &nb); for (i=0; i<mb; i++) for (j=0; j<nb; fscanf(dat,"%d",&b[i][j++])); fclose (dat); if (na == mb) { mc = ma; nc = nb; for (i=0; i<ma; i++) for (k=0; k<nb; k++) { c[i][k] = 0; for (j=0; j<na; j++) c[i][k] += a[i][j] * b[j][k]; } printf ("Izlaz? "); scanf ("%s",ime); dat = fopen (ime, "w"); fprintf (dat, "%d %d\n", mc, nc); for (i=0; i<mc; i++) { for (j=0; j<nc; fprintf(dat,"%d ",c[i][j++])); fprintf (dat, "\n"); } fclose (dat); } else printf ("Neusaglasene dimenzije!\n"); }
SUBROUTINE mnozi (A, n, b) INTEGER A(n), b, p p = 0; DO i = n, 1, -1 p = A(i) * b + p A(i) = mod (p, 10) p = p / 10 END DO END PROGRAM Faktorijel PARAMETER (max = 40) INTEGER A(max) 10 CONTINUE PRINT *, 'n?' READ *, n IF (n.lt.0) GO TO 99 DO i = 1, max-1 A(i) = 0 END DO A(max) = 1 DO i = 2, n mnozi (A, n, i) END DO PRINT '1X,40I1', (A(i),i=1,n) GO TO 10 99 CONTINUE END(⇒ почетак)
Copyright © 2004, Laslo Kraus
Последња ревизија: 15.02.2004.