vineri, 25 aprilie 2008

Proiect 3

Sorry for the late poast, am fost cam prins saptamana asta.

Ideea la proiectul 3 este sa creati o clasa lista universala - campul de informatie trebuie sa poata stoca orice tip de data/clasa.
Sunt mai multe metode de implementare, nu va restrang la nici una dar va recomand sa o incercati pe a treia (punctajul va fi un pic subiectiv si adjustat in functie de complexitatea rezolvarii oferite de voi - asta nu inseamna ca daca faceti ca mine pierdeti puncte ci doar sa incercati sa scrieti cat mai bine algoritmul si sa fie cat mai universal).
Metode de rezolvare care imi trec in cap momentan:
1. liste clasice cu o modalitate de a avea ca membru orice tip de clasa (fara templates)
2. liste clasice cu templates
3. mai apropiat de conceptul de vector decat cel de lista. Dar imaginati-va urmatoarea structura:
struct Lista{
ListHeader header;
void *data;
}
data va pointa catre spatiul de memorie alocat pentru lista noastra. ListHeader ar trebui sa aiba cam urmatorii membri:
  • dimensiunea unui element (pentru lista de int va fi sizeof(int) etc)
  • nr de elemente alocate
  • nr de elemente in lista
  • marja de siguranta - daca nr alocate - nr lista <= marja realocam lista (realloc) cu
  • nr elemente alocate la realocare
E posibil sa mai fie nevoie si de alte chestii, vedeti pe parcurs.

Lista trebuie sa poata as faca:
  • insertie
  • scoaterea unui element din lista
  • cautarea dupa indice si cheie (la cheie e un pic dubios pentru unele clase, incercati ceva cat mai ... cum va trece voua prin cap si cat de cat okay)
  • sortarea elementelor listei (aveti grija ca nu e obligatori ca toate clasele sa aiba suprascris operatorul <)
Cam atat cred... daca imi mai trece ceva prin cap I'll let you know.

Paste Fericit si toate cele bune.

marți, 22 aprilie 2008

Update

Cum se cam termina saptamanile de scoala am sa va rog sa hurry up a bit cu proiectul 1 - puteti sa ma spamati cu rezolvarea (mailul si adresa de mess sunt in profil). O sa incerc sa ma uit pe ele in limita timpului disponibil. In saptamana cu pastele ma cam indoiesc ca o sa am vreun compilator instalat pe calculator deci trimiteti si un printscreen cu rezultatele, sa am si eu o oarecare siguranta ca va merge minunatul program. Nu m-am hotarat inca si daca ii voi penaliza pe cei care au intarziat cu spor la predarea proiectului.

In legatura cu proiectul 2 - este recomandat sa-l faca macar cat de cat cei care nu prea m-au vazut la ochi semestrul asta pe la laborator. Sper ca saptamana asta sa afisez enuntul la proiectul 3 care va fi obligatoriu.

Pentru orice nemultumiri/neclaritati nu ezitati sa ma contactati.

Pentru cei care au ratat ultimul laborator faceti un google search pentru c++ template classes si cititi primul link s ava faceti o idee despre templates.

luni, 14 aprilie 2008

Intrebare update

Se pare ca am avut spam instant - deci premiul s-a luat, de catre colegi de-ai vostri mai descurcareti. Pentru cine a ratat-o era vorba de singleton care se pare ca acu se preda la curs.
Stiu ca a fost un pic nedrept pentru unii din voi etc...

duminică, 13 aprilie 2008

Proiect 1 again

Se pare ca a disparut post-ul pentru proiectul 1. Enuntul pentru cei care nu si-au notat undeva. Si ar fi dragut, chiar indicat/recomandat, sa aduceti proiectele sa nu ma faci sa impun regului and stuff.

Clasa "matrice" (matrice de double), avand:
- membri privati pentru matricea propriuzisa, numarul de linii si numarul
de coloane;

- constructor pentru initializarea cu un numar dat pe toate componentele
(primeste ca parametru numarul respectiv si numarul de linii si de
coloane);

- constructori pentru initializare si copiere;

- metode publice pentru citire si afisare (preferabil suprascrierea operatorilor >> si <<);

- metoda-operator public de atribuire =;

- metoda publica pentru reactualizarea numarului de linii si coloane si
initializarea componentelor cu un numar dat (primeste ca parametru
numarul respectiv, numarul liniilor si al coloanelor);

- operator []; implementarea se va face astfel incat daca a este o matrice, i si j doi intregi iar x un real, sa fie posibile constructii ca:
"cin>>a[i][j]", "cout<< x="a[i][j]">

- operatori friend: + (in doua variante: suma si matricea insasi (unar)), - (in doua variante: diferenta si opusa (unar)), * (in doua variante: produsul matricilor si inmultirea cu un scalar)
- +=, -=, *= (cu efectul cunoscut; *= se va scrie in doua variante, avand in vedere inmultirea si inmultirea cu un scalar),
- == (testarea egalitatii), != (testarea neegalitatii) <, <=, >, >= (comparare pe componente), operatorii ==, !=, <, <=, >, >= se vor scrie in trei variante, pentru a putea lucra cu operanzi matrice-matrice, real-matrice, matrice-real (in ultimele doua cazuri se va compara matricea data cu un vector de aceeasi dimensiune care are pe fiecare componenta numarul respectiv); aveti grija la operatiile care sunt comutative;

- !(daca matricea are 0 pe toate componentele, furnizeaza intregul 0, altfel furnizeaza intregul 1),
- functii "nrlinii", "nrcoloane", "nrelemente" care furnizeaza
numarul liniilor, coloanelor, respectiv nr elementelor matricii;

duminică, 6 aprilie 2008

Proiect 2



Clasa "obiect", avand:
- ca membri privati: un "void*" (adresa unei zone de memorie, alocata dinamic, continand informatia aferenta obiectului), si un "int"(dimensiunea zonei);
- o metoda de citire si una de afisare (implementarea este la latitudinea programatorului);
- operatorul friend: <(implementarea lor este la latitudinea programatorului insa se va baza pe continutul pointerului la void, nu doar pe dimensiune).

Restul metodelor necesare sunt la latitudinea pprogramatorului.

Sa se creeze o lista simplu inlantuita de "obiecte" (list se va implementa ca clasa) si sa se sorteze.

Dupa ce se sorteaza, se afiseaza (cumva) continutul clasei si cat la suta ocupa instanta respectiva din memoria totala ocupata de instantele din clasa "obiect".