Advertisement
simov

[Структурно Програмирање] Испитни Задачи за Вежбање

Jun 11th, 2014
6,545
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 32.55 KB | None | 0 0
  1. /*
  2. [1] Мали цифри
  3. Од стандарден влез се читаат N цели броеви. Да се напише програма која за секој прочитан број ќе ги отпечати на стандарден излез само цифрите помали од 5, како и бројот на цифри кои се отпечатени. Печатењето на цифрите помали од 5 да се реализира со посебна рекурзивна функција.
  4.  
  5. Пример:
  6. за бројот 8423871 треба да се отпечати 4231 : 4
  7.  
  8. Sample input:
  9. 3
  10. 15628
  11. 8241982
  12. 145
  13.  
  14. Sample output:
  15. 12 : 2
  16. 2412 : 4
  17. 14 : 2
  18. */
  19. #include <stdio.h>
  20. int pec(int n) {
  21.     if(n==0) return 0;
  22.     int r = pec(n/10);
  23.     int c = n%10;
  24.     if(c<5) {
  25.         printf("%d", c);
  26.         return r+1;
  27.     }
  28.     return r;
  29. }
  30. int main() {
  31.     int n;
  32.     scanf("%d", &n);
  33.     int i, x;
  34.     for(i=0; i<n; i++) {
  35.         scanf("%d", &x);
  36.         int r = pec(x);
  37.         printf(" : %d\n", r);
  38.     }
  39.     return 0;
  40. }
  41. /*
  42. [1] Број во број
  43. Од стандарден влез се читаат N парови цели броеви. Да се напише програма која за секој прочитан пар од цели броеви ќе отпечати колку пати вториот број се појавува во првиот без преклопување на повторувањата. Ова да се реализира со посебна рекурзивна функција.
  44.  
  45. Пример:
  46. за парот броеви 5167163 и 16 треба да се отпеачти 2
  47.  
  48. Sample input:
  49. 3
  50. 5167163 16
  51. 624626 6
  52. 34333 33
  53.  
  54. Sample output:
  55. 2
  56. 3
  57. 1
  58. */
  59. #include <stdio.h>
  60.  
  61. int count(int c) {
  62.     if(c == 0) return 1;
  63.     return 10 * count(c / 10);
  64. }
  65.  
  66. int findNum(int a, int b, int c) {
  67.     if(a == 0) return 0;
  68.     if(a % c == b) return 1 + findNum(a / c, b, c);
  69.     return 0+ findNum(a / 10, b, c);
  70. }
  71.  
  72. int main() {
  73.     int N;
  74.     scanf("%d", &N);
  75.     int i;
  76.     for(i = 0; i < N; ++i) {
  77.         int a, b;
  78.         scanf("%d %d", &a, &b);
  79.         int c = count(b);
  80.         printf("%d\n", findNum(a, b, c));
  81.     }
  82.     return 0;
  83. }
  84. /*
  85. [1] Максимум 3
  86. Од стандарден влез се читаат N тројки цели броеви. Да се напише програма која за секои прочитани три цели броја ќе го отпечати најголемиот. Наоѓањето на најголемиот од три броја да се реализира со посебна рекурзивна функција.
  87.  
  88. Пример:
  89. за тројката броеви 8 15 3 треба да се отпечати 15
  90.  
  91. Sample input:
  92. 3
  93. 8 15 3
  94. 9 5 1
  95. 2 7 8
  96.  
  97. Sample output:
  98. 15
  99. 9
  100. 8
  101. */
  102. #include <stdio.h>
  103. #include <stdlib.h>
  104. #include <string.h>
  105.  
  106. int findMax(int a , int b, int c) {
  107.     if(a >= b&&a >= c) {
  108.         return a;
  109.     }
  110.     if(a < b) {
  111.         return findMax(b, a, c);
  112.     }
  113.     if(a < c) {
  114.         return findMax(c, b, a);
  115.     }
  116. }
  117.  
  118. int main () {
  119.     int N,i,a,b,c,maximum;
  120.     scanf("%d", &N);
  121.     for (i=0; i<N; i++) {
  122.         scanf("%d%d%d",&a,&b,&c);
  123.         maximum=findMax(a,b,c);
  124.         printf("%d\n",maximum);
  125.     }
  126.  
  127.     return 0;
  128. }
  129. /*
  130. [1] „Превртување“ на низа
  131. Да се напише рекурзивна функција prevrti која како аргумент прима низа од n цели броеви, и по нејзиното завршување првичната низа ја _„превртува“_ (го менува редоследот на нејзините членови). На пример, низата 1, 4, 7, 5, -22, 9 ја претвора во низа 9, -22, 5, 7, 4, 1. (Дозволено е да се додадат дополнителни аргументи на функцијата!).
  132.  
  133. Да се направи програма која од тастатура ќе прочита цел број n (0 < n < 100), и потоа уште n цели броеви – елементи на низата. Низата прво да се испечати на екран, потоа да се повика функцијата prevrti за дадената низа и на крајот повторно да се испечати низата на екран.
  134.  
  135. Sample input:
  136. 6
  137. 1 4 7 5 -22 9
  138.  
  139. Sample output:
  140. 1 4 7 5 -22 9
  141. 9 -22 5 7 4 1
  142. */
  143. #include <stdio.h>
  144. void prevrti(int* a, int n, int i) {
  145.     if(n > 2*i) {
  146.         int pom = a[i];
  147.         a[i] = a[n-i-1];
  148.         a[n-i-1]=pom;
  149.         prevrti(a, n, i+1);
  150.     }
  151. }
  152.  
  153. int main() {
  154.     int niza[100], n, i;
  155.     scanf("%d", &n);
  156.     for(i = 0; i < n; i++) {
  157.         scanf("%d", &niza[i]);
  158.     }
  159.     for(i = 0; i < n-1; i++)
  160.         printf("%d ", niza[i]);
  161.     printf("%d\n",niza[i]);
  162.  
  163.     prevrti(niza, n, 0);
  164.     for(i = 0; i < n - 1; i++)
  165.         printf("%d ", niza[i]);
  166.     printf("%d", niza[i]);
  167.     return 0;
  168. }
  169. /*
  170. [1] Математички израз
  171. Да се напише програма која ќе го пресметува долунаведениот математички израз, каде n, i, и j се природни броеви. Вредноста на n се внесува од тастатура. Функцијата за степен да се реализира во посебна рекурзивна функција.
  172.  
  173. http://s21.postimg.org/islkkckhj/mat_izraz.png
  174.  
  175. Sample input:
  176. 5
  177.  
  178. Sample output:
  179. 148.66
  180. */
  181. #include<stdio.h>
  182. #include<math.h>
  183.  
  184. int stepen (int m, int n) {
  185.     if(n==0) return 1;
  186.     else return m*(stepen(m,n-1));
  187. }
  188.  
  189.  
  190. int main() {
  191.     int n,i,j;
  192.     float sum=0;
  193.     scanf("%d", &n);
  194.     for(i=1; i<=n; i++) {
  195.         for(j=0; j<=i; j++) {
  196.             sum+=sqrt(stepen(i,j));
  197.         }
  198.     }
  199.  
  200.     printf("%.2f", sum);
  201.     return 0;
  202. }
  203. /*
  204. [2] Соседи
  205. Oд стандарден влез се вчитува матрица со димензии M x N. Да се напише програма која во друга матрица со исти димензии, секој елемент ќе го замени со збирот на неговите соседни елементи (по хоризонтала и вертикала) кои се поголеми од самиот тој елемент. Соседни елементи на еден елемент во матрицата се елементите кои се наоѓаат горе, долу, лево и десно од самиот елемент (ако елементот е дел од првата или последната редица или колона му недостасува некој сосед).
  206.  
  207. Пример: http://s29.postimg.org/lkygoq7hz/000_sosedi.png
  208.  
  209. Во примерот соседи на елементот 4 се 3, 2, додека соседи на елементот 9 се 16, 8, 5, 4. Почетна сума за секој елемент е 0.
  210.  
  211. Sample input:
  212. 4 4
  213. 4 2 7 11
  214. 3 8 16 1
  215. 17 8 9 5
  216. 6 14 4 7
  217.  
  218. Sample output:
  219. 0 19 27 0
  220. 29 16 0 32
  221. 0 40 16 16
  222. 31 0 30 0
  223. */
  224. #include <stdio.h>
  225. #define MAX 100
  226. int main() {
  227.     int i,j,a[MAX][MAX],b[MAX][MAX];
  228.     int m,n;
  229.     scanf("%d%d",&m,&n);
  230.     for(i=0; i<m; i++) {
  231.         for(j=0; j<n; j++) {
  232.             scanf("%d",&a[i][j]);
  233.         }
  234.     }
  235.     for(i=0; i<m; i++) {
  236.         for(j=0; j<n; j++) {
  237.             b[i][j]=0;
  238.             int r,k;
  239.  
  240.             r=i+1;
  241.             if (r>=0&&r<m&&(a[i][j]<a[r][j]))
  242.                 b[i][j]+=a[r][j];
  243.  
  244.             r=i-1;
  245.             if (r>=0&&r<m&&(a[i][j]<a[r][j]))
  246.                 b[i][j]+=a[r][j];
  247.  
  248.  
  249.             k=j+1;
  250.             if (k>=0 && r<n && (a[i][j]<a[i][k]))
  251.                 b[i][j]+=a[i][k];
  252.  
  253.             k=j-1;
  254.             if (k>=0 && r<n && (a[i][j]<a[i][k]))
  255.                 b[i][j]+=a[i][k];
  256.  
  257.         }
  258.     }
  259.  
  260.     for(i=0; i<m; i++) {
  261.         for(j=0; j<n; j++) {
  262.             printf("%d ",b[i][j]);
  263.  
  264.         }
  265.         printf("\n");
  266.     }
  267.     return 0;
  268. }
  269. /*
  270. [2] Максимална подматрица
  271. Oд стандарден влез се вчитува матрица со димензии M x N. Да се напише програма која ќе ги најде елементите на матрицата со димензии 2 x 2 која е подматрица на дадената матрица и има максимална сума. Да се отпечати оваа матрица на стандарден излез. Матрицата која се вчитува е со минимални димензии 2 x 2.
  272.  
  273. Пример: http://s29.postimg.org/6aylhjbzr/000_maksimalna_podmatrica.png
  274.  
  275. Во примерот елементите во сино и црвено се два примери на под матрици на дадената матрица, а десно е резултантната под матрица со максимална сума.
  276.  
  277. Sample input:
  278. 4 4
  279. 4 2 7 11
  280. 3 8 16 1
  281. 17 12 9 5
  282. 6 14 4 7
  283.  
  284. Sample output:
  285. 17 12
  286. 6 14
  287. */
  288. #include <stdio.h>
  289. #define MAX 100
  290.  
  291. int main() {
  292.     int m,n,i,j,matrica[MAX][MAX],suma=0,maxsuma=0,b[2][2],k;
  293.     scanf("%d%d",&n,&m);
  294.     for(i=0; i<n; ++i) {
  295.         for(j=0; j<m; ++j) {
  296.             scanf("%d",&matrica[i][j]);
  297.         }
  298.     }
  299.  
  300.     for (i=0; i<n-1; ++i) {
  301.         for(j=0; j<m-1; ++j) {
  302.             suma=matrica[i][j] + matrica[i][j+1] + matrica[i+1][j] + matrica[i+1][j+1];
  303.             if(suma>maxsuma) {
  304.                 maxsuma=suma;
  305.                 b[0][0]=matrica[i][j];
  306.                 b[0][1]=matrica[i][j+1];
  307.                 b[1][0]=matrica[i+1][j];
  308.                 b[1][1]=matrica[i+1][j+1];
  309.             }
  310.             suma=0;
  311.         }
  312.  
  313.     }
  314.     for(i = 0; i < 2; ++i) {
  315.         for(j = 0; j < 2; ++j) {
  316.             printf("%d ", b[i][j]);
  317.         }
  318.         printf("\n");
  319.     }
  320.  
  321.     return 0;
  322. }
  323. /*
  324. [2] Збир на дијагонали 1
  325. Oд стандарден влез се вчитува квадратна матрица со димензија N. Треба да се напише програма која ќе ја најде и отпечати на стандарден излез максималната сума на елементите кои се наоѓаат на сите дијагонали над главната дијагонала (вклучувајќи ја и главната).
  326.  
  327. Пример: http://s29.postimg.org/lm8ei59br/000_zbir_na_dijagonali_1.png
  328.  
  329. Sample input:
  330. 4
  331. 4 18 7 11
  332. 3 8 16 1
  333. 17 12 9 5
  334. 6 14 4 7
  335.  
  336. Sample output:
  337. 39
  338. */
  339. #include <stdio.h>
  340. #define MAX 100
  341. int main () {
  342.     int i,j,m,n,a[MAX][MAX];
  343.     scanf("%d", &m);
  344.     for(i=0; i<m; i++) {
  345.         for(j=0; j<m; j++)
  346.             scanf("%d", &a[i][j]);
  347.     }
  348.  
  349.     int suma=0,maxsuma=0;
  350.     for(i=0; i<m; i++) {
  351.         for(j=0; j<m; j++) {
  352.  
  353.             if(i==j) {
  354.                 suma =suma+a[i][j];
  355.             }
  356.         }
  357.  
  358.     }
  359.     maxsuma=suma;
  360.     suma=0;
  361.  
  362.     for(i=0; i<m; i++) {
  363.         for(j=0; j<m; j++) {
  364.  
  365.             if(j==i+1) {
  366.                 suma =suma+a[i][j];
  367.             }
  368.  
  369.         }
  370.         if(suma>maxsuma)
  371.             maxsuma=suma;
  372.  
  373.     }
  374.  
  375.     printf("%d",maxsuma);
  376.  
  377.  
  378.     return 0;
  379. }
  380. /*
  381. [2] Најголем елемент од минимумите по колони во матрица
  382. Од тастатура се внесуваат два природни броја m и n (0 < m < 10 и 0 < n < 10), како и матрица a од ред m x n чии елементи се цели броеви. Да се најде најголемиот од минималните елементи во секоја колона на матрицата a. Да се испечатат елементите на колоната во која се наоѓа oпределениот најголем елемент.
  383.  
  384. Sample input:
  385. 3
  386. 3
  387. 29 18 14
  388. 47 59 11
  389. 4 25 22
  390.  
  391. Sample output:
  392. 18 59 25
  393. */
  394. #include <stdio.h>
  395.  
  396. int main() {
  397.     int maks, minKol, reden, i, j, m, n, a[10][10];
  398.     scanf("%d%d", &m, &n);
  399.     for(i = 0; i < m; i++)
  400.         for(j = 0; j < n; j++)
  401.             scanf("%d", &a[i][j]);
  402.  
  403.     minKol = a[0][0];
  404.     for(i = 1; i < n; i++)
  405.         if(a[i][0] < minKol)
  406.             minKol = a[i][0];
  407.  
  408.     maks = minKol;
  409.     reden = 0;
  410.     for(j = 1; j < n; j++) {
  411.         minKol = a[0][j];
  412.         for(i = 1; i < m; i++)
  413.             if(a[i][j] < minKol)
  414.                 minKol = a[i][j];
  415.  
  416.         if(minKol > maks) {
  417.             maks = minKol;
  418.             reden = j;
  419.         }
  420.     }
  421.     for(i = 0; i < m - 1; i++)
  422.         printf("%d ", a[i][reden]);
  423.     printf("%d", a[i][reden]);
  424.     return 0;
  425. }
  426. /*
  427. [2] Матрица
  428. Од тастатура се внесува матрица од цели броеви А[m x n], каде што димензиите m и n исто така се внесуваат од тастатура и не се поголеми од 100. Матрицата да се трансформира на следниов начин: ако збирот на елементите на дадена редица од горната половина на матрицата е поголем од збирот на елементите на нејзината симетрична редица во однос на хоризонталата, тогаш редиците треба да си ги заменат местата. Новодобиената матрица да се испечати на компјутерскиот екран.
  429.  
  430. Влез/Излез(Матрица): http://s29.postimg.org/di4vr5caf/000_matrica.png
  431.  
  432. Sample input:
  433. 4 4
  434. 4 3 8 11
  435. 6 3 9 1
  436. 12 8 2 6
  437. 7 0 8 2
  438.  
  439. Sample output:
  440. 7 0 8 2
  441. 6 3 9 1
  442. 12 8 2 6
  443. 4 3 8 11
  444. */
  445. #include <stdio.h>
  446. #define MAX 100
  447.  
  448. int main() {
  449.     int i,j,m,n,a[MAX][MAX],b[MAX];
  450.     scanf("%d%d", &m,&n);
  451.     int suma=0;
  452.     for(i=0; i<m; i++) {
  453.         for(j=0; j<n; j++) {
  454.             scanf("%d",&a[i][j]);
  455.         }
  456.     }
  457.     for(i=0; i<m; i++) {
  458.         for(j=0; j<n; j++) {
  459.             suma=suma+a[i][j];
  460.  
  461.         }
  462.         b[i]=suma;
  463.         suma=0;
  464.     }
  465.     int pom;
  466.     for(i=0; i<m/2; i++) {
  467.         for(j=0; j<n; j++) {
  468.             if(b[i]>b[m-1-i]) {
  469.                 pom=a[i][j];
  470.                 a[i][j]=a[m-1-i][j];
  471.                 a[m-1-i][j]=pom;
  472.             }
  473.         }
  474.     }
  475.     for(i=0; i<m; i++) {
  476.         for(j=0; j<n; j++)
  477.             printf("%d ",a[i][j]);
  478.         printf("\n");
  479.     }
  480.  
  481.     return 0;
  482. }
  483. /*
  484. [3] Последователни согласки
  485. Да се напише програма која во текстуалната датотека "text.txt" ќе го најде редот со најголем број последователни повторувања на согласки и ќе го отпечати на стандарден излез тој број, како и соржината на редот во кој е најден. Максималната должина на еден ред е 80 знаци.
  486.  
  487. Sample input:
  488. I know someday you'll have a beautiful life,
  489. I know you'll be a star in somebody else's sky,
  490. But why, why, why can't it be, can't it be mine?
  491.  
  492. Sample output:
  493. 11
  494. But why, why, why can't it be, can't it be mine?
  495. */
  496. #include <stdio.h>
  497. #define MAX 80
  498.  
  499. void wtf() {
  500.     FILE *f = fopen("text.txt", "w");
  501.     char c;
  502.     while((c = getchar()) != EOF) {
  503.         fputc(c, f);
  504.     }
  505.     fclose(f);
  506. }
  507.  
  508. int samoglaska(char c) {
  509.     c = tolower(c);
  510.     return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
  511. }
  512.  
  513. int maxSoglaski(char *row) {
  514.     int maksimalno= 0;
  515.     int soglaski = 0;
  516.     while(*row) {
  517.         if(isalpha(*row)) {
  518.             if(!samoglaska(*row)) {
  519.                 ++soglaski;
  520.             } else {
  521.                 if(soglaski > maksimalno) {
  522.                     maksimalno= soglaski;
  523.                 }
  524.                 soglaski = 0;
  525.             }
  526.         }
  527.         row++;
  528.     }
  529.     return maksimalno;
  530. }
  531.  
  532. int main() {
  533.     wtf();
  534.     FILE *f = fopen("text.txt", "r");
  535.     char row[MAX];
  536.     char maxRow[MAX];
  537.     int total = 0;
  538.     int max = 0;
  539.     while(fgets(row, MAX, f) != NULL) {
  540.         int r = maxSoglaski(row);
  541.         if(r > max) {
  542.             max = r;
  543.             strcpy(maxRow, row);
  544.         }
  545.     }
  546.     fclose(f);
  547.     printf("%d\n", max);
  548.     printf("%s\n", maxRow);
  549.     return 0;
  550. }
  551. /*
  552. [3] Големи и мали
  553. Да се напише програма која на стандарден излез ќе ја оптечати содржината на дадена текстуалната датотека "text.txt". При печатењето, на почетокот на секој ред треба да го отпечати и односот на големи/мали букви во тој ред. Максималната должина на еден ред е 80 знаци. На крај треба да се отпчати и редниот број на редот со најголем однос на големи/мали букви.
  554.  
  555. Sample input:
  556. Come Dowsed in Mud, Soaked in Bleach
  557. As I Want you To be
  558. As a Trend, as a Friend, As An Old Memoria
  559. MemOria
  560.  
  561. Sample output:
  562. 0.21 Come Dowsed in Mud, Soaked in Bleach
  563. 0.40 As I Want you To be
  564. 0.29 As a Trend, as a Friend, As An Old Memoria
  565. 0.40 MemOria
  566. 1
  567. */
  568. #include <stdio.h>
  569. #include <stdlib.h>
  570. #include <ctype.h>
  571.  
  572. #define MAX 80
  573.  
  574. void wtf() {
  575.     FILE *f = fopen("text.txt", "w");
  576.     char c;
  577.     while((c = getchar()) != EOF) {
  578.         fputc(c, f);
  579.     }
  580.     fclose(f);
  581. }
  582.  
  583. float ratio(char *row) {
  584.     int upper = 0;
  585.     int lower = 0;
  586.     while(*row) {
  587.         if(isalpha(*row)) {
  588.             if(isupper(*row)) {
  589.                 ++upper;
  590.             } else if(islower(*row)) {
  591.                 ++lower;
  592.             }
  593.         }
  594.         row++;
  595.     }
  596.     return 1.0 * upper / lower;
  597. }
  598.  
  599. int main() {
  600.  
  601.     wtf();
  602.  
  603.     FILE *f = fopen("text.txt", "r");
  604.     char row[MAX];
  605.     int rowIndex = 0;
  606.     float maxRatio = 0;
  607.     int max = 0;
  608.     while(fgets(row, MAX, f) != NULL) {
  609.         float r = ratio(row);
  610.         printf("%.2f %s", r, row);
  611.         if(r > maxRatio) {
  612.             maxRatio = r;
  613.             max = rowIndex;
  614.         }
  615.         ++rowIndex;
  616.     }
  617.     fclose(f);
  618.     printf("%d", max);
  619.     return 0;
  620. }
  621. /*
  622. [3] Најдолго повторување
  623. Да се напише програма која во текстуалната датотека "text.txt" ќе го најде редот со надолго последователно повторување на еден ист знак и ќе го отпечати на стандарден излез тој број, како и редот во кој е најден. Максималната должина на еден ред е 80 знаци.
  624.  
  625. Sample input:
  626. I know someday you'll have a beautiful life,
  627. I know you'll be a staaar in somebody else's sky,
  628. But why, whyyyy, whhhy can't it be, can't it be mine?
  629.  
  630. Sample output:
  631. 4
  632. But why, whyyyy, whhhy can't it be, can't it be mine?
  633. */
  634. #include <stdio.h>
  635. #include <string.h>
  636. #define MAX 80
  637.  
  638. void wtf() {
  639.     FILE *f = fopen("text.txt", "w");
  640.     char c;
  641.     while((c = getchar()) != EOF) {
  642.         fputc(c, f);
  643.     }
  644.     fclose(f);
  645. }
  646.  
  647. int repeatCount(char *row) {
  648.     int maxpovtoruvanje = 0;
  649.     int c = 1;
  650.     char prev = *row;
  651.     row++;
  652.     while(*row) {
  653.         if(*row == prev) {
  654.             ++c;
  655.         } else {
  656.             if(c > maxpovtoruvanje) {
  657.                 maxpovtoruvanje = c;
  658.             }
  659.             c = 1;
  660.         }
  661.         prev = *row;
  662.         row++;
  663.     }
  664.     return maxpovtoruvanje;
  665. }
  666.  
  667. int main() {
  668.     wtf();
  669.     FILE *f = fopen("text.txt", "r");
  670.     char row[MAX];
  671.     char maxRow[MAX];
  672.     int total = 0;
  673.     int max = 0;
  674.     while(fgets(row, MAX, f) != NULL) {
  675.         int r = repeatCount(row);
  676.         if(r > max) {
  677.             max = r;
  678.             strcpy(maxRow, row);
  679.         }
  680.     }
  681.     fclose(f);
  682.     printf("%d\n", max);
  683.     printf("%s\n", maxRow);
  684.     return 0;
  685. }
  686. /*
  687. [3] Зборови со иста почетна и завршна буква во датотека
  688. Да се напише програма која ќе ги пронаоѓа сите зборови кои истовремено почнуваат и завршуваат на дадена буква во датотеката со име „zborovi.txt“. Во првиот ред на оваа датотека е запишана само бараната буква. Програмата треба да ги ископира сите вакви зборови на стандарден излез, пришто мора да е запазен редоследот на редовите (зборовите кои се наоѓале во вториот ред на „zborovi.txt“ треба да бидат ископирани во првиот ред на излезот, зборовите од третиот ред да бидат ископирани во вториот ред на излезот, итн.). Меѓу секои два збора мора да има точно едно празно место. На крај, во нов ред да се испечати и бројот на сите ископирани зборови. Да се претпостави дека зборовите во датотеката „zborovi.txt“ се составени од алфанумерички знаци и се меѓусебно разделени со еден или повеќе специјални знаци/празни места. Максималниот број на знаци во еден ред е 100. Забелешка. После последниот збор во секој ред да се отпечати точно едно празно место.
  689.  
  690. Sample input:
  691. a
  692. ama zoshto ama kako, nema ama!!
  693. ana saka da bide kako sestra i' ana.
  694. eh  taa   ana...
  695.  
  696. Sample output:
  697. ama ama ama
  698. ana ana
  699. ana
  700. 6
  701. */
  702. #include <stdio.h>
  703. #include <ctype.h>
  704. #include <string.h>
  705. #define MAX 100
  706. // ne menuvaj ovde
  707. void wtf() {
  708.     FILE *f = fopen("zborovi.txt", "w");
  709.     char c;
  710.     while((c = getchar()) != EOF) {
  711.         fputc(c, f);
  712.     }
  713.     fclose(f);
  714. }
  715.  
  716. int red(char *word, char bukva, int length) {
  717.  
  718.     int i = 0, j = 0;
  719.     while(word[i]) {
  720.         if(isalpha(word[i])) {
  721.             word[j] = word[i];
  722.             ++j;
  723.  
  724.         }
  725.         ++i;
  726.  
  727.     }
  728.  
  729.     if ((word[0] == word[j-1])&&(word[j-1] == bukva)&&(word[0] == bukva)) {
  730.         for (i = 0; i < j; ++i) {
  731.             printf("%c", word[i]);
  732.         }
  733.         printf(" ");
  734.  
  735.         return 1;
  736.     } else return 0;
  737. }
  738.  
  739. int main() {
  740.     wtf();
  741.     char word[MAX];
  742.     int vkupno = 0;
  743.     char last;
  744.  
  745.     FILE *f = fopen("zborovi.txt", "r");
  746.  
  747.     char bukva;
  748.     fscanf(f, "%c", &bukva);
  749.  
  750.     while(fscanf(f, "%s", word) != EOF) {
  751.         fscanf(f, "%c", &last);
  752.         int length = strlen(word);
  753.         int c = red(word, bukva, length);
  754.         if (c) {
  755.             ++vkupno;
  756.         }
  757.         if (last == '\n') printf("\n");
  758.     }
  759.     printf("%d", vkupno);
  760.  
  761.     return 0;
  762. }
  763. /*
  764. [3] Датотека
  765. Да се напише програма која од дадена датотека “text.txt” ќе ги изброи зборовите кои почнуваат со голема буква и ќе го испечати нивниот број на екран. Зборовите се составени од алфанумерички знаци, меѓусебно одделени со празни места или специјални знаци.
  766.  
  767. Sample input:
  768. Njutnov zakon, Sredingerova ravenka,
  769. Fizika 1 i 2 A
  770.  
  771. Sample output:
  772. 4
  773. */
  774. #include <stdio.h>
  775. #include <string.h>
  776. #include <ctype.h>
  777. #include <stdlib.h>
  778. #define MAX 100
  779.  
  780.  
  781. //ne menuvaj!
  782. void wtf() {
  783.     FILE *f = fopen("text.txt", "w");
  784.     char c;
  785.     while((c = getchar()) != EOF) {
  786.         fputc(c, f);
  787.     }
  788.     fclose(f);
  789. }
  790.  
  791. int main() {
  792.     wtf();
  793.     int i, n, br=0, flag=1;
  794.     char c[MAX];
  795.     FILE *f;
  796.     f = fopen("text.txt", "r");
  797.  
  798.     while(fgets(c,80,f)!=NULL) {
  799.         n=strlen(c);
  800.         for(i=0; i<n; i++) {
  801.             if(flag==1) {
  802.                 if(isupper(c[i])) {
  803.                     br++;
  804.                     flag=0;
  805.                 }
  806.             }
  807.             if(isspace(c[i]))
  808.                 flag=1;
  809.         }
  810.     }
  811.     printf("%d", br);
  812.     fclose(f);
  813.     return 0;
  814. }
  815. /*
  816. Реши ги овие задачи и би требало да положиш Структурно Програмирање на испит
  817. */
  818. /*
  819. Парни цифри
  820. Од стандарден влез се читаат N низи од цели броеви. На почетокот на секој ред се чита бројот на елементи на низата во тој ред (макс. 100), а потоа следуваат елементите. Напишете програма која за секоја низа ќе ја отпечати во нов ред сумата на трансформираните броеви од таа низа. Секој број од низата се трансформира со повик на посебна рекурзивна функција која како резултат ја враќа сумата од неговите парни цифри помали или еднакви од 5.
  821.  
  822. Sample input:
  823. 3
  824. 9 4543 4194 5185 9877 7124 1613 5550 8775 2946
  825. 2 3478 636
  826. 4 6019 939 4777 587
  827.  
  828. Sample output:
  829. 28
  830. 4
  831. 4
  832. */
  833. #include <stdio.h>
  834. #define max 100
  835.  
  836. int funk(int a,int pom){
  837.     if(a==0)
  838.         return pom;
  839.     else{
  840.     if((a%10) % 2 == 0 )
  841.         if(a%10 < 5)
  842.            pom+=a%10;
  843.            return funk(a/10,pom);
  844.     }
  845. }
  846.  
  847.  
  848. int main(){
  849.     int pom, i, j ,n, a[max], zbir;
  850.  
  851.     scanf("%d",&j);
  852.         do {
  853.             zbir=0;
  854.             scanf("%d",&n);
  855.             for(i=0;i<n;i++){
  856.                 scanf("%d",&a[i]);
  857.                 pom=0;
  858.                 zbir += funk(a[i],pom);
  859.             }
  860.             printf("%d\n",zbir);
  861.             j--;
  862.         } while(j>0);
  863.  
  864.     return 0;
  865. }
  866. /*
  867. Цезар
  868. Од стаднарден влез се читаат N низи од знаци (стрингови) не подолги од 80 знаци. На почетокот на програмата се читаат два цели броеви:
  869.  
  870. N - бројот на низи од знаци кои ќе се читаат и
  871. X - поместување.
  872. Секоја од вчитаните низи од знаци треба да се трансформира на тој начин што секоја од малите и големите букви (a-z, A-Z) се заменува со истата буква поместена X места понапред во азбуката (a-z). Ако се надмине опсегот на буквите во азбуката, се продолжува циклично од почетокот на азбуката. Трансформираната низа да се отпечати на СИ.
  873.  
  874. Трансформацијата да се имплементира со посебна рекурзивна функција.
  875.  
  876. Пример:
  877.  
  878. Welcome -> трансформирано со поместување 5 -> Bjqhtrj
  879.  
  880. Sample input:
  881. 3 5
  882. Welcome to the Machine
  883. Another Brick in the Wall
  884. Shine on you crazy Diamond
  885.  
  886. Sample output:
  887. Bjqhtrj yt ymj Rfhmnsj
  888. Fstymjw Gwnhp ns ymj Bfqq
  889. Xmnsj ts dtz hwfed Infrtsi
  890. */
  891. #include <stdio.h>
  892. #include <stdlib.h>
  893. #include <string.h>
  894.  
  895. void funk(char *pom, int x){
  896.     if(*pom==0){return;}
  897.     if(*pom >= 'A'&&*pom <= 'Z'){
  898.         *pom = 'A' + (*pom + x-'A')%26;
  899.     }
  900.     if(*pom >= 'a'&&*pom <= 'z'){
  901.         *pom = 'a' + (*pom+x-'a')%26;
  902.     }
  903.     pom++;
  904.     funk(pom,x);
  905. }
  906. int main() {
  907.     int i, n, x;
  908.     char niza[80];
  909.     scanf("%d %d\n", &n, &x);
  910.     for(i=0;i<n;i++){
  911.         gets(niza);
  912.         char *pom=niza;
  913.         funk(pom, x);
  914.         printf("%s\n", niza);
  915.     }
  916.     return 0;
  917. }
  918. /*
  919. Цензура
  920. Од стандарден влез се читаат N низи од знаци (стрингови) не подолги од 80 знаци. Секој од вчитаните стрингови треба да се копира на специјален начин во нов стринг на тој начин што при копирањето на местото на самогласките во првиот стринг ќе се копираат * во новиот стринг. Копираниот (новиот) стринг да се отпечати на СИ.
  921.  
  922. Специјалната функција за копирање да се имплементира со посебна рекурзивна функција.
  923.  
  924. Sample input:
  925. 1
  926. bomb
  927.  
  928. Sample output:
  929. b*mb
  930.  
  931. */
  932. #include <stdio.h>
  933. #include <stdlib.h>
  934. #include <string.h>
  935.  
  936. char *f(char niza[],int d) {
  937.     if(!d) {
  938.         if(niza[d]=='a' || niza[d]=='A' || niza[d]=='e' || niza[d]=='E' || niza[d]=='i' || niza[d]=='I' || niza[d]=='o' || niza[d]=='O' || niza[d]=='u' || niza[d]=='U')
  939.             niza[d]='*';
  940.         return niza;
  941.     }
  942.     if(niza[d]=='a' || niza[d]=='A' || niza[d]=='e' || niza[d]=='E' || niza[d]=='i' || niza[d]=='I' || niza[d]=='o' || niza[d]=='O' || niza[d]=='u' || niza[d]=='U')
  943.         niza[d]='*';
  944.     return f(niza,d-1);
  945. }
  946.  
  947. int main() {
  948.     int n;
  949.     scanf("%d",&n);
  950.     char niza[80],nov[80];
  951.     while(n) {
  952.         scanf(" %[^\n]",niza);
  953.         strcpy(nov,f(niza,strlen(niza)));
  954.         printf("%s\n",nov);
  955.         n--;
  956.     }
  957.     return 0;
  958. }
  959. /*
  960. Линии
  961. Да се напише програма која вчитува матрица со димензии MxN (макс. 100x100). На почетокот се внесуваат димензиите на матрицата, а потоа и елементите на матрицата кои се само вредностите 1 и 0. Програмата треба да изброи и отпечати на СИ во колку од редиците и колоните има барем 3 последователни елементи со вредност 1.
  962.  
  963. Пример:
  964.  
  965. 1 1 1 1
  966. 0 0 1 1
  967. 0 0 1 1
  968. 1 ред + 1 колона = 2
  969.  
  970. Sample input:
  971. 3 4
  972. 1 1 1 0
  973. 1 0 1 1
  974. 1 0 0 1
  975.  
  976. Sample output:
  977. 2
  978.  
  979. */
  980. #include <stdio.h>
  981. #include <stdlib.h>
  982. #define MAX 100
  983.  
  984. int main() {
  985.  
  986.     int m,n,i,j;
  987.     scanf("%d%d",&m,&n);
  988.     int a[MAX][MAX];
  989.     for(i=0; i<m; i++)
  990.         for(j=0; j<n; j++)
  991.             scanf("%d",&a[i][j]);
  992.     int br=0;
  993.     for(i=0; i<m; i++) {
  994.         for(j=0; j<n-2; j++)
  995.             if(a[i][j]==1&&a[i][j+1]==1&&a[i][j+2]==1) {
  996.                 br++;
  997.                 break;
  998.             }
  999.  
  1000.     }
  1001.     for(j=0; j<n; j++)
  1002.         for(i=0; i<m-2; i++)
  1003.             if(a[i][j]==1&&a[i+1][j]==1&&a[i+2][j]) {
  1004.                 br++;
  1005.                 break;
  1006.             }
  1007.     printf("%d",br);
  1008.  
  1009.     return 0;
  1010. }
  1011. /*
  1012. Датотека со бројки
  1013.  
  1014.  
  1015. Sample input:
  1016.  
  1017.  
  1018. Sample output:
  1019.  
  1020.  
  1021. */
  1022. #include <stdio.h>
  1023. #include <string.h>
  1024. #define MAX 100
  1025.  
  1026. //ne menuvaj!
  1027. void wtf() {
  1028.     FILE *f = fopen("broevi.txt", "w");
  1029.     char c;
  1030.     while((c = getchar()) != EOF) {
  1031.         fputc(c, f);
  1032.     }
  1033.     fclose(f);
  1034. }
  1035.  
  1036. int prva(int n)
  1037. {
  1038.     while(n>9)
  1039.     {
  1040.         n/=10;
  1041.     }
  1042.     return n;
  1043. }
  1044.  
  1045. int main()
  1046. {
  1047.     wtf();
  1048.     int n,b,p,max,maxB=0,i;
  1049.     FILE *f=fopen("broevi.txt","r");
  1050.     fscanf(f, "%d", &n);
  1051.     while(n!=0)
  1052.     {
  1053.        max=0;
  1054.        for(i=0;i<n;i++)
  1055.         {
  1056.             fscanf(f,"%d",&b);
  1057.             if(prva(b)>max)
  1058.             {
  1059.                 max=prva(b);
  1060.                 maxB=b;
  1061.             }
  1062.         }
  1063.         printf("%d\n",maxB);
  1064.         fscanf(f, "%d", &n);
  1065.      }
  1066.    
  1067.     fclose(f);
  1068.     return 0;
  1069.        
  1070. }
  1071. /*
  1072. Правоаголници
  1073.  
  1074.  
  1075. Sample input:
  1076.  
  1077.  
  1078. Sample output:
  1079.  
  1080.  
  1081. */
  1082. #include <stdio.h>
  1083.  
  1084. //ne ja menuvaj ovaa funkcija!
  1085. void wtf() {
  1086.     FILE *f = fopen("Podatoci.txt", "w");
  1087.     char c;
  1088.     while((c = getchar()) != EOF) {
  1089.         fputc(c, f);
  1090.     }
  1091.     fclose(f);
  1092. }
  1093.  
  1094. // vashiot kod ovde
  1095. void pr(int n, int p)
  1096. {
  1097.     int i,j;
  1098.     for(i=0;i<p;i++)
  1099.     {
  1100.         for(j=0;j<n;j++)
  1101.             printf("& ");
  1102.         printf("\n");
  1103.     }
  1104. }
  1105.  
  1106. void vlez_izlez(FILE *f)
  1107. {
  1108.     int m,n,p;
  1109.     fscanf(f,"%d",&m);
  1110.     fscanf(f,"%d",&n);
  1111.     fscanf(f,"%d",&p);
  1112.     int i;
  1113.     for(i=0;i<m;i++)
  1114.     {
  1115.         if(i%2)
  1116.         pr(p,n);
  1117.         else pr(n,p);
  1118.     }
  1119. }
  1120.  
  1121. int main()
  1122. {
  1123.     wtf();
  1124.    
  1125.     // vashiot kod ovde
  1126.     FILE *f=fopen("Podatoci.txt","r");
  1127.    
  1128.     vlez_izlez(f);
  1129.        
  1130.     return 0;
  1131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement