recursal/Fanatic-Fandom huggingface dataset:
Harmony Meyers

"**Harmony Rae Meyers, née Delangelo"** (born June 21st, 1999) is a current resident of Rosebury, running the local daycare for children of residents and guardians of Beata, as well as working as the de facto elementary teacher of the town. She's known for having a rather innocent and far too trusting personality, her habit of dancing, and love of scarves. Despite troubles at home, she's known to be caring for everyone around her, and loves her children especially: Maisie and Serenity.

## Quotes

> *Ebs was here.*
>
>

- to Frostato, Potatoes.
Life Alert

Life Alert is a company located in the depths of the worst dimension to have ever existed:

Delectamentum anus liberationis.(Delicious anus of liberation).

It is full of 50-year old receptionists whom have all probably had 3 doctor-less abortions.

Only a few people have actually traveled to this dimension and have lived to tell the story, therefore not much is known. They are allied with the UROS because of the frequent and abusive calls received from Orly.
Episode 3: Orly Graduates

Episode 3 starts off with Orly crying in a public bathroom underneath the sink. He was crying about his life, his face, and his autism and how he didn't get to graduate. He was soon pulled out by the mall cops as they saw him as a possible terrotist due to his autism. However, Orly made a very proud speech about his graduation issues, which made everyone cry to how autistic and saw he life was. During the 4 hour monolouge, there are flashbacks from important moments in Orly's life such as Vietnam and Iraq. There are random flashbacks of his autism attacks where he starts crying on the floor, moaning, and throwing things on people. He is also seen having convulsions on the ground. His speech was about how he didn't graduate from SWED, and how it started in the Eygpt Empire by a group of mentally ill people that people thought were sad to the Vietnam War in which the officers created a special unit since he was so sorry for them. Orly started talking about his autism and how gay his life was. Secretly, he was being stalked by Corey, who cried because Orly was such a faggit, and felt very sorry for him. As a result, he gets promoted to Team 69.
Cory in the House

Cory in the House is an 12 time Oscar winning anime series including Cory and his son Obama. The two roam the streets of danktown in the autism dimension. The series is touching and loving, even making the grown man cry as Cory gave birth to Black Friend. Cory and his sons then travel to the real world, where there real journey begins in Iraq.

## Critical Reviews

"So much SWAG" KidzBopz34

"Definetly 2 out of 5 stars!" Teen Vouge

"I love watching this show! Every time Obama and Cory are on, I shows my mom that I'm not the only one who has a shitty life!"-GirlzLife

"This is almost as hot as TraSean's mixtape!"-PlayhouseDisney.

"What the fuck did I just witness . . ."-IGN

"What has our generation come to?" -OscarReviewForum

"My favorite anime!"-Obama

"I want to kill mysllef after watching this"-Bill Nye
EyVRUM

EyVRUM or often refered to Edgy Man is Black Frien'ds long lost nephew who was bron from the swag dimension. However, do to his genes, he turned out to be a midget and frequently stars in "midvget love videos" on Tenner's wbesite with Tenner himslef.

## Physical Traits

Edgy Man, a 420 year old midget is around 69 inches tall and sports an orange skinsuit with man holes in int (
Cory Baxter

Cory Baxter is the modern day president of America and North Korea. He is also Black Friend's father and the brother of Orly. He appears in his hit anime "Cory in the House" featuring Black Friend. He is also Team 69's elite sensei and ninja.

## Jutsus

Cory possess some insane jutsu from the following info below.

**Anime Style Jutsu:** Cory can use his anime skills to combine the anime dimension with the real world, a feat which not even Ginger Friend could achieve. With that, he traps the opponent in a genjutsu in which they star in Cory in the House and live the life of Cory .

**Tsukiyomi:** Like Orly, Cory also possess a sharingan in his nose, but is much more stronger. When doing his creeper face, Cory can activate the Tsukiyomi to transport oppenents into shrek dimension or the Cory in the House dimension.

**Sound Jutsu:** Do to Cory's intense rapping, he can create fire beats that trap the opponents in another genjutsu, in which the anime opening to Cory in the House plays reapeatedly with screaming in the back round for 69 hours and 420 minutes.
Story Arcs

Story Arcs are sections within a story in which the characters focus on a specific thing or event. Which is usually Autism.

## Liberate Dank Town

Episodes:10-30

Corey and Obama are patrolling near Potsbong, which is the Capital of Danktown. Suddenly, a fleet of Weeaboos attack the city, and the Head Weeaboo, who is Fedora guy attacks Cory with his Katana, who in turns blocks with a kunai. That marked the first time that Weeaboo and UFOCS blades clashed since the Great War.

Obama radios in for help and within a few days of fighting, Team 69 and 68 are sent in to help control the situation along with some random fleets of SWED troopers.

During the final assault on the Dank temple, Fedora Guy is confronted by Orlie. Orlie is nearly killed, but then, a masked figure saves him, he is later revealed to be Drake the Dragomir. Black Friend and Ginger Man rush to Orlie's side and assist him in the fight against Fedora Guy. Black Friend is fatally injured and only survives due to the activation of his 420 mode. It is combined with Orlie's Autism and Ginger Man's soul reaping abilities. Before Fedora Guy is rushed to his dimension by his troops, he throws a smoke bomb that causes the three heroes to faint.

Help arrives and the heroes are sent back to HQ in a helicopter piloted by Bob Marley and Kamikaze Failure Frank. Dank Town is liberated and protected by the UR. They receive awards from Corey, but Black Friend vomits all over the medals as the episode closes with Drake watching from the background.
SWED (Organization)

## Purpose

SWED was designed to hunt down and exterminate Weeaboos by sending teams of trained members to random dimensions in order to keep peace. It stands for Secret Weeaboo Extermination Department, in the ouside world, it's known as Smoke Weed Every Day.

## Members

The members consist of people of all ages from birth to death. Once members reach High School, they are assigned to a team and are given actual missions.
Weeaboocaust

The Weeaboocaust was a dark era during the early days of the Great Weeaboo War. Many people were sent to Anime Reeducation camps, that also exterminated half of the population by extracting Autism from them and transferring it to Fedora Guy while he slept.

Many SWED members were killed as a result, but their sacrifice was not in vain, as the Autism Dimension, Jew Dimension, and Earth Dimension allied together to save the Autistic prisoners.

## Notable Casualties

Anne Dank (Died shielding everyone while in 420 mode.)

Spoderman (Seat-belt accident while driving back to base.)

Apple Guy (AIDS)

Black Nurse (AIDS contracted from Apple Guy.)

Bad Rapper Guy (Committed suicide while erotically asphyxiating himself in the shower.

George Dankington (Took a cyanide pill and fatally jizzed himself while being questioned by the Weeaboos.)
The Great Weeaboo War

1980-2000

The Great Weeaboo War was a massive universal conflict that is considered to be the bloodiest and most autistic conflict in the history of everything. The participating dimensions included but are not limited to:

-The Earth Dimension

-Weeaboo Dimension

-Autism Dimension

-Ginger Dimension

-Forever Alone Dimension

-Dank Dimension

## Alliances

Earth/Autism/Ginger/Dank (UFOCS) United Forces of Common Sense

Weeaboo/Forever Alone (UROS) United Rejects of Society

## Combat Used

UROS resorted to cyber'guerilla warfare to crumble the UFOCS's defenses, but they ultimately failed and had to give up. It took the remaining years for the UFOCS to restore justice and imprison War Criminals.

## Notable Participants

-Cory

-Obama

-Kamikaze Failure Frank

-The parents of the main characters.

## Aftermath

The UROS admitted defeat and gave up their military strength.

SWEDS was created, and the main characters were enlisted upon birth.

273,854,824,359,843,607,823,028,358,345 lives were lost as a result.

420 planets were destroyed.

Childhoods were ruined.
Geometry Dash Lite

**Geometry Dash Lite** - wersja próbna Geometry Dash. Dodatek ten został stworzony 12 sierpnia 2013 roku i posiadał tylko jeden poziom - Stereo Madness. Dopiero 21 listopada 2013 roku RobTop dodał nowy poziom - Back On Track. Od tej pory wraz z każdą aktualizacją został dodawany jeden poziom. Obecnie łącznie jest ich 15, czyli ostatni poziom to Hexagon Force. Jednak nie ma tam poziomów społeczności i nie da się dostać do edytora poziomów. Wersja ta powstała po to, żeby gracze wiedzieli, czy opłaca się kupić pełną wersję Geometry Dash. W większości przypadków gracze twierdzili, że się opłaca.

## Poziomy

1. Stereo Madness
2. Back On Track
3. Polargeist
4. Dry Out
5. Base After Base
6. Cant Let Go
7. Jumper
8. Time Machine
9. Cycles
10. xStep
11. Clutterfunk
12. Theory Of Everything
13. Electroman Adventures
14. Electrodynamix
15. Hexagon Force

## Ciekawostki

* W niektórych przejściach do monet znajdują się elementy, które formalnie nie pojawiły się w Geometry Dash Lite.
* Jeśli wejdziesz w opcję ,,Download soundtrack", to będziesz miał możliwość pobrania utworów ze wszystkich poziomów z pełnej wersji, nawet tych, których nie ma w wersji Lite.
* W statystykach są informacje o rzeczach niedostępnych w wersji Lite, jednak zawsze pokazuje się tam 0.
* It is said that Blast Processing will be added to lite in 2.2
Dank Town

Dank Town is a small Metro in which Cory and Obama store all of SWED's AWODDMs (Anti Weeaboo Orbital Drop Defense Mechanisms). It is constantly under fire because the inhabitants are a bunch of Weeaboos on 4chan who can't stop trying to kill eachother over fan theories.

Dank Town is currently undergoing a Civil War.
Anti-Cringe Serum

The anti-cringe serum is a very well known serum throughout the dimensions as the only way to enter the well known Furry Dimension, the mst cancerous and cringiest place known to faggots. The cringe is so strong that it even blew away the likes of Eye of The Spider kid and MattyBRaps. As a result, this concluded team 69 to find what exactly cringe was, and make a serum for it.

## What is Cringe

Cringe, researched by many such as Anne Dank and Adolf Clitler was known to be something very challenging to research, as sometimes cringe could get so autisitc it coudll give you down syndrome. It took years for many to reasearch the item of "cringe", and as the need for reasearch of it grew during the great weeaboo war, even the Bush administration had to put cringe research before cancer resaerch, as it was that important. However, after Bush's inside job, fundign was suspended by autisitc faggots.

The reason for suspension was due to a massive accident. Back in 1986, Banana Man and Dank Kid were looking at a sample from the furry dimension, and were the very first people to try to make a cringe serum to enter and eliminate the Furry Dimesnion, the first of its kind. However, during experimenting, Banan Man tried having sexual intercourse with the cringe sample (this is de to unkown reason), and the cringe was so much that it actually linked thr furry dimension and the human dimension, cuasing a massive meltdown known as the Cherynobyl Nuclear Meltdown of 1986, causing the furries to join the weeaboo war. To this day, known cancer remenents are tumblr, 4chan. reddit, and disney.
Valoare versus referință

Funcțiile care transmit parametrii prin valoare crează implicit, la nivel local, o copie a valorilor. Pentru tipurile de date simple, precum int sau float, lucrul nu este îngrijorător, dar dacă parametrii sunt din tipuri structurate, este posibil să avem probleme. Spre exemplu, funcția următoare primește ca parametri două șiruri de caractere și returnează rezultatul concatenării lor.

```
string concatenare(string a, string b)

{ return a+b; }

```

Preluând parametrii prin valoare, funcția face o copie a argumentelor. Fiind vorma de șiruri de caractere, putem avea de manipulat, astfel, cantități considerabile de date. În aceste situații, o idee foarte bună este de a transmite parametrii prin referință (adresă).

```
string concatenare(string &a, string &b)

{

return a+b;

}

```

Argumentele transmise prin referință nu duc la copierea lor. Funcția operează în acest caz direct asupra șirurilor transmise ca argumente. Este evident că această versiune a funcției este mai eficientă decât prima.

Pe de altă parte, prima abordare poate fi cea mai potrivită în situația în care nu dorim modificarea valorilor inițiale. O măsură de siguranță, în acest caz, ar fi să calificăm parametrii drept constante. Exemplul s-ar scrie, în acest caz după cum urmează:

```
string concatenare(const string &a, const string &b)

{

return a+b;

}

```

Procedând astfel, funcției îi este interzis să modifice valorile parametrilor a și b, putând totuși accesa valorile lor fără a face copii locale. Se asigură, deci, o funcționalitate similară cu transmiterea prin valoare, păstrându-se eficiența în cazul tipurilor de date mari.
Cmmdc

1. Se dau numitorul şi numărătorul unei fracţii. Să se simplifice, dacă se poate, şi să se afişeze fracţia simplificată. Exemplu : Date de intrare 12  32  Date de ieşire  3/8.
2. Se dau trei numere. Determinaţi şi afişaţi cmmmdc al lor. Exemplu : Date de intrare 12  32  38  Date de ieşire 2.
3. Se dă numărul n, să se afişeze toate numerele mai mici ca el prime cu el. Exemplu : date de intrare n=10  date de ieşire  1 3 7 9.
4. Într-o tabără participă b băieţi şi f  fete. Se organizează un joc la care trebuie să participe un număr cât mai mare de echipe, formate din acelaşi număr nrb de băieţi şi nrf de fete. Trebuie să scrieţi un program care determină numărul maxim de echipe care se pot forma şi numărul nrb de băieţi şi, respectiv numărul nrf de fete, care intră în componenţe fiecărei echipe. Dacă nu se pot forma cel puţin două echipe identice, afişaţi Nu ne putem juca. Exemple: pentru b=10  f=15  se va afişa:  5 echipe  cu  2 baieti  3 fete, pentru b=12  f=25 se va afişa Nu ne putem juca.
5. Se citesc de la tastatură patru numere întregi diferite de zero. Numerele reprezintă în ordinea citirii: numărătorul şi numitorul primei fracţii, respectiv numărătorul şi numitorul celei de a doua fracţii. Să se adune cele doua fracţii şi să se afişeze numărătorul şi numitorul sumei. Exemplu: Date de intrare: 6  18  12  24 Date de ieşire:  5  6.
6. Pentru a descoperi numărul cheii ce trebuie să o folosească pentru a putea să o elibereze pe Ileana Cosânzeana, Făt-Frumos are de rezolvat următoarea problemă: Pentru numărul citit pe uşă, trebuie să calculeze suma divizorilor şi, dacă această sumă este un număr prim, atunci codul este egal cu suma cifrelor numărului citit. În caz contrar, codul este egal cu suma cifrelor impare ale numărului citit. Ajutaţi-l pe erou să descopere numărul cheii. Exemple: date de intrare 472 date de ieşire cheia 7  ; Date de intrare 4 date de ieşire cheia 4.
Pointeri

În capitolele anterioare am utilizat variabile de diferite tipuri, explicând ca acestea sunt locaţii de memorie  accesate printr-un identificator. Astfel, nu trebuie sa ne facem griji pentru adresa fizica a acestora.

Pentru programele C++, memoria este sub forma unei succesiuni de locatii elementare cu dimensiunea de un octet, fiecare avand atasata o adresa unica. Acestea sunt numerotate consecutiv, asa incat, dupa celula cu adresa 1000 se poate spune ca urmeaza celula cu adresa 1001, fiind precedata de cea cu adresa 999.

La declararea unei variabile, memoria necesară pentru stocarea valorii acesteia este alocată la o adresa specificată de memorie. În general, programele C++ nu decid locaţia exactă la care variabilele sunt stocate, aceasta sarcina fiind încredințată sistemului de operare.

Totuşi, acest lucru este, în anumite situaţii, acest lucru este util, iar limbajul C++ oferă instrumentele necesare pentru manipularea adreselor de memorie.Trebuie precizat că, chiar dacă putem manipula adresele variabilelor, aceste nu pot fi cunoscute sau determinate anterior execuției programului.
Pointeri și tablouri

Deși pot părea fundamental diferite, cele două concepte sunt, în C++ foarte asemănătoare. Practic, tablourile sunt pointeri către primul element și pot fi convertite, implicit, la acest tip.

Exemplul următor este, deci, complet funcțional:

```
int t[10]], *pt;

pt=t;

```

După atribuirea pt=t, cele două variabile vor fi, în mare măsură, echivalente. Diferența constă în aceea că variabilei pt i se poate atribui, ulterior altă adresă, pe când variabila t va indica tot timpul către acelaşi bloc de memorie alcătuit din 10 locaţii de dimensiunea int. Ca urmare, o atribuire de forma t=pt, nu va fi validată.

Să analizăm exemplul următor:

```
int numere[5];
int * p;

p = numere;  *p = 10;
p++;
*p = 20;

p = &numere[2];
*p = 30;

p = numere + 3;
*p = 40;

p = numere;
*(p+4) = 50;

for (int n=0; n<5; n++)
        cout << numere[n] << ", ";

```

În exemplu, tabloul numere este actualizat prin pointerul p, care face, progresiv, referinta la componentele sale. În urma atribuirii p=numere, pointerul va avea valoarea adresei primului element al tabloului. Prin intermediul operatorului de dereferențiere valoarea 10 este plasată în zona de memorie corespunzătoare. Ulterior, pointerul p avansează la adresa următoare, prin instrucțiunea p++, indicând adresa elementului de indice 1, căruia, prin același mecanism i se atribuie valoarea 20. Asemănător, pointerul avansează la adresele de memorie ale tuturor componentelor vectorului, determinând plasarea valorilor 30, 40, 50. Astfel, la afișare, vom obține, în ordine, valorile 10, 20, 30, 40, 50.

Pointerii și tablourile acceptă aceleași operații, cu aceleași semnificații. Principala diferență, între cele două tipuri de date, este dată de faptul că pointerilor li se pot atribui noi adrese, în tip ce pentru tablouri, adresele sunt fixe.

În capitolul despre tablouri am vorbit despre parantezele drepte, [ ], precizând că sunt folosite pentru a preciza indexul unui element al tabloului. De fapt, acum putem spune că acestea sunt un operator de dereferențiere, cunoscute ca offset operator. Astfel, expresiile următoare sunt echivalente:

```
a[1]=0;
*(a+1)=0;

```
Operatorul de dereferențiere

După cum am precizat, o variabilă care reține adresa altei variabile se numește pointer (în engleză, to point înseamnă a indica, a arăta). Acest lucru se datorează faptului că acest tip de variabile indică spre variabila a cărei adresă o rețin. Pentru a obține acces la valoarea unei  variabile printr-un pointer se utilizează operatorul de dereferențiere. Să urmărim exemplul:

```
int a=100, *pa, b;
pa=&a;
b=*pa;
cout<<b;

```

Variabila pointer pa primește ca valoare adresa variabilei a. Variabila b primește, prin intermediul acesteia valoarea către care indică valoarea reținută de ea.

Este necesar să facem diferență între conținutul variabilei pa, care este 0x28fef4, o adresă de memorie, adică și valoarea obținută prin sintaxa \*pa, care este 5, fiind valoarea reținută de de variabila a, care este situată în memorie la adresa 0x28fef4

Putem afirma acum că operatorii de adresă (&), respectiv de dereferențiere (\*) sunt complementari, având, oarecum, comportamente opuse.
Identificatori

Identificatorii desemneaza diferite entitati:
variabile, constante, tipuri de date. Sunt, practic, numele acestora. Din punct
de vedere formal, identificatorii sunt o succesiune de litere, cifre sau
caractere underscore. În C++ nu pot intra in alcătuirea identificatorilor spații,
semne de punctuație sau simboluri. De asemenea, identificatorii nu pot incepe
cu o cifră.

```
Exemple de identificatori: *nr\_cif, z3, var1, \_start, Num\_Count;*

```

```
Contraexemple: *1a, if, n.20, 12;*

```

O categorie aparte de identificatori sunt cei
proprii limbajului, care se numesc cuvinte rezervate. Prin urmare, utilizatorii

nu pot construi identificatori cu aceste nume:

> -+alignas, alignof, and, and\_eq,
>
>
> asm, auto, bitand, bitor, bool, break, case, catch, char, char16\_t, char32\_t,
> class, compl, const, constexpr, const\_cast, continue, decltype, default,
> delete, do, double, dynamic\_cast, else, enum, explicit, export, extern, false,
> float, for, friend, goto, if, inline, int, long, mutable, namespace, new,
> noexcept, not, not\_eq, nullptr, operator, or, or\_eq, private, protected,
> public, register, reinterpret\_cast, return, short, signed, sizeof, static,
> static\_assert, static\_cast, struct, switch, template, this, thread\_local,
> throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual,
>
>
>
> void, volatile, wchar\_t, while, xor, xor\_eq.
>
>

Trebuie menționat că diferitele medii de

programare pot avea propriile lor cuvinte rezervate, caz în care, evident, nu
vor permite utilizarea lor de catre programatori. Un amănunt foarte important
este acela că C++ este "case sensitive", adică face diferența între literele
majuscule și minuscule. Astfel, identificatorul var difera de Var sau vAr, ori
de vaR. Desigur, ar putea fi folositi toți într-un program, dar un element de
bună practică spune că numele lor trebuie să fie cât mai intuitive și usor de
distins.
Fisa vectori

1. Să se extragă dintr-un vector elementele care au ultima cifră egală cu k şi să se formeze cu ele un alt vector. Să se afişeze cei doi vectori, unul sub altul. Exemplu: dacă se dau n=3, k=7, v[]={17, 23, 47}, atunci vectorul u va fi {17, 47}.
2. Se dau n, un număr natural și n numere întregi. Folosind un alt vector, să se aşeze numerele pare la început. Exemplu: Date de intrare: n=4 și numerele: 3, 4, 6, 5 Date de ieşire: 4 6 3 5.
3. Să se formeze vectorul primelor n, unde n este un număr natural dat, elemente ale şirului lui Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13,21,.... (f[1]=0, f[2]=1, f[i]=f[i-1]+f[i-2]) și să se afișeze în fișierul fibonacci.out
4. Fișierul date.in conține numere naturale mai mici decât 100. Se cere să se afișeze, în ordine crescătoare elementele aflate în fișier. Indicație: se va crea un tablou, inițializat cu zero, care “numără” elementele din fișier. Astfel, fiecare număr din fișier este considerat indice al tabloului și, de fiecare data când este extrase, valoarea din tablou este incrementată (v[x]=v[x]+1)
Tablouri bidimensionale

Tablourile multidimensionale pot fi imaginate ca tablouri de tablouri. Vizual, un tabloul bidimensional ar putea fi privit ca o matrice, iar unul tridimensional, ca un cub.

Iată un exemplu de declarare a unui tablou bidimensional:

```
int matrice[10][10];

```

Tabloul astfel declarat va putea “gazdui” 100 de elemente  (10x10) in tipul de bază int. Memoria alocată, în acest caz va fi 10x10x2 octeți.

Inițializarea unei matrice se face într-un mod asemănător vectorilor. Spre exemplu, iată inițializarea unei matrice cu 2 linii și 3 coloane, care va conține numerele de la 1 la 6.

```
int m[2][3]={{1,2,3},{4,5,6}};

```

Desigur, accesarea acestor elemente se face cu ajutorul unor indici, doi în acest caz.

Iată un exemplu de utilizare a unui astfel de tablou, în care se determină poziţia pe care se găseşte valoarea maximă într-o matrice cu numere reale:

```
#include <iostream>

using namespace std;

int main ()

{

float m[20][20], maxi;

int m,n, i,j, pozi, pozj;

cout<<”Introduceti numarul de linii : ”;

cin>>m;

cout<<”Introduceti numarul de coloane: ”;

cin>>n;

for ( i=0 ; i<m ; i++ )

for ( j=0 ; j<n ; j++ )

cin>>a[i][j];

maxi=a[0][0];

pozi=0;

pozj=0;

for ( i=0 ; i<m ; i++ )

for ( j=0 ; j<n ; j++ )

 if(maxi<a[i][j])

{

maxi=a[i][j];

pozi=i;

pozj=j;

}

cout<<”Elementul maxim se afla pe linia ”<<pozi<<” coloana ”<<pozj;

return 0;

}

```
Declararea pointerilor

Știm că diferitele tipuri de date sunt caracterizate printr-o dimensiune, respectiv printr-o formă de reprezentare. Pentru a ști ce dimensiune a memoriei trebuie accesată și în ce format să fie redate datele, prin operatorul de dereferențiere, este necesară declararea variabilelor pointer  cu indicarea tipului lor de bază, după forma generală:

```
tip_bază * identificator_pointer;

```

Putem, spre exemplificare, scrie următoarele declarări:

```
int *pint;
float *pfloat;
char *pchar;

```

Fiecare dintre variabilele declarate indică spre valori din tipuri diferite, deși fiecare dintre ele este pointer și ocupă în memorie aceeași dimensiune (spre exemplu, în implementarea folosită de CodeBlocks, ei ocupă 4 octeți, indiferent de tipul de bază). Trebuie menționat că asterixul folosit la declararea acestui tip de variabile nu are, în acest caz,  semnificația de operator de dereferențiere.

Să analizăm următorul exemplu:

```
int a= 5, b= 15;
int * pa, * pb;
pa = &a;  // p1 primeste adresa variabilei a
pb = &b; // p2 primeste adresa variabilei b
*pa = 10;// valoarea indicată de pa devine 10
*pb = *pa;// valoarea indicată de pb primește valoarea indicată de pa
pa = pb; //este copiată valoarea variabileo pb peste valoarea variabilei pa
*pa = 20; // valoarea indicată de pa devine 10
cout << "a= " << a<< endl;
cout << "b= " << b<<endl;

```

Să comentăm, îndeaproape, liniile de cod din exemplu. Evident, sunt declarate și inițializate variabilele a și b. Apoi, sunt declarate variabilele pointer pa și pb, care primesc, ulterior valoarea adreselor variabilelor a, respectiv b. În linia a 5-a, ca urmare a atribuirii \*pa=10, variabila a va primi, indirect, prin acționarea asupra pointerului legat de ea, pa, valoarea 10. În linia următoare, tot prin intermediul pointerului, variabila b, de care este legată variabila pb, primește valoarea 10, ca urmare a atribuirii \*pb=\*pa.

Mai departe, variabila pa primește valoarea reținută de pb, fiind practic, suprascrisă. Cum valoarea reținută de pb este adresa variabilei b, pa devine, de asemenea, pointer la b. Prin sintaxa următoare, \*pa=20, se modifică conținutul variabilei b, indirect, prin pointerul pa.

Astfel, la afișare, valoarea lui a va fi 10, iar valoarea lui b, 20.
Funcţii fără tip

În practică funcţiile nu au întotdeauna tip. Aceasta pentru că, uneori, nu este necesar să transmită valori. Dacă, modificând exemplul anterior, am construi o funcţie care să afişeze suma a două numere, am putea scrie:

```
void suma(int x, int y)
{
int sm;
sm=x+y;
cout<<sm;
}

```

Se observă că, în această situaţie, tipul funcţiei este void. Apelul acesteia, în main, ar trebui făcut astfel:

```
int main ()
{

int a,b,c;
cin>>a>>b;
suma (a,b);
}

```

De această dată nu mai este  nici permisă, folosirea variabilei c pentru a determina valoarea sumei sau scrierea apelului ca argument pentru alte funcţii.
Trebuie reţinut că, chiar dacă funcţia nu are tip sau parametri, apelul ei trebuie să respect sintaxa:

```
identificator_functie();

```

prezenţa parantezelor fiind semnul distinctiv faţă de alte declarări sau instrucţiuni.
Dorabaebasic

**Dorabaebasic** - pierwsza część z serii poziomów DorabaeBasic autorstwa Dorabae. Powstała w Update 1.6 i jest popularna.

## Opis

Gra rozpoczyna się dwoma kolcami normalnego wzrostu, położonymi osobno o teksturze przypominającej "Stalagmity" lub "Góry". Następnie jest Mirror Portal, który odwraca cały etao gry, w nim następuje to samo, co na początku, z wyjątkiem tego, że obok Mirror Portalu są cztery kolce oraz Small Jump Ring. Po ukończeniu tego, w etapie pojawiają się te same i tak samo ułożone przedmioty, tylko że są do góry nogami, a my jesteśmy pod wpływem Gravity Portalu, zostaje dodana platforma odpowiadająca podłodze. Po początku, gdy w Electroman Adventures lecimy Mini Shipem,w tym poziomie lecimy zwykłym Shipem, jedynymi przeszkodami są piły, a tło jest czarne. Po locie znów stajemy się kostką i musimy przeskoczyć ok.4 kolce, między którymi są przerwy, następnie są kolumny,po których musimy wskoczyć, by przejść ten segment, a następnie są 2 razy mini kolce z jump ringiem, tak jak mniej więcej w Polargeist, lecz jump ring jest różowy. Nastęnie jest segment z kulką, w której są pojedyncze kolce, raz u góry, raz na dole, potem mamy strzałkę, która infomruje na, żebyśmy byli u góry, by nie uderzyć w ścianę, następnie kulka odbija się o gravity pady. Nagle pojawia się Mini Portal, który zaminia nas w Mini Kulkę, następuje to samo co ze zwykłą, następnie kolce się powiększają. Gdy tło wyblakło do maksymalnej bieli zaczyna się pierwszy segment z UFO'em. Na podłodze i suficie są mini kolce,przeszkadzają nam także porozstawiane piły między kolcami, z tymi samymi przeszkodami następuje sekwencja z Shipem, tło się lekko przyciemnia. Po jeszcze większym przyciemnieniu zaczyna się segment z Kulką, nie ma kolców, ale są co chwilę ściany, pod koniec jest kilka Gravity Padów. Kiedy nadchodzi Segment z Kostką tło jest całkowicie Czarne, pojawiają się także pod koniec Gravity Pady. Kiedy już przekroczymy drugi portal UFO'a tło nie posiada już kolorów skali szarości (w tym przypadku to kolor różowy), pojawiają się niewidzialne kolce. Po tym następuje Segment z Shipem, z tymi samymi przeszkodami. We "finałowej" sekwencji z Kulką poruszamy się z wyrastającej z podłogi lub sufitu platform w towarzystwie pił z dwoma skrzydłami (takimi jak w Clubstep). Etap zakończa się Kostką z Filarami, z czego niektóre posiadają Gravity Pady.
Initializare siruri caractere

Cum șirurile de caractere sunt, în fond, tablouri, inițializarea lor se face asemănător, într-o sintaxă de forma:

```
char s[]={‘S’, ‘a’, ‘l’, ‘u’, ‘t’};

```

În mod automat, la sfârșitul tabloului, în cazul nostru pe poziția a 6-a, deci la indexul 5,se insearează un caracter NULL.

Totuși, există o modalitate mai simplă de a declara un șir de caractere, fără a le enumera, ca în exemplul precedent și anume prin atribuirea, în momentul declarării a unuei constante lilterală,

```
char s[]=”Salut”;

```

Trebuie menționat că acest tip de inițializare poate fi făcut doar în momentul declarării. Încerarea de a scrie, după ce șirul de caractere a fost declarat o sintaxă de tipul:

```
s=”Salut” sau s[]=”Salut”,

```

ar duce la ridicarea unei erori.

în acest caz ar trebui ca, fiecare element să fie inițializat individual.

```
s[0]=’S’;

s[1]=’a’;

s[2]=’l’;

s[3]=’u’;

s[4]=’t’;

```
Valoarea returnată de main

Am observat că funcţia main are, la rândul ei, tip. Acesta este int, iar intrucţiunea return întoarce valoarea 0, prin instrucțiunea: return 0;

Semnificaţia este că funcţia main şi-a încheiat execuţia cu succes. În caz contrar, acesta va returna o altă valoare, ce corespunde unui cod de insucces. Cele două valori sunt constante predefinite în <cstdlib>, anume EXIT\_SUCCESS, respectiv EXIT\_FAILURE.
Operatorul de adresă

Operatorul de adresă (&)

Adresa unei variabile poate fi obținută prin precesarea ei de către operatorul &. În exemplul următor, vom determina afișarea valorii, respectiv a adresei unei variabile, declarate și inițializate anterior.

```
int a=100;
cout<<”Valoarea variabilei este: ”<<a<<” si este stocata la adresa: “<<&a;

```

Desigur, adresa, fiind o valoare numerică, poate fi folosită și în altfel de operații, precum adunarea, scăderea etc.

Continuând exemplul, vom determina, deși nu putem controla conținutul acesteia,  afișarea conținutului adresei următoare a adresei a, din exemplul anterior.

```
cout<<&a+1;

```

Pentru a utiliza adresele în operații de atribuire, este necesară introducerea unui tip special de date: pointer.
Accesul la datele membru

Accesarea membrilor unei structuri se face folosind operatorul de selecție ‘.’. Partea stângă a construcției conține identificatorul unei variabile de tip structură, iar în partea dreapta este identificatorul membrului structurii. Expresiile în care vor fi folosite aceste construcții sunt specifice tipurilor de bază ale datelor membru. Continuând exemplul anterior, putem scrie, pentru variabilele z1 și z2, următoarele sintaxe:

```
cin>>z1.re>>z1.im;

cin>>z2.re>>z2.im;

cout<<”suma numerelor este: ” <<z1.re+z2.re<<”+i*<<”z1.im+z2.im;

```

Reținem că structurile nu pot fi foloste în expresii fără precizarea membrilor. Singura excepție apare în cazul operatorului de atribuire, care permite copierea, în bloc, a datelor unei structuri într-o altă variabilă de același tip. În cazul exemplului de mai sus, putem scrie:

```
z1=z2;

```
Obiectul cin

După cum afirmam mai sus, cin este un obiect al clasei iostream, fiind, deci, însoțit de mai multe metode specifice.

Functia membru get() poate fi utilizată fără parametri pentru a prelua un singur caracter din intrare. În această situație este, evident, recomandată utilizarea operatorului >>, care permite preluarea mai multor intrări.  Funcția este utilă, însă, pentru prealuarea șirurilor de caractere, caz în care operatorul >> nu este eficient, deoarece interpretează spațiile ca separatori. Sintaxa este, în acest caz:

```
cin.get(sir_caractere, lungime, caracter_terminal);

```

Primul parametru, sir\_caractere, este un pointer la o zona de memorie in care va fi depus sirul de carctere. Al doilea parametru, lungime, este un intreg ce reprezinta numarul maxim de caractere ce poate fi citit. Al treilea parametru, optional (implicit este \n), este un caracter ce determină încheierea citirii, dacă nu s-a atins deja numărul maxim de caractere. In cazul in care caracterul de incheiere este intalnit inainte de a fi citit numarul maxim de caractere, acest caracter nu va fi extras din stream.

Asemănătoare metodei get(), având aceeași sintaxă, este metoda getline(). Spre deosebire de precedenta, funcția getline extrage din flux și ultimul caracter. O altă deosebire este, în consecință.  că getline nu acceptă forma fără parametri.

Vom exemplifica cele două metode prezentate, în următoarea secvență:

```
char a[20], b[20];

cin.get(a, 20);

cin.getline(b, 20);

cout<<a<<'\t'<<b;

```

Executând secvența vom observa că, practic, după citirea șirului a, aceasta se oprește, trecând peste citirea șirului b. În fapt, al doilea șir va conține caracterul ‘\n’, sau, caracterul de terminare. Pentru a evita astfel de situații, în care dorim executarea mai multor operații de citire, fie folosim după fiecare utilizare a metodei get() o sintaxă fără parametri, fie vom folosi metoda getline().

Metoda ignore() se utilizează pentru a trece peste un număr de caractere până la întâlnirea unui anume caracter. Sintaxa sa este: cin.ignore(lungime, caracter). Primul parametru reprezintă numărul maxim de caractere ce vor fi ignorate. Cel de-al doilea reprezintă caracterul ce trebuie identificat. În următorul exemplu, metoda este folosită înainte de metoda getline(), pentru a omite citirea, determinată de aceasta a caracterelor dinainte de spațiu.

```
char a[20];

cin.ignore(5, ' ');

cin.getline(a, 20);

cout<<a;

```
Valori implicite

În C++ funcțiile pot avea parametri opționali, pentru care nu sunt necesari parametri de apel. Formal, lucrul este foarte simplu de realizat, constând într-o inițializare făcută parametrului la nivelul antetului. Iată spre exemplu, funcția:

```
float raport(int x, int y=1)

{

return float(x)/y;

}

```

Ea va putea fi apelată atât în apeluri de forma raport(10, 2), cât și sub forma raport(5). În primul caz, funcția trece valorii y valoarea 2, rezultatul returnat fiind cel de îmărțire a lui 10 la 2. În al doilea ipotetic apel nu mai există al doilea parametru și, astfel, valoarea lui y este, automat, trecută 1.
Aritmetica pointerilor

Aritmetica acestui tip de date este puțin diferită de aritmetica întregilor, de pildă. În primul rând, pentru că sunt permise doar două operații: adunarea și scăderea. Dar, și așa, semnificațiile sunt diferite de cele menționate anterior, permițând obținerea unor rezultate diferite, în funcție de dimensiunea tipurilor referite. După cum știm, tipurile tipurile de date fundamentale din C++ au dimensiuni diferite. Astfel, de obicei, char este reprezentat pe 1 octet, int pe 2 sau 4 etc. Putem, pentru a construi un exemplu, presupune că char are un octet, int 2, iar long 4 octeți. În aceste condiții, presupunem că am avea declarările:

```
char *pc;

int *pi;

long *pl;

```

și că, variabilele pointer declarate indică spre locațiile 1000, 2000, 3000.

Cum spuneam, operațiile pc++; pi++; pl++; sunt permise. Numai că, efectul obținut nu este același în fiecare caz. În primul caz, varibila pc va conține valoarea 1. Variabilele pi, respectiv pl vom conține, în mod curios, valorile 2002, respectiv 3004. Explicația este că, în cazul pointerilor, incrementarea se face cu numărul de octeți pe care este reprezentat tipul de bază, pentru ca, în urma acestei operații , ei să indice către elementul următor de același tip.

Un plus de atenție este necesar când folosim pointeri și diferite tipuri de operatori pentru construirea unor expresii. Astfel, în expresia \*p++; nu vom obține acces la valoarea aflată la adresa consecutivă adresei indicate de p, pentru că operatorul ++, deși are prioritatea mai mare decât cel de dereferențiere, fiind postfixat, își face efectul după evaluarea expresiei.

Există patru posibile combinații între operatorul de dereferențiere și operatorii ++, respectiv -- și anume:

*\*p++  // incrementează pointerul, dar dereferențiază adresa neincrementată*

*(\*p)++ //face dereferențierea și apoi incrementează pointerul*

*\*++p //incrementează pointerul și, apoi, face dereferențierea*

*++\*p //face dereferențierea și apoi incrementează pointerul*
Dune Boi

**Dune Boi** to poziom autorstwa Serponge posiadający notę insane z 8 gwiazdkami oraz statusem epic.

## Opis

Etap rozpoczyna się automatyczną kostką odbijaną przez kilka jump padów. Po niej pojawia się dość proste UFO, lecz w tym segmencie trzeba uważać na piły i ściany. Kończy się on zielonym dash orbem. Następnie gracz przeformowuje się w kulę z podwójną prędkością. W jej trybie jest kilka pierścieni. Potem następuje długi fragment z pająkiem ze zmianami szybkości, który trwa aż do 53%, gdzie zaczyna forma fali. Jest ona powolna i łatwa. Później pojawia się trochę szybszy robot. Nie wymaga on również umiejętności. W owym segmencie znajdują się zielone dash orby oraz czerwone pierścienie. Po robocie następuje statek z przemianami prędkości i grawitacji. Fragment rozpoczyna się poczwórną. Na jego końcu gracz zostaje zmniejszony, pojawia się nazwa poziomu i wpada on do mety.

## Monety

* Pierwsza jest umieszczona w 6% między dwoma piłami. Aby ją zdobyć, należy przejść ostrożnie pomiędzy sufitem a piłą. Potem przed monetą pojawi się portal pomniejszający. Wtedy trzeba przemieścić się przez niego.
* Do zebrania drugiej monety znajdującej się w 23%, należy później kliknąć czerwony jump ring 20% i zmniejszyć się by następny taki pierścień odbił Ciebie niżej. Jeżeli będziesz odpowiednio przechodził dalej, moneta będzie Twoja.
* Trzecia (i ostatnia) moneta jest nad podłogą w 50%. Żeby ją zdobyć, trzeba zrobić to co do drugiej monety. Gdy się jest małym graczem, należy przechodzić przez poziom. W segmencie pająka trzeba użyć czarnego pierścienia, spaść na podłogę do monety i przeteleportować się na górę. Następne fragmenty fala i robot będą pomniejszone. W trybie robota należy wejść w sekretny tunel w 63%, którym trzeba przejść do 67%. Potem wszystko będzie jak bez zdobywania monet.

## Błędy

* Od 16 - 18% nie trzeba używać dash orba. Można bezpiecznie podskakiwać UFO.

## Film

https://www.youtube.com/watch?v=NjdBBtW2Ecg Wykonanie przez Maksimym200.
Formatarea ieșirii

Pentru a determina un anumit format al ieșirilor, există, în C++, mai multe metode membru ale obiectului cout.

Metoda width() permite modificarea dimensiunii valorii trimise spre ieșire, care implicit este considerată exact mărimea câmpului în cauză. Ea modifică dimensiunea numai pentru următoarea operație de iesire. Sintaxa este: cout.width(dimensiune); În următorul exemplu se realizează umplerea cu spații goale, la stânga, până la dimensiunea 10, precizată prin această funcție, a valorii unei variabile întregi, citite.

```
int a;

cin>>a;

cout.width(10);

cout<<a;

```

Metoda fill() permite modificarea caracterului utilizat pentru umplerea eventualului spațiu liber creat prin utilizarea unui dimensiuni mai mari decat cea necesara iesirii, cu funcția cout.width(). Sintaxa acesteia este: cout.fill(caracter); Reluând exemplul anterior, determinăm umplerea cu caracterul ‘\*’.

```
int a;

cin>>a;

cout.fill('*');

cout.width(10);

cout<<a;

```

Metoda setf() activează o opțiune de formatare a ieșirii, primită ca parametru. Sintaxa funcției este: cout.setf(ios::opt);  Parametrul opt poate aparține următoarelor valori:

• showpos, caz în care determină adăugarea semnului plus în fața valorilor numerice pozitive;

• left, right, internal, caz în care schimbă alinierea ieșirii;

• dec, oct, hex, caz în care schimbă baza de numerație pentru valorile numerice;

• showbase, situație în care determină adăugarea identificatorului bazei de numerație în fața valorilor numerice.

Metoda setw() modifică dimensiunea ieșirii, asemănător funcției cout.width(). Sintaxa sa este: cout.setw(dimensiune);

Exemplul următor utilizează metoda setf pentru a afișa numărul 123, pe rând, în bazele 8, 10 și 16.

```
#include <iostream>

using namespace std;

int main()

{

int number = 123;

cout.setf(ios::showbase);

cout << oct<<number<<'\n';

cout << dec<<number<<'\n';

cout << hex<<number<<'\n';

return 0;

}

```
Redirectări

De obicei, dispozitivele standard sunt redirectate către alte dispozitive. Erorile pot fi redirectate către fișiere. De asemenea, intrarea și ieșirea pot fi redirectate (piped) către fișiere.

Sintaxa unei operații de ieșire standard este:

```
cout<<Expresie;​

```

Sintaxa generală a unei intrări standard este:

```
cin >> Id_Variabila;

```

Obiectele cin și cout sunt definite global, având supraîncărcat operatorii >>, respectiv <<, numiți, atunci când sunt folosiți cu obiecte iostream, operatori de inserție în flux, respectiv de extragere din flux. Supraîncărcarea acestor operatori este multiplă, pentru fiecare tip de bază (int, char etc)

Să analizăm exemplul următor:

```
#include <iostream.h>

void main()

{

int nr;

cout << "nr=";

cin >> nr;

cout << "\n ati introdus " << nr << endl;

}

```

Evident, este citită, de la intrarea standard, o valoare întreagă, care este apoi trimisă către ieșirea standard. După cum se observă, a fost utilizat caracterul escape \n, ceea ce determină saltul la o nouă linie. În scop asemănător a fost folosit și endl, care produce, suplimentar, golirea fluxului și trimiterea imediată a datelor către ieșire. Pentru a evita apariția unor situații problemă se recomandă evitarea utilizării literalului endl, mai puțin pentru situația explicită în care se dorește golirea fluxului.

Trebuie reținut că atât operatorul <<, cât și >> returnează o referință către un obiect al clasei istream. Asta face ca valoarile returnate de operațiile de citire/scriere să poată fi utilizate ca  intrări/ieșiri pentru alte operații de acest fel.
Tema Fisiere

1. Fisierul date.in contine pe prima linie n, un numar intreg, pe a 2-a linie, n numere intregi, ar pe a treia linie un numar intreg. Se cere sa se scrie un program C++ care verifica daca numarul de pe a treia liniie apare printre valorile din fisier si, in caz afirmativ, de cate ori apare. Daca, spre exemplu, fisierul ar contine valorile:

```
23 25 26 23 89 23 89 99 122

89

```

atunci  programul ar afisa: "Numarul apare de 2 ori".
2. Fisierul date.in contine numere intregi. Se cere sa se scrie un program C++ care determina si afiseza valoarea minima din fiser, precum si de cate ori apare ea. Daca, spre exemplu, fisierul ar contine valorile: 23 25 26 23 89 23 99 122, atunci  programul ar afisa: "valoarea minima este 23 si apare de 3 ori".
Powder Shop

The **Powder Shop** is a store accessed from the Dice interface. It is mainly used for spending **Mysterious Powder**, a material obtained by selling VIP Dice Fragments. It can be upgraded to unlock more slots by spending Gems, and also refreshed with Gems to get new items.

Within the Powder Shop, four slots are open by default, while some are locked:

 Rare
500 Gems
100 Gems
100 Gems
100 Gems

By spending Mysterious Powder, different items can be bought, even ranking rewards that are otherwise impossible to obtain.
Structuri și tablouri

Cum, prin declararea unei structuri creăm, practic, un tip de date, acesta poate fi, ulterior folosit pentru declararea unor tablouri, ale căror elemente să aparțină structurii. În exemplul de mai jos, vom construi un tip de date film, pentru păstrarea datelor unor filme. Apoi, vom folosi acest tip de date pentru declararea unui tablou, F, în care vom memora datele unor filme.

```
#include <iostream>
#include <string>
using namespace std;

struct film_t {
char titlu[100];
int an;
long incasari;
} F [100];

void afisare (film_t film)
{
cout << film.titlu;
cout << " (" << film.an << ")";
cout << " - " << film.incasari << ")\n";
}

int main ()
{
int n;
cin>>n;

for (i=0;i<n; i++)
{
cout << "Introduceti titlu: ";
cin.getline(F[i].titlu, 100);
cout << "Anul aparitiei: ";
cin>>F[i].an;
cout << "Incasari: ";
cin>>F[i].incasari;
}

cout << "\n Lista filme:\n";
for (i=0; i<n; i++)
afisare (F[i]);
return 0;
}

```
Funcţii template

Am văzut deja că putem scrie funcţii cu acelaşi nume, dar cu parametri diferiţi. Dacă, indiferent de tipul acestora, corpul funcţiilor rămâne neschimbat, putem defini, pentru a restrânge codul, o funcţie template, folosind un tip generic. Acest tip poate fi scris în declararea template-ului, folosind fie cuvântul cheie class, fie typename. Utilizarea sa, în scrierea funcţiei, va fi, ulterior, făcută ca pentru orice alt tip. Să analizăm exemplul:

```
int suma(int a, int b)

{

return a+b;

}

float suma(float a, float b)

{

return a+b;

}

```

Cum corpul funcţiilor mai sus definite este identic, putem modela exemplu prin crearea unei funcţii template.

```
template <class T>

T suma(T a, Tb)

{

return a+b;

}

```

Tipul T, declarat în template, poate fi folosit atât pentru tipul parametrilor, tipul funcţiei, cât şi pentru declararea de variabile locale.

Instanţierea unei funcţii template revine la aplicarea ei pe un tip anume, după o sintaxă de forma:

nume\_funcţie <argumente template> (argumente funcţie).

Pentru exemplul de mai sus, template-ul poate fi folosit astfel:

```
int a=5, b=8, c;

c=sum<int>(a,b);

float x=6.7, y=5.6, z;

z=sum<float>(x,y);

```