Elektrotehnicki fakultet, Beograd  Ласло Краус Програмски језици (ЕГ)
Испит
11. 10. 2002.

Задаци: 1 2 3 | Напомене | Решења: 1 2 3

Поставка задатка 1 (25 поена) ( решење | почетак)

Саставити на језику C потпрограм за налажење места првог и последњег појављивања највећег елемента у датом неуређеном низу целих бројева.

Саставити на језику C главни програм који чита прочита низ бројева, позове горњи потпрограм, испише добијене резултате и понавља претходне кораке све док за број елемената низа не прочитра недозвољену вредност.

Поставка задатка 2 (25 поена) ( решење | почетак)

Саставити на језику C главни програм којим се врши нормирање матрице реалних бројева множећи сваки елемент матрице истим бројем тако да збир апсолутних вредности елемената нормиране матрице буде 1. Подаци о почетној матрици се налазе у секвенцијалној текстуалној датотеци (димензије матрице у првом реду, иза тога свака врста у засебном реду). Резултат треба уписати у другу секвенцијалну текстуалну датотеку. Имена датотека читати преко главног улаза рачунара.

Поставка задатка 3 (30 поена) ( решење | почетак)

Саставити на језику FORTRAN потпрограм за одређивање бројева елемената у целобројном низу који при дељењу са целим бројем k дају остатке 0, 1, ..., k-1 (резултат је низ од k вредности).

Саставити на језику FORTRAN главни програм који прочита низ целих бројева, прочита број k, позива горњи потпрограм, испише добијени резултат и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.


Напомене ( почетак)


Решење задатка 1 ( поставка | почетак)

#include <stdio.h>
#define N 50

void max (int a[], int n, int *prvo, int *posl) {
  int i, m = a[0];
  *prvo = *posl = 0;
  for (i=1; i<n; i++) {
    if (a[i] > m) {m=a[i]; *prvo=i; }
    if (a[i] == m) *posl = i;
  }
}

void main () {
  int a[N], n, i, prvo, posl;
  while (1) {
    printf ("n,? "); scanf ("%d", &n);
  if (n<0 || n>N) break;
    printf ("a? ");
    for (i=0; i<n; scanf("%d", &s[i++]));
    max (a, n, &prvo, &posl);
    printf ("prvo, posl= %d %d\n", prvo, posl);
  }
}

Решење задатка 2 ( поставка | почетак)

#include <stdio.h>
#include <math.h>
#define N 30

main () {
  int i, j, m, n;
  float a[N][N], s;
  FILE *dat;  char ime[30];
  printf ("Ulaz? "); scanf ("%s", ime);
  dat = fopen (ime, "r");
  fscanf (dat, "%d%d", &m, &n);
  for (i=0; i<m; i++)
    for (j=0; j<n;
      fscanf(dat,"%f",&a[i][j++]));
  fclose (dat);

  for (s=i=0; i<m; i++)
    for (j=0; j<n; s+=fabs(a[i][j++]));
  for (i=0; i<m; i++)
    for (j=0; j<n; a[i][j++]/=s);

  printf ("Izlaz? "); scanf ("%s", ime);
  dat = fopen (ime, "w");
  fprintf (dat, "%d %d\n", m, n);
  for (i=0; i<m; i++) {
    for (j=0; j<n; fprintf(dat,"%d ",a[i][j++]));
    fputc ('\n', dat);
  }
}

Решење задатка 3 ( поставка | почетак)

      SUBROUTINE Brojanje(A, n, B, k)
      INTEGER A(n), B(0:k-1)
      DO i = 0, k-1
        B(i) = 0
      END DO
      DO i = 1, n
        j = mod (A(i), k)
        B(j) = B(j) + 1
      END DO
      END

      PROGRAM BrojanjeT
      PARAMETER(nmax = 20, kmax = 15)
      INTEGER A(nmax), B(0:kmax-1)
   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 *, 'k?'
        READ *, k
        Brojanje (A, n, B, k)
        PRINT *, 'B='
        PRINT *, (B(i), i=0,k-1)
        GO TO 10
   99 CONTINUE
      END
( почетак)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

Copyright © 2003, Laslo Kraus
Последња ревизија: 24.2.2003.