Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ahoj,
mam ukazatel na matice U a Un. Jak si šáhnu na hodnotu matice U na pozici 3,2 a uložim jí do matice Un?
Napadlo mě
*Un[3][2]=*U[3][2];
ale nějak to nejde. Propojuji Matlab a C++, tak nevim, zda projde přes kompilátor. Ale otázka stojí takto: JE TENTO ZÁPIS SPRÁVNÝ V C++? Taky je možný, že mi chybí nějaká knihovna.
Dík
Offline
↑ Asinkan:
Tak je to pro matici 3x3
*(Un+3+ 2)
Offline

V C++ by se melo podle me napsat:
Un[2][1]=U[2][1]
(2 a 1 proto, ze v C++ se pole indexuji od 0, zalezi na tom, co myslis tou pozici 3,2)
Tak kdyztak dej vedet jestli je to to, co potrebujes (jestli to jeste potrebujes).
Offline
↑ Lumikodlak:
To co, jsi napsal funguje pro matice, ne pro ukazatele na matice.
Offline

↑ Asinkan:
Můžeš prosím ukázat, jak máš proměnné definované? Nevytváříš náhodou „matici ukazatelů“? Nevytváříš ukazatel na ukazatel na pole?
Edit: Jestli se nepletu, tak když máš třeba
int pole[2];
tak „pole“ už je ukazatel na první prvek pole. Zápis
pole[1]
a
*(pole+1)
by měl být ekvivalentní. (Za předpokladu, že si to dobře pamatuji, v C už jsem hodně dlouho nic nepsal.)
Offline

↑ Asinkan:
To se omlouvam, spatne jsem si to precetl. V tom pripade by melo fungovat tohle:
(*Un)[2][1]=(*U)[2][1]
Offline
↑ Pavel Brožek:
Já mam matice vytvořené v Matlabu a přes mexFunction je posílam do C++, tam pak vše volám pomocí toho jak píšeš *(pole+i). Vcelku už tomu rozumím. Jen pro zajímavost mi C++ zrychlilo výpočet ze 6 minut na 15 vteřin :-> Díky všem.
Offline