Table of Contents

Laboratorul 07 - Funcții cu pointeri; Șiruri de caractere

Problema 1


Scrieti o functie ce interschimba doua numere intregi. Functia va avea urmatorul antet:

void swap(int *pa, int *pb);
Date de intrare

Doua numere intregi, a si b.

Date de ieşire

Valorile a si b, in urma interschimbarii.

Restrictii

Exemplu

Intrare Ieşire
2 5 5 2

Problema 2


Scrieti o functie care numara cate elemente pozitive, cate elemente negative si cate elemente nule se afla intr-un vector. Antetul functiei va fi:

void count(int n, int *v, int *zero, int *poz, int *neg);
Date de intrare

Date de ieşire

Restrictii

Exemplu

Intrare Ieşire
5
-2 -1 0 1 2
nule: 1
pozitive: 2
negative: 2

Problema 3


char *strdel(char *p, int n); // sterge n caractere din pozitia p

Pentru a sterge 5 caractere incepand cu pozitia 3 (al 4-lea caracter) din sirul s va trebui sa apelati: strdel(s + 3, 5).

 char *strins(char *p, const char *s); // insereaza la p, sirul s

Se vor folosi functiile definite anterior si functii de biblioteca.

Textul se va introduce in program ca sir constant. Sirul cautat si cel cu care va fi inlocuit se citesc.

Date de intrare

Trei siruri de caractere:

Date de ieşire

Textul modificat.

Restrictii

Exemplu

Intrare Ieşire
ala bala portocala
ala
lala
lala blala portoclala

Problema 4


Scrieti o functie care extrage un subsir de lungime data dintr-o pozitie data a unui sir:

char* substr(char *src, int n, char *dest); // extrage de la pozitia src in dest n caractere

Functia are ca rezultat adresa sirului extras.

Pentru a extrage 5 caractere incepand cu pozitia 3 (al 4-lea caracter) din sirul s in sirul p va trebui sa apelati cu parametri: substr(s + 3, 5, p).

Date de intrare

Date de ieşire

Restrictii

Exemplu

Intrare Ieşire
abcdefg
2 3
cde

Problema 5


Scrieti o functie care calculeaza panta si ordonata pentru o dreapta data prin 2 puncte.

Ecuatia dreptei data prin panta si ordonata este y = m * x + n

void panta(int x1, int y1, int x2, int y2, float *m, float *n);

Daca dreapta este verticala, m va avea valoarea INT_MAX (definita in limits.h).

Scrieti un main in care cititi 3 puncte. Primele 2 puncte definesc o dreapta. Verificati daca cel de-al treilea punct dat apartine acestei drepte.

Date de intrare

Coordonatele a doua puncte ce determina dreapta si ale unui punct pentru care se verifica daca apartine dreptei.

Date de ieşire

Unul dintre cele doua mesaje - DA sau NU, daca punctul apartine dreptei, respectiv daca nu apartine.

Restrictii

Exemplu

Intrare Ieşire
1 1
2 2
3 3
DA

Problema 6


char *next (char *from, char *word);
Date de intrare

Un sir de caractere de lungime N.

Date de ieşire

Cuvintele formate din litere mici, in ordine, separate prin spatiu.

Restrictii

Exemplu

Intrare Ieşire
( unu, 1 doi DOI trei; “patru” cinCi s@s3) unu doi trei patru cin i s s