Timp rămas până la zilele B-Zone
V-am pregătit o mulțime de evenimente. Click aici
La mulți ani B-ZONE!
V-am pregătit o mulțime de evenimente. Click aici
Search the Community
Showing results for tags 'c++'.
-
In acest tutorial, vom invata sa transmitem obiecte unei functii si sa returnam un obiect dintr-o functie in programarea C++. In programarea C++, putem transmite obiecte unei functii intr-un mod similar cu cel al transmiterii argumentelor obisnuite. Exemplul 1: C++ Pass Objects to Function: #include <iostream> using namespace std; class Student { public: double marks; // constructor to initialize marks Student(double m) { marks = m; } }; // function that has objects as parameters void calculateAverage(Student s1, Student s2) { // calculate the average of marks of s1 and s2 double average = (s1.marks + s2.marks) / 2; cout << "Average Marks = " << average << endl; } int main() { Student student1(88.0), student2(56.0); // pass the objects as arguments calculateAverage(student1, student2); return 0; } Output: Average Marks = 72 Aici, am trecut doua student obiecte student1 si student2 ca argumente pentru a calculaAverage() functie. Treceti obiectele pentru a functiona în C++. Exemplul 2: C++ Return Object dintr-o functie: using namespace std; class Student { public: double marks1, marks2; }; // function that returns object of Student Student createStudent() { Student student; // Initialize member variables of Student student.marks1 = 96.5; student.marks2 = 75.0; // print member variables of Student cout << "Marks 1 = " << student.marks1 << endl; cout << "Marks 2 = " << student.marks2 << endl; return student; } int main() { Student student1; // Call function student1 = createStudent(); return 0; } Output: Marks1 = 96.5 Marks2 = 75 Returnare obiect din functie in C++. In acest program, am creat o functie createStudent() care returneaza un obiect al clasei Student. Am numit createStudent() din metoda main(). // Call function student1 = createStudent(); Aici, stocam obiectul returnat prin metoda createStudent() in student1. Pot face tutoriale si despre Flow Control,Functions,Arrays & String,Structures,etc..dar nu vad rostul daca nu vad interes la topicurile de tutoriale.
-
In acest tutorial, vom afla despre constructorul C++ si tipul sau cu exemple. Un constructor este un tip special de functie de membru care se numeste automat atunci cand se creeaza un obiect. In C++, un constructor are acelasi nume cu cel al clasei si nu are un tip de retur. De exemplu: class Wall { public: // create a constructor Wall() { // code } }; Aici, functia Wall() este un constructor al clasei Wall. Observati constructorul: are acelasi nume ca si clasa. nu are un tip de retur. este public. C++ Default Constructor Un constructor fara parametri este cunoscut ca un constructor implicit. In exemplul de mai sus, Wall() este un constructor implicit. Exemplul 1: Constructor implicit C++: #include <iostream> using namespace std; // declare a class class Wall { private: double length; public: // create a constructor Wall() { // initialize private variables length = 5.5; cout << "Creating a wall." << endl; cout << "Length = " << length << endl; } }; int main() { // create an object Wall wall1; return 0; } Output: Creating a Wall Length = 5.5 Aici, cand este creat obiectul wall1, se numeste constructorul Wall(). Aceasta seteaza variabila de lungime a obiectului la 5,5. Daca nu am definit un constructor in clasa noastra, atunci compilatorul C++ va crea automat un constructor implicit cu un cod gol si fara parametri. C++ Parameterized Constructor In C++, un constructor cu parametri este cunoscut ca un constructor cu parametri. Aceasta este metoda preferata pentru a initializa datele membrilor. Exemplul 2: Constructor cu parametri C++: #include <iostream> using namespace std; // declare a class class Wall { private: double length; double height; public: // create parameterized constructor Wall(double len, double hgt) { // initialize private variables length = len; height = hgt; } double calculateArea() { return length * height; } }; int main() { // create object and initialize data members Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); cout << "Area of Wall 1: " << wall1.calculateArea() << endl; cout << "Area of Wall 2: " << wall2.calculateArea() << endl; return 0; } Output: Area of Wall 1: 90.3 Area of Wall 2: 53.55 Aici, am creat un constructor parametru Wall() care are 2 parametri: dublu len si dublu hgt. Valorile continute in acesti parametri sunt utilizate pentru a initializa lungimea si inaltimea variabilelor membre. Cand cream un obiect din clasa, trecem valorile variabilelor membre ca argumente. Codul pentru aceasta este Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); Cu variabilele membre astfel initializate, putem calcula acum suprafata peretelui cu functia calculateArea(). C++ Copy Constructor Copia constructorului in C++ este utilizata pentru a copia datele unui obiect in altul. Exemplul 3: C++ Copy Constructor: #include <iostream> using namespace std; // declare a class class Wall { private: double length; double height; public: // parameterized constructor Wall(double len, double hgt) { // initialize private variables length = len; height = hgt; } // copy constructor with a Wall object as parameter Wall(Wall &obj) { // initialize private variables length = obj.length; height = obj.height; } double calculateArea() { return length * height; } }; int main() { // create an object of Wall class Wall wall1(10.5, 8.6); // print area of wall1 cout << "Area of Room 1: " << wall1.calculateArea() << endl; // copy contents of room1 to another object room2 Wall wall2 = wall1; // print area of wall2 cout << "Area of Room 2: " << wall2.calculateArea() << endl; return 0; } Output: Area of Room 1: 90.3 Area of Room 2: 90.3 In acest program, am folosit un constructor copie pentru a copia continutul unui obiect din clasa de perete la altul. Codul constructorului copiei este: Room(Room &obj) { length = obj.length; height = obj.height; } Observati ca parametrul acestui constructor are adresa unui obiect din clasa Wall. Apoi atribuim valorile variabilelor primului obiect variabilelor corespunzătoare celui de-al doilea obiect. Acesta este modul in care este copiat continutul obiectului. In main(), vom crea apoi doua obiecte wall1 si wall2 si apoi copiati continutul primului obiect la al doilea cu codul: Wall wall2 = wall1; Un constructor este utilizat in principal pentru a initializa obiecte. Ele sunt, de asemenea, utilizate pentru a executa un cod implicit atunci cand un obiect este creat.
-
Descriere: Cu ajutorul acestui mod puteti simula ruleta pentru un joc aferent cu prietenii. E stonks, am facut +50k in 10 minute. Poze / Video: Link de descărcare: aici Sursa (opțional): - Alte precizări: Da, va astept pe RPG2 la house 646. Am ruleta la etaj, imediat cum urcati scarile. Veniti mai multi deodata sa jucam o ruleta pe cinste.
-
Am vazut de multe ori scrise in 5~10 randuri sortari ineficiente. Cu un singur rand, se pot sorta elementele unui array foarte simplu si eficient, cu ajutorul functiei sort din biblioteca algorithm. Functia sort primeste ca parametrii: adresa de memorie de la care sa inceapa sortarea, adresa de memorie unde sa se opreasca cu sortarea si optional un functor care sa decida criteriul de sortare. Exemplu sortare in ordine crescatoare a elementelor de la jumatatea vectorului spre sfarsit: #include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> input = { 2, 5, 7, 6, 3, 4, 15, 11, 12, 18, 14, 27 , 5, 3, 12, 4 }; std::sort(input.begin() + input.size() / 2, input.end()); for (const auto& entry : input) { std::cout << entry << " "; } return 0; } // out: 2 5 7 6 3 4 15 11 3 4 5 12 12 14 18 27 Exemplu sortare in ordine crescatoare a tuturor elementelor cu restricita ca elementele pare sa apara in stanga elementelor impare: #include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> input = { 2, 5, 7, 6, 3, 4, 15, 11, 12, 18, 14, 27 , 5, 3, 12, 4 }; auto ascending_even_left_odd_right = [](int a, int b) { if (a % 2 == 0 && b % 2 == 1) return 1; if (a % 2 == 1 && b % 2 == 0) return 0; if (a < b) return 1; return 0; }; std::sort(input.begin(), input.end(), ascending_even_left_odd_right); for (const auto& entry : input) { std::cout << entry << " "; } return 0; } // out: 2 4 4 6 12 12 14 18 3 3 5 5 7 11 15 27 Pentru aprofundare, abordeaza urmatoarele probleme: EASY: sorteaza in ordine descrescatoare toate elementele MEDIUM: sorteaza in ordine crescatoare prima jumatate si in ordine descrescatoarea a 2-a jumatate HARD: sorteaza in zig-zag, primele 4 elemente crescator, urmatoarele 4 descrescator, urmatoarele 4 crescator si tot asa Pentru inrebari, va astept cu un reply sau cu un PM in cazul in care topicul este inchis. Bafta!
-
#include <fstream> #include <map> #include <vector> using namespace std; ifstream cin("sort.in"); ofstream cout("sort.out"); vector < int > v; map < int, int > m; void indexSort() { for(int value : v) m[value]++; } int main() { int x; while(cin>>x) v.push_back(x); indexSort(); for(auto it = m.begin(); it != m.end(); it++) while(it->second--) cout<<it->first<<" "; cin.close(); cout.close(); return 0; } Este apropiat ca si complexitate de timp si eficienta ca sortul din alghoritm.h, intrebari in PM sau in acest topic, faceti-va de cap cu el . Sortul acesta poate fi implementat chiar si in PAWN pentru cei curiosi asa ca daca aveti sortari de facut puteti sa il luati cu incredere pe acesta.
-
Procesarea de imagini este un proces foarte costisitor, deoarece trebuie procesat fiecare pixel din imagine. Acest lucru este inaceptabil in ziua de azi, cand asteptam ca totul sa fie facut in timp real. M-am gandit ca o serie de tutoriale de procesare de imagini s-ar putea sa prinda bine comunitatii. O sa incep cu ceva foarte simplu si s-ar putea sa continui cu chestii din ce in ce mai avansate (blur, bloom, dithering, poate chiar sa facem propria aplicatie asemanatoare pentru procesare de imagini - slabe sanse sa fac tutoriale despre asa ceva, pentru ca ar interveni mult mai multe lucruri decat procesare de imagini). In aceasta serie voi folosi prorpiul framework(care initial a fost gandit pentru a fi engine pentru un posibil joc) si HLSL pentru 'GPU Work', voi puteti folosi propriul framework, CUDA, OpenCL sau orice doriti voi, eu voi incerca sa explic doar principiile generale. Grayscale V-ati gandit vreodata cum se face un simplu GrayScale? Nu este foarte complicat. Trebuie doar sa adunam toate culorile si sa le impartim la numarul lor ( (R + G + B) / 3 ). Aceasta ar fi una dintre cele mai simple metode, existand insa si metode mai complicate. Texture2D ObjTexture : register( t0 ); // Textura din care vom citi RWTexture2D<float4> ObjResult : register( u0 ); // Textura in care vom scrie (RW = Read Write) SamplerState ObjWrapSampler : register( s0 ); // Obiectul care ne va ajuta sa luam 'mostre' din textura [numthreads(32, 32, 1)] // Cate threaduri va avea un grup (X = 32, Y = 32, Z = 1), X * Y * Z = 1024; Este recomandat ca acest numar sa fie divizibil cu 64 pe placile video AMD si divizibil cu 32 pe placile video nVidia (64 va merge si pentru nVidia si pentru AMD) void main( uint3 DTid : SV_DispatchThreadID ) // DTid = Coordonatele (x,y,z) ale threadului // Ca sa fie mai usor de inteles DTid.x = [0,width], DTid.y = [0,height] si DTId.z = 0 // Aceste valori au de-aface cu numarul de grupuri alocate de CPU { float width, height; ObjTexture.GetDimensions( width, height ); float2 uv = float2( float( DTid.x ) / width, float( DTid.y ) / height ); // Convertim coordonatele [0,width], respectiv [0,height] in coordonate [0,1] float4 color = ObjTexture.SampleLevel( ObjWrapSampler, uv, 0 ); // O sa 'mostre' din cea mai detaliata textura (MipMapLevel = 0) float finalColor = ( color.r + color.g + color.b ) / 3.0f; // calculul efectiv al culorii ObjResult[ DTid.xy ] = float4( finalColor, finalColor, finalColor, 1.0f ); // scriera pe textura finala } Rezultatul final ar trebui sa arate cam asa: In cazul in care aveti probleme cu intelegerea coordonatelor UV, asta si asta ar trebui sa va ajute. Toate tutorialele din aceasta serie vor fi postate aici. Acesta fiind locul din care puteti incarca framerwork-ul si rula exemplele folosind framework-ul facut de mine. Daca intampinati probleme clonand repository-ul In aceasta serie ma voi ocupa in special de partea de procesare de imagini, n-o sa intru in detaliile framework-ului. Singurul lucru pe care trebuie sa-l stiti despre framework este faptul ca face ce trebuie sa faca.
-
Descriere: E un fel de Flappy Bird in consola... Poze / Video: Link download: http://www.mediafire.com/download/8lwqu2jzk8lqx4v/Flappy.rar Alte precizari: * Sageata sus pentru a sari. * Nu e fix ca jocul original, dar va dati seama pe parcurs cum functioneaza. * Nu am avut niciodata intentia sa fac un "joc" bun. Am vrut sa vad doar daca pot.
-
Cautare binara - Varianta clasica #include <iostream> #include <algorithm> using namespace std; int N, x; struct element { int val, ord; } V[100]; int bin_search(int b, int e, int x); bool cmp(element a, element b) { return a.val < b.val; } int main() { cout << "N = ";cin >> N; for(int i = 1; i <= N; ++i) { cout << "V[" << i << "] = ";cin >> V[i].val; V[i].ord = i; } sort(V + 1, V + 1 + N, cmp); cout << "x = ";cin >> x; cout << V[bin_search(1, N, x)].ord << '\n'; return 0; } int bin_search(int b, int e, int x) { if(b > e) { return 0; } int mij = (b + e) / 2; if(V[mij].val > x) { return bin_search(b, mij - 1, x); } else { if(V[mij].val < x) { return bin_search(mij + 1, e, x); } else { return mij; } } }
- 3 replies
-
- cautare binara
- binary search
-
(and 1 more)
Tagged with: