Programarea Calculatoarelor: Laborator 7

Tablouri. Șiruri de caractere

Exercițiu pregătitor Implementați câteva funcții simple pentru lucru cu șiruri de caractere:

Exercițiul 1 Scrieți o funcție care ia ca parametru un șir de caractere și returnează valoarea numărului aflat în porțiunea inițială a șirului.
Funcția acceptă ca șirul să conțină un număr arbitrar de spații albe inițiale, opțional semnul (+ sau -), și apoi cifre în baza 10. Conversia se oprește la întâlnirea primului caracter necorespunzător. Dacă până în acel punct nu s-a întâlnit un număr valid, funcția returnează zero.

Observație: O astfel de funcție standard există: int atoi(const char *s) și e declarată în stdlib.h.

Funcția va construi numărul similar cu cele de citire de numere întregi (readnat, readint) scrise anterior, cu deosebirea că numărul e conținut în șir. Funcția nu va citi pe rând caractere de la intrare, ci va avansa cu indicele în șir.

Variantă: scrieți o funcție care se comportă similar, dar acceptă un șir reprezentând un număr într-o bază arbitrară (între 2 și 36), dată ca al doilea parametru. Cifrele cu valori începând de la 10 sunt reprezentate prin litere mari sau mici.

Exercițiul 2 Scrieți un program care calculează toate numerele prime până la o limită dată (1000) folosind ciurul lui Eratostene. Declarați un tablou cu indici până la limita dată, care la sfârșit va conține 1 pe o poziție dacă numărul e compus, și 0 dacă e prim. Inițial, tabloul conține peste tot 0, apoi se pune 1 pe toate pozițiile care nu sunt numere prime (multiplii de 2, 3, 5, etc.)

Exercițiul 3 Completați o matrice N x N în spirală cu numerele de la 1 la N*N pornind de la colțul din stânga sus, în sensul acelor de ceasornic. Afișați matricea.

Exercițiul 4 Completați o matrice cu reprezentarea unui fractal de formă pătrată, folosind valori diferite (de exemplu 1 și 0) pentru căsuțele (elementele) tipărite (ocupate) și libere. Tipăriți matricea, folosind caracterele * și spațiu. Ca exemple, folosiți fractalul cu cruciulițe sau covorul lui Haferman.

Pentru a rezolva problema:

Exercițiul 5 Scrieți o funcție care normalizează (simplifică) un șir de caractere care conține un nume de fișier. Șirul conține opțional mai multe componente de nume de catalog (directory), separate de caracterul / și în final numele propriu-zis de fisier. Funcția va efectua următoarele prelucrări: Scrieți o funcție care ia ca parametru un șir de caractere reprezentând un nume de fișier și îl transformă simplificând-ul după regulile date. (Fiecare regulă poate doar să reducă dimensiunea șirului, deci rezultatul va încape în locul alocat șirului inițial).
Marius Minea
Last modified: Sat Apr 5 17:38:25 EET 2008