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