QReferate - referate pentru educatia ta.
Cercetarile noastre - sursa ta de inspiratie! Te ajutam gratuit, documente cu imagini si grafice. Fiecare document sau comentariu il poti downloada rapid si il poti folosi pentru temele tale de acasa.



AdministratieAlimentatieArta culturaAsistenta socialaAstronomie
BiologieChimieComunicareConstructiiCosmetica
DesenDiverseDreptEconomieEngleza
FilozofieFizicaFrancezaGeografieGermana
InformaticaIstorieLatinaManagementMarketing
MatematicaMecanicaMedicinaPedagogiePsihologie
RomanaStiinte politiceTransporturiTurism
Esti aici: Qreferat » Documente informatica

Programe si functii cu structuri



PROGRAME SI FUNCTII CU STRUCTURI


EXEMPLE DE PROGRAME SI FUNCTII


E5.1 Functii pentru operatii cu structuri (fara pointeri, cu rezultat

structura).


typedef struct Complex;


// citire numar complex

Complex cit_cx ()



// scriere numar complex

void scr_cx (Complex c)

// adunare numere complexe (cu 2 argumente)

Complex plus_cx (Complex c1, Complex c2)

// verificare functii

main () ,c2, c3;

c2=cit_cx (); scr_cx(c2);

c3=ad_cx(c1,c2);

scr_cx(c3);


E5.2 Operatii cu structuri realizate prin functii 'void' (cu pointeri)


typedef struct Complex;


// citire numar complex

void cit_cx (Complex * px)

// adunare numere complexe

void ad_cx (Complex c1, Complex c2, Complex * pc3)


main () ,c2, c3;

cit_cx (&c2); scr_cx(c2);

ad_cx(c1,c2,&c3);

scr_cx(c3);


E5.3 Ordonare vector de structuri cu functie de comparare structuri


#include <stdio.h>

typedef struct Date;

// comparare de date

int cmpdat ( Date d1, Date d2)

// ordonare vector de date

void sort (Date a[], int n)

} while ( ! gata);


// verificare

void main ()


E5.4 Utilizare structuri pentru reducere numar de argumente la functii


// vectori reprezentati prin structuri

#include <stdio.h>

#define M 100

typedef struct sv Vector;

// citire vector

Vector citvec ( )

// afisare vector

void scrvec (Vector v)

// extrage elemente comune din doi vectori

Vector comun(Vector a, Vector b)

// verificare functii

void main ()


E5.5 Structuri cu continut variabil in timp (uniuni)


#include <stdio.h>

// numar de orice tip

struct number v;


typedef struct number Num;

// afisare numar


void write (Num n)


// citire numar

Num read (char tip)

return n;


// verificare functii

void main ()


Obs. Memorarea unor date de tipuri diferite la o aceeasi adresa se poate

realiza si fara tipul 'union', folosind pointeri de tip 'void *'.


E5.6 Crearea si afisarea unui fisier de articole ce corespund unor structuri

din memorie (cu numele si mediile unor elevi).


// structura articole din fisier

typedef struct Elev;

// creare - afisare fisier de articole

void main ()



E5.7 Cautarea si modificarea unor articole dintr-un fisier de articole.


// structura articole din fisier

typedef struct Elev;

// adaugare articole la sfarsit de fisier

void adaugare (char * numef)

// cautare si modificare articole

void modificare (char * numef)

if ( pos < 0) break;

printf ('noua medie: '); scanf ('%f', &e.medie);

fseek (f,pos,0); // pozitionare pe inceput de articol gasit

fwrite(&e,sizeof(e),1,f); // rescrie articol modificat

} while (eof!=EOF);

fclose (f);


// actualizare fisier existent

void main ()



PROBLEME PROPUSE



P5.1 Functii pentru inmultirea a doua numere complexe si pentru ridicarea

la o putere intreaga a unui numar complex prin inmultiri repetate. Program

pentru calculul valorii (complexe) a unui polinom de variabila complexa,

cu coeficienti numere complexe.


P5.2 Sa se defineasca o structura 'Time' care grupeaza 3 intregi ce

reprezinta ora, minut si secunda pentru un moment (sau un interval) de timp.

Functii pentru citire, scriere si comparare de structuri 'Time'. Functia

de comparare dupa modelul functiei 'strcmp'. Program pentru verificarea

functiilor.


P5.3 Program pentru ordonarea cronologica a unor momente de timp si afisarea

listei ordonate, folosind functii din programul anterior.


P5.4 Sa se defineasca o structura 'Punct' pentru un punct din plan ( cu

doua coordonate x,y de tip 'float') si o structura 'Poligon' pentru un

poligon definit prin numarul de varfuri si un vector de coordonate ale

varfurilor (de tip 'Punct'). Functie pentru calculul distantei dintre

doua puncte din plan. Functie pentru calculul perimetrului unui poligon.

Program pentru calculul perimetrului unui triunghi si unui patrulater.


P5.5 Sa se defineasca o structura 'Vector' pentru un vector alocat dinamic

si extensibil, care contine dimensiunea maxima si dimensiunea efectiva a

vectorului. Functii pentru initializarea unui vector, pentru adaugarea unui

element (cu extindere daca este necesara) si pentru afisarea unui vector de

tip 'Vector'. Tipul elementelor T este neprecizat si poate fi orice tip

predefinit sau definit de utilizator. Program care foloseste functiile.


P5.6 Sa se defineasca o structura 'Per' pentru o pereche cuvant- numar

si o structura 'Dic' pentru un dictionar ca vector de perechi 'Per'.

Program pentru afisarea frecventei de aparitie a unor cuvinte (citite de la

consola) si care foloseste un dictionar de cuvinte si numar de aparitii. Se

va defini si folosi o functie pentru cautarea unui cuvant in dictionar si

adaugarea unei perechi cuvant-numar la dictionar (daca cuvant negasit) sau

modificarea numarului de aparitii (daca cuvant gasit).


P5.7 Sa se defineasca o structura 'Dic' pentru un dictionar compus din doi

vectori: un vector de cuvinte (siruri) si un vector de intregi, plus

dimensiunea lor comuna (vectori cu dimensiune fixa). Program pentru afisarea

frecventei de aparitie a unor cuvinte (citite de la consola) care foloseste

un dictionar de cuvinte si numar de aparitii. Se vor defini functii pentru

adaugarea unei prechi cuvant-numar la dictionar si respectiv pentru cautarea

unui cuvant in dictionar, cu rezultat numar de aparitii sau -1 daca negasit.


P5.8 Sa se defineasca un tip 'Set' ca pointer la o structura ce reuneste

adresa, dimensiunea alocata si dimensiunea efectiva pentru un vector

alocat si realocat dinamic prin care se reprezinta o multime de numere

intregi. Multimea vida are dimensiunea zero. Functii pentru creare multime

vida, adaugare numar la multime, test apartenenta la multime, afisare

multime, comparatie la egalitate, reuniune, intersectie si diferenta de

multimi. Functiile au argumente de tip 'Set'. Program pentru verificarea

acestor functii.


P5.9 Sa se reuneasca operatiile cu fisierul de elevi din exemplele anterioare

intr-un singur program cu mai multe functii si un meniu de alegere a operatiei

afisat pe ecran dupa fiecare operatie. Optiuni meniu: creare, listare,

adaugare la sfarsit, modificare continut, terminare (iesire).


P5.10 Sa se defineasca o structura 'Bon' pentru un bon de vanzare ce contine

numele unui produs (max 30 caractere), cantitatea (un intreg) si valoarea

unei vanzari (un numar neintreg). Program pentru urmatoarele operatii cu

acest fisier: adaugare la sfarsit fisier (cu creare daca nu exista), afisare

integrala fisier, afisare bonuri pentru un produs specificat, cu totalizare

valoare bonuri pe acel produs.



SOLUTII LA PROBLEME PROPUSE



R5.1

// alte functii (citire, scriere, adunare)

// produs de numere complexe

void prod_cx (Complex a, Complex b, Complex* pc)

// ridicare complex la putere intreaga

void put_cx (Complex a, int n, Complex * pc) ; int k;

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

prod_cx (a,c, &c);

*pc=c;


// valoare polinom de variabila complexa

void pol_cx ( int n, Complex c[], Complex x, Complex* rez)

*rez=sum;


// verificare functii

void main ()



R5.2

#include <stdio.h>

// operatii cu momente de timp

typedef struct Time;

// verifica daca timp plauzibil

int corect (Time t)

// citire ora

Time rdtime () while (1);

return t;


// scrie ora

void wrtime ( Time t)

// compara momente de timp

int cmptime (Time t1, Time t2)

main () while (1);


R5.4

// structuri in probleme geometrice : punct, poligon etc.

#include <stdio.h>

#include <math.h>

typedef double Real;

typedef struct Punct;

typedef struct Poligon;

// lungime segment delimitat de doua puncte

Real lung (Punct a, Punct b)

// calcul primetru poligon

Real perim ( Poligon p)

// verificare

void main ()


R5.5

#include <stdio.h>

#include <stdlib.h>

#define INCR 100   // cu cat creste vectorul

typedef int T;  // tip componente vector

typedef struct vf Vector;

// initializare vector

void initVec (Vector * v)

// adaugare element la vector

void addVec ( Vector * v, T x)

v->vec[v->dim]=x; v->dim ++;


// afisare vector

void printVec ( Vector v)

// afisare valoare de tip T

void printT (T x)

// creare si afisare vector

void main()


R5.6

// frecventa de aparitie a cuvintelor, cu vector de structuri

#include <stdio.h>

#include <string.h>

#define  MAXL 16 // nr maxim de litere dintr-un cuvant

#define  MAXW 1000 // nr. maxim de cuvinte}

typedef struct Per;    // pereche cuvint-numar

typedef struct Dic;


void initDic (Dic * d)


void printDic (Dic d)

// cautare/adaugare in dictionar

void addDic (Dic * d, char* w)

else // daca este o alta aparitie a unui cuvint

d->tc[i].na ++; // incrementare nr de aparitii


// creare si afisare dictionar

void main ()



R5.7

// dictionar ca structura cu doi vectori

#include <stdio.h>

#include <string.h>

#define  MAXL 16 // nr maxim de litere dintr-un cuvant

#define  MAXW 1000 // nr. maxim de cuvinte

typedef struct Dic;

// initializare

void initDic (Dic * d)

// afisare dictionar

void printDic (Dic d)

// pune pereche cheie-valoare in dictionar

void putDic (Dic * d, char* cuv, int n)

else // cheie existenta

d->tf[i]=n;



// citire valoare asociata unei chei date

int getDic (Dic d, char * cuv)

// creare si afisare ductionar

void main ()


R5.8

#include <stdio.h>

#include <stdlib.h>

#define M 10  // dimensiune initiala multime

typedef struct set * Set;


// initializare multime vida

void init (Set a)

// test daca o valoare data apartine unei multimi

int contine (Set a, int x)

// adaugare element la o multime

void plus (Set a, int x)

a->val[ a->n]=x; // adauga elem la multime

a->n ++; // creste numar de elemente din multime


// afisarea elementelor unei multimi

void scrie (Set a) n');



// reuniune de multimi

void plusm (Set a, Set b, Set c)

// intersectie de multimi

void inters (Set a, Set b, Set c)

// diferenta de multimi a-b

void minusm (Set a, Set b, Set c)

// citire valori si creare multime

void citmul (Set a) while (x);


// program principal

void main ()



R5.10

#include <stdio.h>

#include <assert.h>

#include <string.h>

// structura articole fisier

typedef struct Bon;

// adaugare bonuri la sfarsit de fisier (si creare fisier)

void adaugare (char * numef)

else

f=fopen (numef,'ab'); // pozitionare pe afarsit de fisier

puts ('Introducere bonuri si creare fisier n');

printf (' nume, cantitate, valoare : nn');

while (scanf ('%s %d %ld ',b.nume, &b.cant, &b.val) != EOF)

fwrite(&b,sizeof(b),1,f);

fclose (f);


// afisarea tuturor bonurilor din fisier

void listare (char* numef)

// afisare si totalizare bonuri pentru un produs dat

void total (char * numef)

printf (' Valoare totala = %ldn', sum);

fclose (f);


// afisare meniu si tratare optiuni

void main ()

getchar(); // pentru mentinere rezultate

} while ( opt[0] != 'x');


Nu se poate descarca referatul
Acest document nu se poate descarca

E posibil sa te intereseze alte documente despre:


Copyright © 2024 - Toate drepturile rezervate QReferat.com Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site.
{ Home } { Contact } { Termeni si conditii }