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

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

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

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

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

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

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

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


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


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

#include <stdio.h>
#include <math.h>
#define N 100
main () {
  int n, i;
  double x, f, g, a[N], xmin, xmax, dx;
  printf ("n? "); scanf ("%d", &n);
  printf ("A? ");
  for (i=0; i<=n; scanf("%lf",&a[i++]));
  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 (f=g=1,i=0; i<=n; i++) {
      f = a[i] + g / f;
      g *= -x;
    }
    printf ("%6.2f10.6\n", x, f);
  }
}

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

#include <stdio.h>
#include <ctype.h>
main () {
  int zn, zbir=0, br=0;
  while ((zn = getchar()) != EOF) {
    if (isdigit (zn)) br=br*10+zn-'0';
      else { zbir += br; br = 0; }
  }
  zbir += br;
  printf ("zbir= %d\n", zbir);
}

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

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

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