Skip to Content

alin's blog

Functii de sistem pentru lucrul cu fisiere in Linux

 

 In sistemele de operare UNIX (deci si Linux) toate fisierele deschise sunt identificate prin descriptori de fisier. Un descriptor de fisier este un numar intreg nenegativ atribuit la deschiderea fisierului si este valabil pana la inchiderea acelui fisier.

fisiere standard deschise pentru orice proces:

Comenzi Unix (introducere)

Comenzile unix sunt programe lansate in executie de interpretorul de comenzi (terminal, shell). Atat in sistemele de operare unix cat si linux exista mai multe interpretoare de comenzi cum ar fi

sh
realizat de Bourne
bash
Bourne again shell

Diferente intre interpretoarele de comenzi sunt la facilitatile de programare pe care le ofera utilizatorului si la modul de prezentare al rezultatelor

Thread-uri in C/C++

Un program de test care lucreaza cu thread-uri in C/C++.

Pentru a putea rula programul este nevoie de gcc (pe Linux acesta se gaseste implicit)

Functia

int  pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);

creaza un fir de executie care se executa in paralel cu firul creator.

Dictionare (TTree) in C++

Aceasta este o implementare mai putin eficienta a dictionarelor in C++.
Daca lucrati cu stringuri in JAVA sau PHP aveti ocazia sa vedeti cam cum functioneaza mecanismul lor interior.

demo.cpp

// demo.cpp
#include <iostream>
#include "TTree.h"

using namespace std;

void main()
{
	TTree tree;
	char buf[512];
	char opt;
	do
	{

Aceasta este o implementare mai putin eficienta a dictionarelor in C++.
Daca lucrati cu stringuri in JAVA sau PHP aveti ocazia sa vedeti cam cum functioneaza mecanismul lor interior.

demo.cpp
{syntaxhighlighter brush:cpp;collapse:true;}
// demo.cpp
#include
#include "TTree.h"

using namespace std;

void main()
{
TTree tree;
char buf[512];
char opt;
do
{
cout<<"V - face dictionarul vid\n";
cout<<"A - adauga un cuvant\n";
cout<<"S - suprima un cuvant\n";
cout<<"C - verifica apartenenta unui cuvant\n";
cout<<"L - listeaza cuvintele\n";

Arbori B (BTree) in C++

Un mic demo pentru BTree sau Arbori B. Citirea nu este facuta din fisier de data asta, dar nu e un lucru prea important, daca intelegi programul sigur nu o sa ai probleme cu asa ceva :D

demo.cpp

// demo.cpp
#define _CRT_SECURE_NO_WARNINGS



#include <iostream>
#include <stdio.h>

using namespace std;



#include "BTree.h"

Un mic demo pentru BTree sau Arbori B. Citirea nu este facuta din fisier de data asta, dar nu e un lucru prea important, daca intelegi programul sigur nu o sa ai probleme cu asa ceva :D

demo.cpp
{syntaxhighlighter brush:cpp;collapse:true;}
// demo.cpp
#define _CRT_SECURE_NO_WARNINGS

#include
#include

using namespace std;

#include "BTree.h"

void CitireFisier(BTree * arb)
{
// fisierul este citit linie cu linie, continutul fiecarei linii este adaugat in arbore
char buf[513];
FILE *f = fopen("numefis.txt", "r");

if(f == NULL)

Arbori Huffman si Arbori Ponderati in C++

Aici e un pic mai mult, programul contine doua clase ArboreHuffman si ArborePonderat si cu ajutorul lor realizeaza o forma foarte simpla de codificare (programul poate fi modificat pentru a fi un arhivator). Ca deobicei codul este in C++ si foloseste alocare dinamica a memoriei.

demo.cpp

Aici e un pic mai mult, programul contine doua clase ArboreHuffman si ArborePonderat si cu ajutorul lor realizeaza o forma foarte simpla de codificare (programul poate fi modificat pentru a fi un arhivator). Ca deobicei codul este in C++ si foloseste alocare dinamica a memoriei.

demo.cpp
{syntaxhighlighter brush:cpp;collapse:true;}
// demo.cpp

#define _CRT_SECURE_NO_WARNINGS

#include
#include
#include "liste.h"
#include "ArborePonderat.h"
#include "ArboreHuffman.h"

void AdaugaNodPonderatInLista(LISTA & noduri, char * cheie)
{

Arbori AVL in C/C++

Un mic demo care lucreaza cu arbori AVL. Programul este scris in C++ (foloseste clase si alocarea dinamica a memoriei)

demo2.cpp

// demo2.cpp
#include <iostream>
#include <fstream>
#include "AVL.h"

using namespace std;

bool CitesteFisier(AVL &arb)
{
	ifstream fin("noduri.txt", ios::in);
	if(fin.fail())
		return false;
	//	citim
	int cheie;
	while(!fin.eof())
	{
		fin>>cheie;
	

Un mic demo care lucreaza cu arbori AVL. Programul este scris in C++ (foloseste clase si alocarea dinamica a memoriei)

demo2.cpp
{syntaxhighlighter brush: cpp}
// demo2.cpp
#include
#include
#include "AVL.h"

using namespace std;

bool CitesteFisier(AVL &arb)
{
ifstream fin("noduri.txt", ios::in);
if(fin.fail())
return false;
// citim
int cheie;
while(!fin.eof())
{
fin>>cheie;
cout< arb.Adauga(cheie);
}

fin.close();
return true;
}

void main()
{
AVL arb;

int cheie;
char opt;
do
{

Reincarcare cartuse Samsung SCX-4300

Acum cateva luni mi-am cumparat o imprimanta laser Samsung SCX-4300 si mi-a placut foarte mult pana a trebuit sa reincarc cartusul, aveam de ales sa cumpar un cartus cu 260 RON sau sa il reincarc cu toner nou care costa in jur de 50 Ron. Problema ii ca aceasta imprimanta are cartus cu cip care nu a aparut inca pe piata. Am pierdut cateva zile cautant pe internet si in magazine chip pentru cartus, dar nu am gasit decat pentru Samsung SCX-4200 si nu is compatibile.
firmware update

Laborator de C/C++

Un mic program care lucreaza cu arbori generalizati scris in C++, cu alocarea dinamica a memoriei

in ArboreGen.h este definita clasa ArboreGen, in ArboreGen.cpp sunt implementate metodele clasei
iar in demo1.cpp este dat un exemplu de folosire a clasei de arbore generalizat

ArboreGen.h

Un mic program care lucreaza cu arbori generalizati scris in C++, cu alocarea dinamica a memoriei

in ArboreGen.h este definita clasa ArboreGen, in ArboreGen.cpp sunt implementate metodele clasei
iar in demo1.cpp este dat un exemplu de folosire a clasei de arbore generalizat

ArboreGen.h
{syntaxhighlighter brush: cpp}
#pragma once

#include

typedef struct Nod
{
char *cheia;
Nod *fiuPrim;
Nod *frateDrept;
Nod *tata;

Nod(Nod *nodTata, char *nume)
{
cheia = new char[strlen(nume)+1];
strcpy(cheia, nume);
tata = nodTata;

Syndicate content