NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
martin nemecek:29.10.2024 9:28

ahoj, potřebuju napovědět jak mám měnit hodnoty, zatím, v poli(2 prvků)..nedaří se mi vypsat všechny změněné hodnoty pole,pro kontrolu. vypisuje mi to chaos na terminál.
když neměním obsah pole,tak to vypíše prvn2 dob5e a potom nějaké nesmysly i když tam mám "2*sizeof(int)"(viz obr. zeroscale)
když změním obsah pole,tak to loopuje jen jednou "sizeof(znaky)/si­zeof(int)"(viz obr. scale1x)
díky

#include <stdio.h>
#include <stdlib.h>


int znaky[] ={
        16,32
};

void scale_znaky(int* znaky, int xxx){
        if(xxx==0){     /*------------------------------ zadna zmena */
        for(int i = 0; i < 2*sizeof(int);i++)
        {
                znaky[i] = znaky[i];
            printf("%d\n",znaky[i]);
        }
        }else if(xxx==1){       /*---------------------- zmensit 1x */
        for(int i = 0; i < sizeof(znaky)/sizeof(int);i++)
        {
                znaky[i] = znaky[i]>>1;
            printf("%d\n",znaky[i]);
        }
        }
}

int main(int argc, char* argv[]){

    int ce = 1;

    scale_znaky(znaky, ce);

    system("cmd.exe");

    return 0;
}

Zkusil jsem: různé weby:
https://mrlvsb.github.io/…ka_pole.html
a jine........

Chci docílit: chci se naučit pracovat s polem,abych si mohl upravovat velikost oken v textuře podle rozlišení monitoru.(práce s grafikou)

 
Odpovědět
29.10.2024 9:28
Avatar
Odpovídá na martin nemecek
martin nemecek:29.10.2024 12:31

Vyreseno !

for(int i = 0; i < (sizeof(znaky)/si­zeof(int));i++) ...chybely tam zavorky.... 🙄 🙂

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
29.10.2024 12:31
Avatar
DarkCoder
Člen
Avatar
Odpovídá na martin nemecek
DarkCoder:29.10.2024 14:46

Je dobré oddělovat různé činnosti od sebe, tedy mít samostatnou funkci pro scale a pro výpis pole. Scale je lineární funkce, není třeba nastavovat mody ve volání, lepší je použít rovnou scale koeficient a s ním pracovat uvnitř funkce. Podívej na modifikovaný příklad:

#include <stdio.h>

void print_arr(int* arr, int size);
void scale_arr(int* arr, int size, int scale);

int main(void) {
    int arr[] = { 16,32 };
    int size = sizeof(arr) / sizeof(int);

    int scale_koef = 1; // 0 - shrink, 1 - beze změny, 2+ - zvětšení
    scale_arr(arr, size, scale_koef);
    print_arr(arr, size);

    return 0;
}

void print_arr(int* arr, int size) {
    for (int i = 0; i < size; i++) printf("%d\n", arr[i]);
}

void scale_arr(int* arr, int size, int scale) {
    for (int i = 0; i < size; i++) arr[i] = arr[i] * scale;
}
Nahoru Odpovědět
29.10.2024 14:46
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
martin nemecek:29.10.2024 17:08

No super. Tohle je přesně ono. ...Mám totiž texturu(custom znakovou sadu) s okny 16x32(jako ideálně čitelný rozměr). A potřebuji akorát 1x shrink, beze změny, 1x zvětšení. To úplně stačí...Funkce na 3 řádky i se závorkama...
Tak díky za tip.

 
Nahoru Odpovědět
29.10.2024 17:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.