Visa elektrotehnicka skola, Beograd
Ласло Краус
Програмирање II
Први колоквијум
28. 11. 2005

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

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

Саставити на језику C функцију за израчунавање вредности следеће функције:

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

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

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

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

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

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

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


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


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

#include <stdio.h>

float f (float x, float a[], int n) {
  int i; float p = -1, q = 0, r = 1;
  for (i=n-1; i>=0; i--) {
    р *= - x;
    q += p;
    r *= a[i] + (i+1)/q;
  }
  return r;
}

void main () {
  int n, i;
  float x, xmin, xmax, dx, a[21];
  printf ("n? "); scanf ("%d", &n);
  printf ("A? "); for (i=0; i<n; scanf("%f",&a[i++]));
  printf ("xmin, xmax, dx? "); scanf ("%f%f%f", &xmin, &xmax, &dx);
  printf ("\n     x      f(x)\n================\n");
  for (x=xmin; x<=xmax; x+=dx) printf ("%6.2f%10.6f\n", x, f(x,a,n));
}

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

/* paket.h */

void umetni (int a[], int *n, int b);
int nadji (int a[], int n, int b);

/* paket.c */

#include "paket.h"

void umetni (int a[], int *n, int b) {
  int i;
  for (i=*n-1, i>=0 && a[i]>b; i--) a[i+1] = a[i];
  a[i+1] = b;
  (*n)++;
}

int nadji (int a[], int n, int b) {
  int d = 0, g = n-1; s;
  while (d <= g)
    if (a[s=(g+d)/2] == b)
      return 1;
    else if (a[s] > b)
      g = s – 1;
    else
      d = s + 1;
  return 0;
}

/* test.c */

#include "paket.h"
#include <stdio.h>
#define N 100


void main () {
 int a[N], b[N], na, nb, i, k;
  while (1) {
    printf ("na? "); scanf ("%d", &n);
  if (n<=0 || n>N) break;
    printf ("A ? ");
    for (na=i=0; i<n; i++) { scanf (%d", &k); umetni (a, &na, k); }
    printf ("nb? "); scanf ("%d", &n);
    printf ("B ? ");
    for (nb=i=0; i<n; i++) { scanf (%d", &k); umetni (b, &nb, k); }
    for (k=i=0; i<na; i++) k += nadji (b, nb, a[i]);
    printf ("k= %d\n", k);
  }
}

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

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct { double x, y; } Tacka;

typedef struct { int n; Tacka *tem; } Mnogougao;

double rast (Tacka A, Tacka B)
  { return sqrt (pow(A.x-B.x,2) + pow(A.y-B.y,2); }

double obim (Mnogoug mno) {
  int i;
  double s = rast (mno.tem[0], mno.tem[mno.n-1]);
  for (i=1; i<mno.n; i++) s += rast (mno.tem[i-1], mno.tem[i]);
  return s;
}

void main () {
  while (1) {
    Mnogoug mno; int i, n;
    printf ("\nn? "); scanf ("%d", &n);
  if (n < 3) break;
    mno.n   = n;
    mno.tem = malloc (n * sizeof(Tacka));
    for (i=0; i<n; i++) {
      printf ("mno[%d]? ");
      scanf ("%lf%lf", &mno.tem[i].x, &mno.tem[i].y );
    }
    printf ("O= %f\n", obim(mno));
    free (mno.tem);
  }
}
(садржај)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

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