Ласло Краус |
Програмски језици (ЕГ) Испит 14. 2. 2003. |
---|
Саставити на језику C потпрограм за изостављање свих елемената реалног низа чије апсолутне вредности одступају мање oд 20% oд апсолутне вредности аритметичке средине почетног низа.
Саставити на језику C главни програм који прочита низ реалних бројева, позива горњи потпрограм, испише добијени резултат и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
У секвенцијалној текстуалној датотеци у сваком реду се налази један цео број n и n+1 реалних бројева. Први реални број представља укупно задужење за претходну годину за неког потрошача електричне енергије, a осталих n реалних бројева представљају рате које је он уплатио (n<13).
Саставити на језику C главни програм, који у нову секвенцијалну текстуалну датотеку упише у посебном реду за сваког потрошачa вредност обрачуна, која је негативна и без камате ако се новац враћа потрошачу, a позитивна и са каматoм oд 15% на разлику, ако je потрошач платио мање од задужења. Име улазне датотека je ulaz.txt
, а излазне izlaz.txt
.
Саставити на језику FORTRAN потпрограм за разврставање свих елемената целобројног низа у два низа, тако да у првом низу буду сви елементи који нису дељиви ни са једним од бројева од 2 од 10, a у другом низу сви остали елементи.
Саставити на језику FORTRAN главни програм који прочита целобројни низ, позива горњи потпрограм, испише добијене низове и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
#include <stdio.h> #include <math.h> #define N 50 void izost (float a[], int *n) { float sum=0; int i,k=0; for (i=0; i<*n; i++) sum+=a[i]; sum=abs(sum/(*n)); for (i=0; i<*n; i++) if (fabs(a[i])<=0.8*sum || fabs(a[i])>=1.2*sum ) a[k++]=a[i]; *n = k; } main () { float a[N]; int i,n; while (1) { printf ("n? "); scanf ("%d", &n); if (n<=0 || n>N) break; printf ("A? "); for (i=0; i<n; scanf("%f",&a[i++])); izost(a,&n); printf ("A="); for (i=0; i<n; printf(" %f",a[i++])); printf ("\n\n"); } }
#include <stdio.h> #define N 12 main () { float zaduz, uplata[N], placeno; int i, n; FILE *datu, *dati; datu = fopen ("ulaz.txt", "r"); dati = fopen ("izlaz.txt", "w"); while (1) { if(fscanf(datu,"%d%f",&n,&zaduz)==EOF) break; placeno=0; for (i=0; i<n; i++) { fscanf (datu,"%f",&uplata[i]); placeno+=uplata[i]; } zaduz-=placeno; if (zaduz>0) zaduz*=1.15; fprintf (dati, "%f", zaduz); fputc('\n', dati); } fclose (datu); fclose (dati); }
SUBROUTINE Razv(A, n, B, m, C, k) REAL A(n), B(m), C(k) m = 0 k = 0 DO i = 1, n IF (mod(A(i),2).EQ.0 * OR mod(A(i),3).EQ.0 * OR mod(A(i),5).EQ.0 * OR mod(A(i),7).EQ.0) THEN k=k+1 C(k)=A(i) ELSE m=m+1 B(m)=A(i) END IF END DO END PROGRAM Razvrstavanje PARAMETER (nmax = 20) REAL A(nmax), B(nmax), C(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) CALL Razv (A, n, B, m, C, k) PRINT *, 'B=' PRINT *, (B(i), i=1,m) PRINT *, 'C=' PRINT *, (C(i), i=1,k) GO TO 10 99 CONTINUE END(⇒ почетак)
Copyright © 2003, Laslo Kraus
Последња ревизија: 2.3.2003.