infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: FMIAnita Liviu din Octombrie 28, 2010, 23:02:57



Titlul: Alocare dinamica-functii
Scris de: FMIAnita Liviu din Octombrie 28, 2010, 23:02:57
Salut, tot eu :) M-am apucat sa invat alocare dinamica, am inteles in mare parte, insa m-am incurcat la ceva.Tot ce e in functii am inteles, insa n-am priceput cum iau adr1,adr2 si adr valori in main (e pus acolo comentariu in sursa)
Cod:

#include<iostream>
using namespace std;

void* cit_mat(int m,int n)
{   int i,j,(*adr1)[10]=new int [10][10];
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            cin>>adr1[i][j];
    return adr1;
}

void tip_mat(int m,int n, int(*adr1)[10])
{   int i,j;
    for(i=0;i<m;i++)
    {   for(j=0;j<n;j++)
            cout<<adr1[i][j]<<" ";
        cout<<endl;
    }
}

void* suma_mat(int m,int n, int(*adr1)[10],int (*adr2)[10])
{   int i,j,(*adr)[10]=new int[10][10];
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            adr[i][j]=adr1[i][j]+adr2[i][j];
    return adr;
}


int main()
{
    int m,n,i,j,(*adr)[10],(*adr1)[10],(*adr2)[10];
    cout<<"m="; cin>>m;
    cout<<"n="; cin>>n;
    adr1=(int(*)[10])cit_mat(m,n);//De ce (int(*)[10])cit_mat(m,n)
    adr2=(int(*)[10])cit_mat(m,n);//De ce doar operatorul de dereferentiere in paranteze?
    adr=(int(*)[10])suma_mat(m,n,adr1,adr2);
    tip_mat(m,n,adr);
    return 0;
}

PS: Am scris toate functiile ca nustiu...poate ajuta cu ceva, desi problema mea e ca nu inteleg ce se intampla in main...


Titlul: Răspuns: Alocare dinamica-functii
Scris de: Sima Cotizo din Octombrie 29, 2010, 08:54:57
Acolo nu ai dereferentiere, ci typecasting. Functiile iti returneaza pointeri void*, tie iti trebuie int*.


Titlul: Răspuns: Alocare dinamica-functii
Scris de: FMIAnita Liviu din Octombrie 29, 2010, 13:12:52
Am priceput in mare...insa ma poti ajuta cu un link, ceva legat de asta? :)


Titlul: Răspuns: Alocare dinamica-functii
Scris de: Sima Cotizo din Octombrie 29, 2010, 14:37:19
Google e prietenul tau! http://tinyurl.com/2u5daqf

Un link mai la obiect, ca sa te scutesc de cautari:
http://www.exforsys.com/tutorials/c-plus-plus/c-type-conversions.html

Insa oricand poti sa faci si tu pasii pe care i-am facut eu: 1) cauti pe google 2) citesti 2-3 articole 3) daca ai neclaritati intrebi pe forum. In plus, facand ai un mare beneficiu: cand intrebi ceva, deja anticipezi raspunsul sau, mai bine chiar, intelegi jargonul folosit de cel care iti raspunde.

PS: de ce toata lumea vrea mura-n-gura totul?


Titlul: Răspuns: Alocare dinamica-functii
Scris de: FMIAnita Liviu din Octombrie 29, 2010, 14:46:35
Nu vroiam mura-n gura, sunt linuxar, crede-ma, sunt obisnuit sa caut.Ideea era ca am cautat aseara (inainte sa postez) despre alocare in heap&stuff, dar nu prea am gasit cine stie ce.Si ma steptam ca typecastingul si matricea alocata in heap ( sa zic asa) sa fie legate...de-aia te-am rugat sa ma ajuti cu un link, odata ce tu ai inteles ceea ce eu n-am prea priceput, aveai idei de keyworduri, dupa aia un CTRL+c CTRL+v la link si in 30 de sec era gata.Mersi mult oricum, acuma ma uit peste ele (ca sa nu iesi in paguba, ti le dau inapoi, daca vrei).


Titlul: Răspuns: Alocare dinamica-functii
Scris de: Gabriel Bitis din Octombrie 29, 2010, 14:47:58
Coty, nu mai scrie cu fonturi asa mici ca poate se intelege altceva!


Titlul: Răspuns: Alocare dinamica-functii
Scris de: Sima Cotizo din Octombrie 29, 2010, 15:24:58
Coty, nu mai scrie cu fonturi asa mici ca poate se intelege altceva!
:D fixed

@patrunjel: nu te zbarli, o formulare de genul "am cautat 'typecasting c++' pe google dar nu m-am lamurit" te asigur ca nu deranjeaza pe nimeni ;)