Zadejte hledaný výraz...

Programování C – funkce a pointery

Tomáš
verified
rating uzivatele
27. 11. 2013 14:12:52
sečtení dvou vektorů a uložení výsledku do třetího (pozor, neumíme
nijak jednoduše napsat funkci tak, aby jako svůj výsledek (pomocí return)
vracela pole -- bude potřeba to předat z funkce ven ne jako "výsledek",
ale jako nějakou změnu v okolním světě, tj. prostřednictvím ukazatelů
Toto nám napsali do poznámek, snažil jsem se na to jít jako vy, ale stejný výsledek.
27. 11. 2013 14:12:52
https://webtrh.cz/diskuse/programovani-c-funkce-a-pointery/strana/2#reply970422
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
27. 11. 2013 14:40:38
tohle je funkční. profesor ať si trhne :)
#include
void main()
{
int delkaVektoru = 3;
int poleA;
int poleB;
int sum;
int hodnotyVektoruA;
int hodnotyVektoruB;
int i;
for(i = 0; i < delkaVektoru; i++){
printf("Zadejte %d. souradnici 1. vektoru: ", i+1);
scanf("%d", &hodnotyVektoruA);
poleA = hodnotyVektoruA;
}
for(i = 0; i < delkaVektoru; i++){
printf("Zadejte %d. souradnici 2. vektoru: ", i+1);
scanf("%d", &hodnotyVektoruB);
poleB = hodnotyVektoruB;
}
vysledek(poleA, poleB, delkaVektoru);
}
int vysledek(int poleA[], int poleB[], int delkaVektoru)
{
int poleC; int i;
for(i = 0; i < delkaVektoru; i++){
poleC = poleA + poleB;
printf("%d ", poleC);
}
}
27. 11. 2013 14:40:38
https://webtrh.cz/diskuse/programovani-c-funkce-a-pointery/strana/2#reply970421
Josef Vyhnánek
verified
rating uzivatele
(6 hodnocení)
27. 11. 2013 14:46:11
Upravím jen snaživý kód neCčkaře :D
Problém je v tom, že pole se reprezentuje jako ukazetele s dereferenci (tzn. hodnoty v poli). Nezkoušel jsem to, při nejhorším by bylo potřeba upravit i definici proměnných poleA a poleB na dynamickou alokaci a konečnou dealokaci jako je tomu u proměnné sum. Tohle jsou základy Cčka...
Důležité jsou i návratové typy. Když napíšete fci jako void, nemůžete se divit že vrací "nic"...
27. 11. 2013 14:46:11
https://webtrh.cz/diskuse/programovani-c-funkce-a-pointery/strana/2#reply970420
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
27. 11. 2013 14:48:48
Já věděl, že se někdo chytí :)
27. 11. 2013 14:48:48
https://webtrh.cz/diskuse/programovani-c-funkce-a-pointery/strana/2#reply970419
Tomáš
verified
rating uzivatele
27. 11. 2013 14:53:25
Problém je v tom, že pole se reprezentuje jako ukazetele s dereferenci (tzn. hodnoty v poli). Nezkoušel jsem to, při nejhorším by bylo potřeba upravit i definici proměnných poleA a poleB na dynamickou alokaci a konečnou dealokaci jako je tomu u proměnné sum. Tohle jsou základy Cčka...
Důležité jsou i návratové typy. Když napíšete fci jako void, nemůžete se divit že vrací "nic"...
Díky, že jsi mě popostrčil, snad od téhle chvíle to dodělám zbytek.
Ano jsou to základy, protože ty základy se učím :).
Bedříšek: Tobě také děkuji.
27. 11. 2013 14:53:25
https://webtrh.cz/diskuse/programovani-c-funkce-a-pointery/strana/2#reply970418
Vilem
verified
rating uzivatele
(11 hodnocení)
27. 11. 2013 14:57:23
Mně napadlo jen řešit to přes *vektorC v mainu a pak používat pointerovskou aritmetiku:
+ dynamické alokování.
// Ale koukám, že už jdu trochu s křížkem po funuse.
27. 11. 2013 14:57:23
https://webtrh.cz/diskuse/programovani-c-funkce-a-pointery/strana/2#reply970417
Tomáš
verified
rating uzivatele
28. 11. 2013 18:09:17
Pokud tu ještě někdo je :), tak malá otázka ..
if(znak != 'A+B'){
printf("Vysledek je: ");
poleC = soucetVektoru(delkaVektoru, poleA, poleB);
for(int i = 0; i < delkaVektoru; i++){
printf("%dn", poleC);
}
Mám takový kousek programu, ale problém je, že mi to vypíše výsledek až na 5 enter a nevím jak se těch enterů zbavit.
28. 11. 2013 18:09:17
https://webtrh.cz/diskuse/programovani-c-funkce-a-pointery/strana/2#reply970416
Pro odpověď se přihlašte.
Přihlásit