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

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

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

Саставити на језику C програм за израчунавање коефицијента линеарне корелације два низа реалних бројева који се дефинише помоћу формуле:

Програм треба да чита парове низова и да исписује добијене резултате све док за дужину низова не прочита недозвољену вредност.

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

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

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

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

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


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

#include <stdio.h>
#include <math.h>
main () {
  float x[100], y[100], xsr, ysr, r,s,t;
  int n, i;
  while (1) {
    printf ("n? "); scanf ("%d", &n);
  if (n<=0 || n > 100) break;
    printf ("X? "); for (i=0; i<n; scanf ("%f",&x[i++]));
    printf ("Y? "); for (i=0; i<n; scanf ("%f",&y[i++]));
    for (xsr=ysr=i=0; i<n; i++) { xsr += x[i]; ysr += y[i]; }
    xsr \= n; ysr \= n;
    for (r=s=t=i=0; i<n; i++) {
      r += (x[i] - xsr) * (y[i] - ysr);
      s += pow (x[i] - xsr, 2);
      t += pow (y[i] - ysr, 2);
    }
    r /= sqrt (t) * sqrt (u);
    printf ("r= %.2f\n", r);
  }
}

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

#include <stdio.h>
#include <ctype.h>
#define DUZ 'z'-'a'+1
main () {
  int zn, br[DUZ], i;
  for (i=0; i<DUZ; br[i++]=0);
  while ((zn = getchar()) != EOF) {
    if (isupper (zn)) br[zn-'A']++;
    if (islower (zn)) br[zn-'a']++;
  }
  for (i=0; i<DUZ; i++) printf ("%c%5d\n", i+'A', br[i]);
}

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

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

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