Titlul: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Paul Diac din Noiembrie 25, 2005, 11:07:58 Se poate folosi primul "smen" si pe tablouri bidimensionale? De exemplu daca vreau sa folosesc a[0..100][-100..100] se poate cumva?
int A[201]; #define A (A + 100) Asta era pentru tablouri unidimensionale. stiu ca se poate remedia cu o noua dimensiune, ceva de genul a[0..100][0..1][0..100] cu a
Titlul: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Adrian Vladu din Noiembrie 25, 2005, 13:07:18 Da. Gandeste-te cum este alocata matricea. Valorile din celulele ei sunt pastrate pe pozitii consecutive de memorie. Astfel dupa pozitia in care este pastrata valoarea lui A[ x ][0] urmeaza valoarea lui A[ x ][1], ..., dupa pozitia lui A[ x ][NMAX - 1] urmeaza valoarea lui A[x + 1][0] etc.
Asadar, A[ i ][j] poate fi adresat altfel prin A + i * NMAX + j (am notat cu NMAX numarul de coloane cu care este declarata matricea). Dar macro-ul ce face? Inlocuieste direct in cod orice aparitie a lui A cu A + 100. Adica daca vei avea declarat A[ i ][j], care este acelasi cu A + i * NMAX + j, acel define il va transforma in A + 100 + i * NMAX + j, adica A[ i ][j +100] :D Ai totusi grija cu astfel de define-uri, deoarece in programarea serioasa nu sunt recomandate, deoarece (de multe ori datorita neintelegerii modului in care functioneaza) pot duce la erori greu de gasit si de reparat. ;) Titlul: Raspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Andrei Homorodean din Ianuarie 12, 2007, 17:09:12 Imi cer scuze daca gresesc, dar mie functia de inmultire a2-a nr mari nu-mi da bine intotdeauna. Nu se poate cineva uita peste ea, sa dea niste teste si sa-mi zica daca gresesc? Multumesc, si scuzati orice deranj :?
Aceasta este functia: Cod: 1. void mul(int A[], int B[]) Nu stiu, poate ma insel(din nou), chiar daca mie nu imi merge pe borland e corect sa zici " int C[]; "? Mie nu mi se prea pare... Titlul: Raspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Marius Stroe din Ianuarie 12, 2007, 18:00:28 Functia e corecta. Trebuie doar sa ai 0 daca depasesti numarul de cifre al numarului pastrat in vector.
Prin int C[] lasa dimensiunea vectorului la alegerea ta. Titlul: Raspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Sima Cotizo din Ianuarie 13, 2007, 14:56:06 Da ?!? ... :) nu ma gandisem, intelegeam altceva =D>
Totusi, e la fel de corect sa pui : Cod: void mult(int *A, int *B, int *C) { Titlul: Raspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Marius Stroe din Ianuarie 13, 2007, 19:46:27 Daca vectorul C e transmis ca pointer, atunci ai grija la memset(C, 0, sizeof(C)), ca sizeof(C) == sizeof(int).
Titlul: Raspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Mircea Pasoi din Ianuarie 13, 2007, 22:08:55 Fixed. Nu uitati ca site-ul este acum un wiki ceea ce inseamna ca orice utilizator poate edita continutul, asadar cand mai gasiti erori nu ezitati sa le corectati chiar voi.. user power :thumbup:
Titlul: Raspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Andrei Homorodean din Februarie 02, 2007, 13:14:58 Cod: #include <stdio.h> Bun, si totusi, tot nu inteleg ce nu fac bine, m-a terminat functia asta... 3 4 1 5 4 1 4 5 6 Pentru testul asta ar trebui sa dea 604240.. Titlul: Raspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Airinei Adrian din Februarie 02, 2007, 13:44:34 Nu ai facut putin debug? Ideea e ca numarul trebuie sa-l tii invers in vector.
Titlul: Raspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Andrei Homorodean din Februarie 02, 2007, 14:38:28 Ce bomba sunt....Mi-e si rusine, dar faza e ca e atat de incurcata functia aia de...... multumesc mult, oricum :|
Titlul: Răspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: HighScore din Martie 03, 2007, 21:36:37 la smenul lui "Mars" nu ar trebui sa se prezinte in enunt si faptul ca B0=0?
Titlul: Răspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Silviu-Ionut Ganceanu din Martie 10, 2007, 11:15:00 la smenul lui "Mars" nu ar trebui sa se prezinte in enunt si faptul ca B0=0? Mai degraba ar trebui precizat ca indicii (st, dr) din operatia ADUNA respecta inegalitatea 0 <= st <= dr < N. B-ul este plin cu 0 la inceputul operatiilor presupunand ca A este si el umplut tot cu 0. Apropo, gandeste-te cum adaptezi algoritmul daca elementele lui A au niste valori initiale. Titlul: Răspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: HighScore din Martie 13, 2007, 16:38:41 adicã ce valori initiale ar trebui sa avem in B dacã A-ul este deja initializat? :?
Titlul: Răspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Silviu-Ionut Ganceanu din Martie 13, 2007, 22:53:15 adicã ce valori initiale ar trebui sa avem in B dacã A-ul este deja initializat? :? Da. Titlul: Răspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Stefan Istrate din Ianuarie 08, 2008, 01:10:18 La implemetarea AVL-urilor din articol, se pare ca functiile rotleft si rotright fac exact pe dos ceea ce ar trebui sa faca: rotleft face rotatie la dreapta, iar rotright la stanga. Conform http://en.wikipedia.org/wiki/Tree_rotation (http://en.wikipedia.org/wiki/Tree_rotation), ar trebui exact invers. Am dreptate sau mi se pare mie? :)
Titlul: Răspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Mircea Pasoi din Ianuarie 08, 2008, 02:18:24 La implemetarea AVL-urilor din articol, se pare ca functiile rotleft si rotright fac exact pe dos ceea ce ar trebui sa faca: rotleft face rotatie la dreapta, iar rotright la stanga. Conform http://en.wikipedia.org/wiki/Tree_rotation (http://en.wikipedia.org/wiki/Tree_rotation), ar trebui exact invers. Am dreptate sau mi se pare mie? :) Depinde cum privesti :) Titlul: Răspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Stefan Istrate din Ianuarie 08, 2008, 08:52:39 Pai consider rotatie stanga cand radacina subarborelui se duce in stanga. La fel am vazut in multe alte surse, dar, intr-adevar, nu se schimba corectitudinea algoritmului.
Titlul: Răspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Adrian Diaconu din Ianuarie 08, 2008, 09:48:49 Poti sa te gandesti ca rotleft e o rotatie in urma careia nodul stang ajunge radacina.
Titlul: Răspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Andrei Grigorean din Ianuarie 08, 2008, 18:18:37 Si mie mi se pare ca ar trebui sa fie invers. :)
Titlul: Răspuns: Multe "smenuri" de programare in C/C++... si nu nu Scris de: Stefan Istrate din Februarie 20, 2009, 01:44:55 Discutiile pot continua in topicul destinat acestui articol: http://infoarena.ro/forum/index.php?topic=3673.0
|