Visa elektrotehnicka skola, Beograd
Ласло Краус
Програмирање I
Други колоквијум
Прва група
15. 6. 2005

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

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

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

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

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

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

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


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


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

#include <stdio.h>
#define N 10
main () {
  int a[N][N], m, n, i, j, min, imin, b;
  while (1) {
    printf ("m, n? ");
    scanf ("%d%d", &m, &n);
  if (m<=0 || m>N || n<=0 || n>N) break;
    for (i=0; i<m; i++) {
      printf ("%2d. vrsta? ", i+1);
      for (j=0; j<n; scanf ("%d", &a[i][j++]);
    }
    for (i=0; i<m; i++) {
      b = 0;
      for (j=0; j<n; b+=a[i][j++]);
      if (i==0 || b<min) { min = b; imin = i; }
    }
    for (i=imin; i<m-1; i++)
      for (j=0; j<n; j++) a[i][j] = a[i+1][j];
    m--;
    printf ("\nRezultat:\n");
    for (i=0; i<m; i++) {
      for (j=0; i<n; printf ("%5d", a[i][j++]));
      putchar ('\n');
    }
  }
}

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

#include <stdio.h>
main {
  float *a, *b; int m, n, i, p;
  while (1) {
    printf ("m? "); scanf ("%d", &m);
  if (m <= 0) break;
    a = malloc (m * sizeof(float));
    printf ("A? "); for (i=0; i<m; scanf ("%f",&a[i++]));
    printf ("n? "); scanf ("%d", &n);
  if (n <= 0) break;
    b = malloc (n * sizeof(float));
    printf ("B? "); for (i=0; i<n; scanf ("%f",&b[i++]));
    printf ("p? "); scanf (%d", &p);
    if (p < 0) p = 0;
    if (p > n) p = n;
    a = realloc (a, (m+n)*sizeof(float));
    for (i=n-1; i>=p; i--) b[i+m] = b[i];
    for (i=0; i<m; i++) b[p+i] = a[i];
    n += m;
    prinf ("B= "); for (i=0; i<n; printf ("%.2f ", b[i++]));
    printf ("\n\n");
    free (a); free (b);
  }
}

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

#include <stdio.h>
#include <ctype.h>
main {
  int z, n = 0; double k = 0;
  while ((z = getchar()) != EOF) {
    if (ispunct(z)) k++;
    else {
      putchar (toupper(z));
      n += isalnum(z) != 0;
    }
  }
  if (n+k) k /= (n + k);
  printf ("k= %.2f%%\n", k*100);
}
(садржај)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

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