Advertisement
Resonati

Untitled

Jun 9th, 2019
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.28 KB | None | 0 0
  1. 6.2.1
  2. Napisz funkcję, która dostaje jako argument dodatnie liczby całkowite n i m, tworzy dynamiczną dwuwymiarową tablicę tablic elementów typu int o wymiarach n na m, i zwraca jako wartość wskaźnik
  3. do niej.
  4. int** alokuj(unsigned int n, unsigned int m){
  5. int **t=malloc(n*sizeof(int*)); //tablica wskaźnikow rozmiaru n
  6. int i;
  7. for(i=0;i<n;i++)
  8. {
  9. t[i]=malloc(m*sizeof(int));
  10. }
  11. return t;
  12. }
  13. alternA
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. void laczenie(char *tab, char*tab1){
  17. int i=0;
  18. while(tab[i]!=0)
  19. {
  20. i++;
  21. }
  22. int j=0;
  23. while(tab1[j]!=0){
  24. tab[i]=tab1[j];
  25. j++;
  26. i++;
  27. }
  28. tab[i]=tab1[j];
  29. }
  30. int main()
  31. {
  32. char tab[255]="dfdfdafdfaghjhjj";
  33. char tab1[255] = "appak";
  34. printf("%s ",tab);
  35. laczenie(tab,tab1);
  36. printf("%s ",tab);
  37. return 0;
  38. }
  39. 6.2.2.Napisz funkcję, która dostaje jako argument dodatnie liczby całkowite n i m, tworzy dynamiczną dwuwymiarową tablicę elementów typu int o wymiarach n na m i zwraca jako wartość wskaźnik do niej.
  40. int(* alokuj2(unsigned int n, unsigned int m))[]{
  41. return malloc(n*sizeof(int[m]));
  42. }
  43. 6.2.3.
  44. Napisz funkcję, która dostaje jako argumenty wskaźnik do dwuwymiarowej tablicy tablic elementów typu int oraz jej wymiary: dodatnie liczby całkowite n i m, i usuwa z pamięci otrzymaną tablicę.
  45. void zwolnij(unsigned int n, unsigned int m, int **t){
  46. int i;
  47. for(i=0;i<n;i++)
  48. {
  49. free(t[i]);
  50. }
  51. free(t);
  52. }
  53. 6.2.4.
  54. Napisz funkcję, która dostaje jako argumenty wskaźnik do tablicy dwuwymiarowej elementów typu int oraz jej wymiary wymiary
  55. n i m, i usuwa z pamięci otrzymaną tablicę.
  56. void zwolnij2(unsigned int n, int t[][n]){
  57. free(t);
  58. }
  59. 6.2.7. Napisz funkcję, która dostaje jako argument dodatnią liczbę całkowitą n, tworzy dynamiczną dwuwymiarową trójkątną tablicę tablic elementów typu int o wymiarach n na n i zwraca jako wartość wskaźnik do niej.
  60. int** alokujtrojkatna(unsigned int n){
  61. int **t=malloc(n*sizeof(int*));
  62. int i;
  63. for(i=0;i<n;i++)
  64. {
  65. t[i]=malloc((i+1)*sizeof(int));
  66. }
  67. return t;
  68. }
  69. 6.2.8
  70. Napisz funkcję, która dostaje w argumentach dwuwymiarową tablicę elementów typu int, o pierwszym wymiarze podanym jako drugi
  71. argument funkcji oraz drugim wymiarze równym 100 i wypełnia ją
  72. zerami
  73. void zeruj(int t[][100], unsigned int n){
  74. int i,j;
  75. for(i=0;i<n;i++)
  76. {
  77. for(j=0;j<100;j++)
  78. {
  79. t[i][j]=0;
  80. }
  81. }
  82.  
  83. }
  84. 6.2.9.Napisz funkcję, która dostaje w argumentach dwuwymiarową tablicę tablic elementów typu int oraz jej wymiary n i m, i wypełnia ją
  85. zerami.
  86. void zeruj2(int** t, unsigned int n,unsigned int m){
  87. int i,j;
  88. for(i=0;i<n;i++)
  89. {
  90. for(j=0;j<m;j++)
  91. {
  92. t[i][j]=0;
  93. }
  94. }
  95.  
  96. }
  97. 6.2.10 Napisz funkcję, która dostaje w argumentach tablicę dwuwymiarową elementów typu int oraz jej wymiary n i m, i wypełnia ją
  98. zerami.
  99. void zeruj3(unsigned int n,unsigned int m, int t[][m]){
  100. int i,j;
  101. for(i=0;i<n;i++)
  102. {
  103. for(j=0;j<m;j++)
  104. {
  105. t[i][j]=0;
  106. }
  107. }
  108.  
  109. }
  110. 6.2.11 Napisz funkcję, która dostaje w argumentach tablicę dwuwymiarową
  111. elementów typu int, o pierwszym wymiarze podanym jako drugi argument funkcji oraz drugim wymiarze równym 100, która to funkcja
  112. zwraca jako wartość sumę wartości elementów tablicy
  113. int suma(int t[][100], unsigned int n){
  114. int i,j;
  115. int S=0;
  116. for(i=0;i<n;i++)
  117. {
  118. for(j=0;j<100;j++)
  119. {
  120. S=S+t[i][j];
  121. }
  122. }
  123. return S;
  124. }
  125. 6.2.12 Napisz funkcję, która dostaje w argumentach dwuwymiarową tablicę tablic o elementach typu int oraz jej wymiary n i m, i zwraca jako wartość sumę wartości elementów tablicy.
  126.  
  127. void suma2(int** t, unsigned int n,unsigned int m){
  128. int i,j;
  129. int S=0;
  130. for(i=0;i<n;i++)
  131. {
  132. for(j=0;j<m;j++)
  133. {
  134. S=S+t[i][j];
  135. }
  136. }
  137.  
  138. }
  139. 6.2.13
  140. Napisz funkcję, która dostaje w argumentach tablicę dwuwymiarową o elementach typu int oraz jej wymiary n i m, i zwraca jako
  141. wartość sumę wartości elementów tablicy
  142. int suma3(unsigned int n,unsigned int m, int t[][m]){
  143. int i,j;
  144. int S=0;
  145. for(i=0;i<n;i++)
  146. {
  147. for(j=0;j<m;j++)
  148. {
  149. S=S+t[i][j];
  150. }
  151. }
  152.  
  153. }
  154. 6.2.14
  155. Napisz funkcję, która dostaje w argumentach tablicę trójwymiarową o elementach typu int o wymiarach 100 × 100 × 100, i zwraca
  156. jako wartość sumę wartości elementów tablicy
  157. int suma4(int t[][100][100]){
  158. int i,j,k;
  159. int S=0;
  160. for(i=0;i<100;i++)
  161. {
  162. for(j=0;j<100;j++)
  163. {
  164. for(k=0;k<100;k++)
  165. {
  166. S=S+t[i][j][k];
  167. }
  168. }
  169. }
  170. return S;
  171. }
  172. 6.2.15
  173. 5 Napisz funkcję, która dostaje w argumentach dodatnią liczbę całkowitą n oraz tablicę trójwymiarową o elementach typu int o wymiarach
  174. n × 100 × 100, i zwraca jako wartość sumę wartości elementów otrzymanej tablicy
  175. int suma5(unsigned int n, int t[][100][100]){
  176. int i,j,k;
  177. int S=0;
  178. for(i=0;i<n;i++)
  179. {
  180. for(j=0;j<100;j++)
  181. {
  182. for(k=0;k<100;k++)
  183. {
  184. S=S+t[i][j][k];
  185. }
  186. }
  187. }
  188. return S;
  189. }
  190. 6.2.16 Napisz funkcję, która dostaje jako argumenty dwuwymiarową tablicę tablic o elementach typu int oraz jej wymiary, i zwraca jako
  191. wartość indeks wiersza o największej średniej wartości elementów.
  192. Przyjmujemy, że dwa elementy leżą w tym samym wierszu, jeżeli mają
  193. taki sam pierwszy indeks.
  194. int indeks_wiersza(int **t, unsigned int n, unsigned int m){
  195. int i,j;
  196. int S,max,indeks;
  197. for(i=0;i<n;i++)
  198. {
  199. S=0;
  200. for(j=0;j<m;j++)
  201. {
  202. S=S+t[i][j];
  203. }
  204. if (i==0) ///wartosci poczatkowe dla pierwszego wiersza
  205. {
  206. max=S;
  207. indeks=0;
  208. }
  209. if (max<S)
  210. {
  211. max=S;
  212. indeks=i;
  213. }
  214. }
  215. return indeks;
  216. }
  217. 6.2.17
  218. ) Napisz funkcję, która dostaje jako argumenty dwuwymiarową tablicę tablic o elementach typu int oraz jej wymiary, i zwraca największą spośród średnich wartości elementów poszczególnych wierszy.
  219. Przyjmujemy, że dwa elementy leżą w tym samym wierszu, jeżeli mają
  220. taki sam pierwszy indeks.
  221. int indeks_wiersza2(int **t, unsigned int n, unsigned int m){
  222. int i,j;
  223. int S,max;
  224. for(i=0;i<n;i++)
  225. {
  226. S=0;
  227. for(j=0;j<m;j++)
  228. {
  229. S=S+t[i][j];
  230. }
  231. if (i==0) ///wartosci poczatkowe dla pierwszego wiersza
  232. {
  233. max=S;
  234. }
  235. if (max<S)
  236. {
  237. max=S;
  238. }
  239. }
  240. return (double)(S/m);
  241. }
  242. 6.2.18
  243. Napisz funkcję, która dostaje jako argument dwuwymiarową tablicę
  244. tablic o elementach typu int oraz jej wymiary, i wypisuje jej zawartość
  245. na standardowym wyjściu w taki sposób, żeby kolejne wiersze tablicy zostały wypisane w oddzielnych wierszach standardowego wyjścia.
  246.  
  247. void wypisz(int **t, unsigned int n, unsigned int m){
  248. int i,j;
  249. for(i=0;i<n;i++)
  250. {
  251. for(j=0;j<m;j++)
  252. {
  253. printf("%d\t",t[i][j]);
  254. }
  255. printf("\n");
  256. }
  257. }
  258. 6.2.19 Napisz funkcję, która dostaje jako argumenty dwie dwuwymiarowe tablice tablic o elementach typu int oraz ich wymiary, i przepisuje zawartość pierwszej tablicy do drugiej tablicy.
  259.  
  260. void przepisz(int **t1, int **t2, unsigned int n, unsigned int m){
  261. int i,j;
  262. for(i=0;i<n;i++)
  263. {
  264. for(j=0;j<m;j++)
  265. {
  266. t2[i][j]=t1[i][j];
  267. }
  268. }
  269. }
  270. 6.2.20
  271. Napisz funkcję, która dostaje jako argumenty dwie dwuwymiarowe tablice tablic o elementach typu int oraz ich wymiary, i zamienia zawartości obu tablic.
  272. void zamien(int **t1, int **t2, unsigned int n, unsigned int m){
  273. int i,j,pom;
  274. for(i=0;i<n;i++)
  275. {
  276. for(j=0;j<m;j++)
  277. {
  278. pom=t2[i][j];
  279. t2[i][j]=t1[i][j];
  280. t1[i][j]=pom;
  281. }
  282. }
  283. }
  284. 6.2.21 Napisz funkcję, która dostaje jako argumenty dwuwymiarową tablicę tablic o elementach typu int oraz jej wymiary, i odwraca kolejność elementów we wszystkich wierszach otrzymanej tablicy (przyjmujemy, że dwa elementy tablicy leżą w tym samym wierszu, jeżeli
  285. mają taką samą pierwszą współrzędną).
  286.  
  287. void odwroc_wiersze(int **t, unsigned int n, unsigned int m){
  288. int i,j,pom;
  289. for(i=0;i<n;i++)
  290. {
  291. for(j=0;j<m/2;j++)
  292. {
  293. pom=t[i][j];
  294. t[i][j]=t[i][m-1-j];
  295. t[i][m-1-j]=pom;
  296. }
  297. }
  298.  
  299. }
  300. 6.2.22
  301. Napisz funkcję, która dostaje jako argumenty tablicę dwuwymiarową o elementach typu int oraz jej wymiary, i odwraca kolejność
  302. elementów we wszystkich wierszach otrzymanej tablicy (przyjmujemy, że dwa elementy tablicy leżą w tym samym wierszu, jeżeli mają
  303. taką samą pierwszą współrzędną)
  304.  
  305. void odwroc_wiersze2(unsigned int n, unsigned int m, int t[][n]){
  306. int i,j,pom;
  307. for(i=0;i<n;i++)
  308. {
  309. for(j=0;j<m/2;j++)
  310. {
  311. pom=t[i][j];
  312. t[i][j]=t[i][m-1-j];
  313. t[i][m-1-j]=pom;
  314. }
  315. }
  316.  
  317. }
  318. 6.2.23
  319. Napisz funkcję, która dostaje jako argumenty dwuwymiarową
  320. tablicę tablic o elementach typu int oraz jej wymiary, i zmienia kolejność wierszy w tablicy w taki sposób, że wiersz pierwszy ma się znaleźć na miejscu drugiego, wiersz drugi ma się znaleźć na miejscu trzeciego itd., natomiast ostatni wiersz ma się znaleźć na miejscu pierwszego (przyjmujemy, że dwa elementy tablicy leżą w tym samym wierszu jeżeli mają taką samą pierwszą współrzędną).
  321. void wiersze_w_dol(int **t, unsigned int n, unsigned int m){
  322. int i,j,pom;
  323. for(j=0;j<m;j++)
  324. {
  325. pom=t[n-1][j];
  326. for(i=n-1;i>0;i--)
  327. {
  328. t[i][j]=t[i-1][j];
  329. }
  330. t[0][j]=pom;
  331. }
  332. }
  333.  
  334. 6.2.24
  335. Napisz funkcję, która dostaje jako argumenty dwuwymiarową tablicę tablic o elementach typu int oraz jej wymiary, i zmienia kolejność kolumn w tablicy w taki sposób, że kolumna pierwsza ma się znaleźć na miejscu drugiej, kolumna druga ma się znaleźć na miejscu trzeciej
  336. itd., natomiast ostatnia kolumna ma się znaleźć na miejscu pierwszej (przyjmujemy, że dwa elementy tablicy leżą w tej samej kolumnie, jeżeli mają taką samą drugą współrzędną).
  337.  
  338. void kolumny_w_prawo(int **t, unsigned int n, unsigned int m){
  339. int i,j,pom;
  340. for(i=0;i<n;i++)
  341. {
  342. pom=t[i][m-1];
  343. for(j=m-1;j>0;j--)
  344. {
  345. t[i][j]=t[i][j-1];
  346. }
  347. t[i][0]=pom;
  348. }
  349. }
  350. 6.2.25
  351. Napisz funkcję, która dostaje jako argumenty dwuwymiarową kwadratową tablicę tablic tab o elementach typu int oraz jej wymiar,
  352. i zmienia kolejność elementów w otrzymanej tablicy w następujący
  353. sposób: dla dowolnych k i j element tab[k][j] ma zostać zamieniony
  354. miejscami z elementem tab[j][k]
  355. void zamiana_miejsc(int **t, unsigned int n){
  356. int i,j,pom;
  357. for(i=1;i<n;i++)
  358. {
  359. for(j=0;j<i;j++)
  360. {
  361. pom=t[i][j];
  362. t[i][j]=t[j][i];
  363. t[j][i]=pom;
  364. }
  365. }
  366. }
  367. 6.2.6 Napisz funkcję, która dostaje jako argumenty dwuwymiarową prostokątną tablicę tablic tab1 o wymiarach n × m i elementach typu int
  368. oraz jej wymiary, i zwraca jako wartość wskaźnik do nowo utworzonej
  369. dwuwymiarowej tablicy tablic tab2 o wymiarach m × n zawierającej
  370. int** transpozycja(int **t1, unsigned int n, unsigned m){
  371. int **t2=malloc(n*m*sizeof(int));
  372. int i,j,pom;
  373. // int t2[m][n];
  374. for(i=0;i<n;i++)
  375. {
  376. for(j=0;j<m;j++)
  377. {
  378. t2[j][i]=t1[i][j];
  379. }
  380. }
  381. return t2;
  382. }
  383. 6.2.7
  384. Napisz funkcję, która dostaje jako argumenty dodatnią liczbę całkowitą n oraz trójwymiarową tablicę tablic tab elementów typu int o wymiarach n×n×n, i zamienia elementy tablicy w taki sposób, że dla dowolnych i, j, k z zakresu od 0 do n − 1, wartość z komórki tab[i][j][k] po wykonaniu funkcji ma się znajdować w komórce tab[k][i][j].
  385. void zamiana_trojwymiarowej(int ***t, unsigned int n){
  386. int i,j,k,pom;
  387. for(i=1;i<n;i++)
  388. {
  389. for(j=i;j<n;j++)
  390. {
  391. if(i==j)
  392. {
  393. k=i;
  394. }
  395. else
  396. {
  397. k=i+1;
  398. }
  399. for(;k<n;k++)
  400. {
  401. pom=t[i][j][k];
  402. t[i][j][k]=t[j][k][i];
  403. t[j][k][i]=t[k][i][j];
  404. t[k][i][j]=pom;
  405. }
  406. }
  407. }
  408. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement