Programarea Calculatoarelor, seria CC
Atunci când declarați o variablilă, compilatorul va fi informat despre 2 lucruri: numele
variabilei si tipul ei, de exemplu
Atunci când se face o atribuire
Pentru ca o funcție să poată modifica valoarea variabilei
Să presupunem că vrem să scrie o funcție care incrementează un întreg, va trebui deci
să ținem cont că funcția va primi ca argument adresa întregului pe care vrem să-l incrementăm,
deci un
void inc(int * p_n)
{
*p_n = *p_n + 1; // prin *p_n ne referim la valoarea de la respectiva adresa
}
Pentru a apela funcția pentru un întreg definit ca
Un șir de caractere este un vector cu elemente de tip
De exemplu, șirul
Funcțiile pentru prelucrarea șirurilor se găsesc în
Funcții din
Funcții pentru citirea și afișarea șirurilor de caractere
Funcție pentru incrementarea unui moment de timp, dat ca oră, minut și secunda și perioada zilei (AM sau PM). Funcția va trebui să modifice 3 numere întregi și un vector de caractere și va primi 3 argumente pointer și un argument vector.
Intrare | Ieşire |
09 09 09 AM | 09:09:10 AM |
10 25 59 PM | 10:26:00 PM |
11 59 59 PM | 00:00:00 AM |
O funcție care calculează panta și ordonata pentru o dreaptă dată prin 2 puncte.
Ecuația dreptei dată prin pantă și ordonată este
void panta(int x1, int y1, int x2, int y2, float *m, float *n);
Dacă dreapta este verticală
Programul va citi coordonate a 2 puncte ce determină dreapta și încă un punct pentru care se va verifica dacă aparține dreptei, folosind funcția de mai sus. Atenție la cazul când dreapta e verticală.
Intrare | Ieşire |
1 1 2 2 3 3 |
DA |
2 1 2 3 3 3 |
NU |
O funcție pentru ștergerea a
Funcția primește adresa de unde se șterge și numărul de caractere șterse și are ca rezultat adresa
char *strdel(char *p, int n); // sterge n caractere din pozitia poz
Pentru a șterge 5 caractere începând cu poziția 3 (al 4-lea caracter) din șirul
O funcție pentru inserarea unui șir
char *strins (char *p, char *s); // insereaza la p, sirul s
Un program care va căuta și înlocui un șir dat cu alt șir (de lungime diferită) într-un text. Vor fi înlocuite toate aparițiile șirului dat.
Se vor folosi funcțiile definite anterior și funcții de bibliotecă.
Textul se va introduce în program ca un șir constant. Șirul căutat și cel cu care va fi înlocuit se citesc de la consolă.
Pentru șirul "ala bala portocala".
Intrare | Ieşire |
ala lala |
lala blala portoclala |
O funcție care extrage un subșir de lungime dată dintr-o poziție dată a unui șir:
char *substr(char *src, int n, char *dest); // extrage de la pozitia src in dest n caractere
Funcția are ca rezultat adresa șirului extras.
Pentru a extrage 5 caractere începând cu poziția 3 (al 4-lea caracter) din șirul
Intrare | Ieşire |
abcdefg 2 3 |
cde |
O funcție de comparare a două șiruri de cifre zecimale ce reprezintă numere naturale (fără semn), cu rezultat -1, 0 sau 1:
int strdcmp(char *s1, char *s2);
O funcție de citire a unui întreg pozitiv cu verificare depășire
valoare maximă posibilă. Se va citi numărul ca șir de caractere (cu
Șirul se va compara șirul citit cu șirul corespunzator valorii maxime admise
(
Pentru comparare folosiți funcția definită anterior.
În caz de introducere a unui număr prea mare funcția are ca rezultat pe
int readint();
Pentru a converti un întreg
Pentru a converti din șir în întreg puteți folosi
Intrare | Ieşire |
1 |
1 |
2147483648 |
-2147483647 |
Funcție care extrage următorul cuvânt format numai din litere mici începând de la o adresă dată.
Funcția are ca rezultat adresa imediat următoare cuvântului extras (în al doilea argument al funcției):
char *next (char *from, char *word);
Program pentru citirea unei linii ce conține cuvinte formate din litere mici și alte șiruri și afișarea cuvintelor formate din litere mici (separate între ele prin orice alte caractere).
Intrare | Ieşire |
( unu, 1 doi DOI trei; "patru" ) | unu doi trei patru |