IZP/Cviko7_1/main.c

99 lines
2.6 KiB
C
Raw Permalink Normal View History

2024-11-21 17:14:54 +01:00
#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;
}