99 lines
2.6 KiB
C
99 lines
2.6 KiB
C
|
#include "types.h"
|
||
|
#include <stdio.h>
|
||
|
|
||
|
// fixed array size
|
||
|
#define ARR_SIZE 10
|
||
|
|
||
|
#ifndef TEST_BUILD
|
||
|
|
||
|
int main(int argc, char *argv[]) {
|
||
|
// TODO: 0. Staticky inicializujte alokované pole
|
||
|
int array[ARR_SIZE] = {1,2,3,4,5,6,7,8,9,10};
|
||
|
|
||
|
array_print(array, ARR_SIZE);
|
||
|
|
||
|
// TODO: 2b. Pronásobte hodnoty pole libovolným číslem
|
||
|
array_multiply(array, ARR_SIZE,2);
|
||
|
// TODO: 2c. Vytiskněte aktualizované pole
|
||
|
array_print(array, ARR_SIZE);
|
||
|
|
||
|
// TODO: 3b. Vložte libovolnou hodnotu na indexy 3 a 7
|
||
|
int a = array_insert(array,ARR_SIZE, 69, 3);
|
||
|
int b = array_insert(array,ARR_SIZE, 420, 7);
|
||
|
// TODO: 3c. V případě chyby informujte uživatele
|
||
|
if(!a || !b){
|
||
|
printf("Upsík dupsík, nastala chyba");
|
||
|
return 1;
|
||
|
}
|
||
|
// TODO: 3d. Vytiskněte aktualizované pole
|
||
|
array_print(array, ARR_SIZE);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
/**
|
||
|
* Vytiskne obsah pole na standardní výstup programu.
|
||
|
* Tisk musí proběhnout na jeden řádek, konkrétní
|
||
|
* oddělovač jednotlivých prvků není vynucován.
|
||
|
*
|
||
|
* Hlavičky žádných funkcí NEMĚŇTE!
|
||
|
*
|
||
|
* @param array pole, které bude zobrazeno
|
||
|
* @param size velikost pole
|
||
|
*/
|
||
|
void array_print(int array[], int size) {
|
||
|
// TODO: 1a. implementujte funkci dle zadání
|
||
|
for (int i = 0; i < size; i++) {
|
||
|
printf("%d ", array[i]);
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Vynásobí všechny prvky zadaného pole zvolenou hodnotou.
|
||
|
*
|
||
|
* Hlavičky žádných funkcí NEMĚŇTE!
|
||
|
*
|
||
|
* @param array pole, jehož hodnoty budou násobeny
|
||
|
* @param size velikost pole
|
||
|
* @param multiplier násobitel
|
||
|
*/
|
||
|
void array_multiply(int *array, int size, int multiplier) {
|
||
|
for (int i = 0; i < size; i++) {
|
||
|
array[i] *= multiplier;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Vloží prvek do zadaného pole na zvolený index.
|
||
|
* Ostatní prvky přesune směrem doprava, ke konci pole.
|
||
|
* Přebývající prvek je smazán.
|
||
|
*
|
||
|
* Hodnoty relevantních vstupních parametrů odpovídajícím
|
||
|
* způsobem ošetřete.
|
||
|
*
|
||
|
* Hlavičky žádných funkcí NEMĚŇTE!
|
||
|
*
|
||
|
* @param array pole, do kterého bude nový prvek vložen
|
||
|
* @param size velikost pole
|
||
|
* @param value hodnota k vložení
|
||
|
* @param position index na který bude hodnota vložena
|
||
|
*
|
||
|
* @returns hodnotu 1 pokud vložení proběhlo úspšně, 0 jinak
|
||
|
*/
|
||
|
int array_insert(int array[], int size, int value, int position) {
|
||
|
if(position > size-1 || position < 0) return 0;
|
||
|
for (int i = 0; i < size; i++) {
|
||
|
if(position == i){
|
||
|
for (int afterInsertIndex = size-1; afterInsertIndex>position; afterInsertIndex--) {
|
||
|
array[afterInsertIndex] = array[afterInsertIndex-1];
|
||
|
}
|
||
|
array[position] = value;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
return 1;
|
||
|
}
|