27.08.2008

Se duce lumea pe P. . A!!!

am trait sa o vad si pe asta!!!!!!.......chiar daca nu-mi vine sa cred ... dar e adevarat .... a aparut Prima televiziune GAY din Romania ....

TV Angelicuss - televiziunea ta gay! http://www.tvangelicuss.beanangel.ro/


se duce lumea pe "apa sambetei" ......chiar de asta mai aveam nevoie acuma ...o reclama foarte buna pt tara noastra draga..=))

Din programul noului post: "Ora 14.00 - Buna dimineata!" cu Petruta Grasa, Miss Travesty Romania 2008, "5 in 1" - emisiune muzicala, "Salut!", "GAYjurnal", "Sunt altfel!" - povestiri din viata gay, s.a.

..si mai participa si la jocurile olimpice......=)) ..aici un articol din revista cu aceasi nume "deosebit de incitant" =))... vai tuh ce implanturi ti-ai tras....=))

Singurul atlet gay declarat de la Jocurile Olimpice castiga aurul ...Iata ca s-a intamplat. Matthew Mitcham, singurul atlet de sex masculin de la Beijing care si-a recunoscut orientarea sexuala, pleaca spre casa cu aurul la gat la platforma de 10 metri. El este unul dintre primii sportivi gay asumati care concureaza, fiind si primul australian care castiga medalia de aur la aceasta proba din 1924.

20.08.2008

Carti programare

aveti aici cateva linkuri spre carti de programare gratuite in format PDF:

Cartea de algoritmi de Razvan Andonie & Ilie Garbacea. Algoritmii sint in C/C++, foarte buna pt. cei care vor sa invete C sau C++.
PHP-Manualul programatorului

Carti gratuite in engleza

Thinking in C++, Volume 2: Practical Programming [Bruce Eckel] Final version (print version) - December, 2003
Book in HTML + source-code tree and makefiles.

Teach Yourself C++ in 21 Days

C++ in action [Bartosz Milewski]

Optimizing C++ [Steve Heller]

The C Book [Mike Banahan, Declan Brady & Mark Doran]

de asemenea va recomand un site foarte util unde o sa va lamuriti toate problemele legate de programare www.programare.org

Lista liniara simplu inlantuita

si se apropie sesiunea de restante....:D .....cred ca ar fi cazul sa ma pun sa citesc ceva la Programarea vietii!! si totodata m-am gandit sa-i fac o sectiune speciala, caci de acum incolo numai programare o sa vad si Grafica de asemenea...
Am sa incep cu "Lista liniara simplu inlantuita" :

DEF: O lista liniara inlantuita este o colectie de n>=0 elemente x[1].....x[n] toate de un tip oarecare, numite noduri intre care exista o relatie de ordine determinata de pozitia lor relativa.

Listele inlantuite cu un singur camp de legatura se numesc liste simple inlantuite (legatura indica urmatorul element din lista ) iar cele cu 2 campuri de legatura se numesc liste dublu inlantuite (o legatura indica nodul precedent iar cealalta nodul succesor)


#include
#include
#include
typedef struct lista // definirea listei
{
int cheie; //informatia propriu-zisa
struct lista *urm; //informatia de legatura, pointer spre urmatorul element
} lista; //al listei
lista *prim; //definire variabile

void creare() //crearea listei simple inlantuite
{
lista *p,*q;
int n,i=2;
printf("Introduceti nr de noduri:");
scanf("%d",&n);
prim=NULL; // initializarea listei
p=(lista*)malloc(sizeof(lista)); //alocarea de spatiu pt nodul ce urmeaza sa fie
printf("Introduceti valoarea primului nod: "); //introdus in lista si
scanf("%d",&p->cheie); //citirea informatiei aferente acestui nod
// generarea legaturilor corespunzatoare
p->urm=NULL; // nu exista inca un element urmator in lista
prim=p; //pointerul prim trebuie sa indice in permanenta capul listei
while(i<=n) //introducerea nodurilor
{ q=(lista*)malloc(sizeof(lista)); //alocarea de spatiu pt nodul ce urmeaza sa
printf("Introduceti valoarea din nodul: %d ",i); // fie inserat
scanf("%d",&q->cheie );
p->urm=q; //stabilim legatura dintre nodurile ce se insereaza
q->urm=NULL; //ultimul element nu are succesor si trebuie egalat cu NULL
p=q;
i++;
}

}

void afisare() //afisare lista
{
lista *p;
p=prim;
while(p)
{
printf("%d ",p->cheie);
p=p->urm;
}
}

void adaugare_cap(int x) //inserarea unui element in capul listei
{
lista *p;
p=(lista*)malloc(sizeof(lista)); //alocarea de spatiu pt elementul ce urmeaza
p->cheie=x; //sa fie inserat
//scanf("%d",&p->cheie);
p->urm=prim; //urmatorul element celui pe care il inseram va
//fi fostul prim element al listei
prim=p; //prim va indica noul cap al listei
}

void adaugare_sf(int x) //inserarea unui element la sfarsitul listei
{
lista *p,*q;
for(p=prim;p->urm;p=p->urm); //pornim cu pointerul p de la capul listei si
//iesim din ciclul for in momentul in care pointerul
//p va indica ultimul element al listei
q=(lista*)malloc(sizeof(lista)); //alocarea de spatiu pt elementul ce urmeaza sa fie inserat
q->cheie=x;
p->urm=q; //stabilim legatura dintre ultimul element si elementul ce urmeaza sa fie inserat
q->urm=NULL; //noul ultim element nu are succesor
}

void adaugare_dupa(int x) //inserare dupa nodul precizat de o cheie data
{
lista *p, *q;
for(p=prim;p;p=p->urm) // pornim cu pointerul p de la capul listei si
//iesim din ciclul for daca am ajuns la capatul listei
//sau daca valoarea din campul cheie este cea cautata
if (p->cheie==x) //daca iesirea din ciclu s-a facut prin gasirea valorii dorite
{
q=(lista*)malloc(sizeof(lista)); //alocarea de spatiu pt elem. ce urmeaza sa fie inserat
printf("Introduceti valoarea de inserat: ");
scanf("%d",&q->cheie);
q->urm=p->urm;
p->urm=q; //dupa nodul indicat de pointerul p va urma noul nod indicat de q
break; //iesirea din ciclu
}
}

void cautare(int x) //cautarea unei anumite valori intr-o lista simplu inlantuita
{
lista *p;
int v=0;
for(p=prim;p;p=p->urm) //traversam lista pana gasim elementul dorit sau ajungem la finalul listei
if (p->cheie==x) v=1;
if (v) {printf("valoarea a fost gasita ");putchar('\n');}
else {printf("valoarea nu a fost gasita ");putchar('\n');}
}

void sterge_prim() //stergerea primului nod din lista
{
lista *p;
p=prim;
prim=prim->urm; //pointerul prim va indica urmatorul element care devine astfel capul listei
free(p); //eliberam memoria ocupata de nodul indicat de pointerul p
}

void sterge_cheie(int x) //stergerea unui nod avand o cheie data
{
lista *p,*q;
q=NULL;
for(p=prim;p&&p->cheie!=x; q=p, p=p->urm); //traversam lista pana gasim elementul
//sau ajungem la finalul listei
if (!p) //daca nodul a fost gasit
if (p!=prim) //daca nodul cautat nu e capul listei
{
q->urm=p->urm; //pointerul p indica nodul ce urmeaza a fi sters iar r indica
//predecesorul nodului indicat de p
free(p); //eliberam memoria ocupata de nodul indicat de pointerul p
}
else //daca nodul ce urmeaza a fi sters este capul listei
{
prim=prim->urm; //pointerul prim va indica urmatorul element care devine astfel capul listei
free(p); //eliberam memoria ocupata de nodul indicat de pointerul p
}
else printf("nu exista cheia specificata"); //elementul nu a fost gasit
}

void sterge_lista() // stergerea tuturor elementelor unei liste
{
lista *p;
while(prim) //atat timp cat prim nu contine null
{
p=prim;
prim=prim->urm;
free(p); //eliberam memoria ocupata de nodul indicat de pointerul p
}
}
void main(void)
{
int a;
printf("Crearea listei \n");
creare();

printf("afisare lista \n");
afisare();putchar('\n');

printf("Introduceti elementul de adaugat in capul listei: \n");
scanf("%d",&a);
adaugare_cap(a);
printf("lista noua este ");putchar('\n');
afisare();putchar('\n');

printf("Introduceti elementul de adaugat la sfarsitul liste:i \n");
scanf("%d",&a);
adaugare_sf(a);
printf("lista noua este ");putchar('\n');
afisare();putchar('\n');

printf("Introduceti cheia dupa care se adauga o valoare: \n");
scanf("%d",&a);
adaugare_dupa(a);
printf("lista noua este ");putchar('\n');
afisare();putchar('\n');

printf("Introduceti valoarea care se cauta: ");
scanf("%d",&a);
cautare(a);putchar('\n');

printf("Introduceti cheia din nodul care se sterge: \n");
scanf("%d",&a);
sterge_cheie(a);
printf("lista noua este ");putchar('\n');
afisare();putchar('\n');

printf("se sterge primul nod ");putchar('\n');
sterge_prim();
printf("lista noua este "); putchar('\n');
afisare();putchar('\n');
getch();
printf("se sterge toata lista ");
sterge_lista();
}