Visa elektrotehnicka skola, Beograd
Ласло Краус
Програмирање II
Допунски колоквијум
17. 5. 2000

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

Поставка задатка 1 (50 поена) (решење | садржај)

Саставити на језику C програм који врши табелирање приложене функције на главном излазу рачунара за xminxxmax са кораком Δx. Потребне податке читати преко главног улаза рачунара.

Поставка задатка 2 (50 поена) (решење | садржај)

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

Поставка задатка 3 (50 поена) (решење | садржај)

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

Напоменe (садржај)


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

#include <stdio.h>
main () {
  int n, i, j;
  double x, f, g, a, ai, xmin, xmax, dx;
  printf ("a? "); scanf ("%lf", &a);
  printf ("n? "); scanf ("%d", &n);
  printf ("xmin, xmax, dx? ");
  scanf ("%lf%lf%lf", &xmin, &xmax, &dx);
  printf ("\n     x            f(x)\n"
          "========================\n");
  for (x=xmin; x<=xmax; x+=dx) {
    for (ai=1, f=i=0; i<=n; i++) {
      for (g=1, j=0; j<n; j++)
        if (j != i)
          g *= (x+i)*(x-j)/abs(i-j);
      f += ai * g;
      ai *= a;
    }
    printf ("%12.2f%12.2f\n", x, f);
  }
}

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

#include <stdio.h>
#include <ctype.h>
main () {
  int zn, ukupno=0, broj=0;
  while ((zn = getchar()) != EOF)
    if (zn>='0' && zn<='7') {
      broj = broj * 8 + (zn - '0');;
    } else {
      ukupno += broj; broj = 0;
    }
  ukupno += broj;
  printf ("Zbir brojeva: %o\n", ukupno);
}

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

#include <stdio.h>
#include <stdlib.h>
main () {
  while (1) {
    float *a; int n, i, j;
    unsigned long b, m;
    printf ("\nn? "); scanf ("%d", &n);
  if (n <= 0 || n > 32) break;
    a = malloc (n * sizeof (int));
    printf ("A? ");
    for (i=0; i<n; scanf("%d", &a[i++]);
    printf ("Niz bitova (hex) ? ");
    scanf ("%lx", &b);
    for(m=1UL<<n-1,i=j=0; i<n; m>>=1,i++)
      if (b & m) a[j++] = a[i];
    a = realloc (a, (n=j)*sizeof(float));
    printf ("A=");
    for (i=0;i<n;printf(" %.2f",a[i++]));
    putchar ('\n');
    free (a);
  }
}
(садржај)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

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