Sunteți pe pagina 1din 5

Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

Departamentul Informatică și Ingineria Sistemelor

RAPORT
Lucrare de laborator nr.4
la Programarea Calculatoarelor

A efectuat:
st. gr. XXXX XXXXX

A verificat:
dr., conf. univ. St.Buzurniuc

Chişinău - 2018
Lucrare de laborator nr.4

Tema: Programarea algoritmilor cu șiruri de caractere

Scopul lucrării: Familiarizarea cu șirurile de caractere, citirea lor de la tastatură prin


intermediul gets și includerea într-un cod din limbajul C.

Sarcina problemei: Într-un șir de caractere cuvintele sunt despărțite print-un spațiu. Să se
determine numărul de cuvinte care încep și se termină cu același caracter

Mersul lucrării:

Noţiuni din teorie şi metodele folosite:

In limbajul C nu existã un tip de date “șir de caractere”, deși existã constante șir (între
ghilimele). Șirurile de caractere se memoreazã în vectori cu componente de tip char, dar există
anumite particularităti în lucrul cu siruri fatã de lucrul cu alti vectori.
Șirurile de caractere reprezintă nume de persoane, produse, localitãti iar uneori chiar
propozitii sau fragmente de texte. Prin natura lor șirurile pot avea o lungime variabilă în limite
foarte largi, iar lungimea lor se poate modifica chiar în cursul execuției unui program ca urmare a
unor operații cum ar fi alipirea a două șiruri, ștergerea sau înserarea unui subșir într-un șir ș.a.
Operațiile uzuale cu șiruri sunt realizate în C prin funcții și nu prin operatori ai limbajului.
O astfel de funcție primește unul sau două șiruri și eventual produce un alt șir (de obicei șirul
rezultat înlocuiește primul șir primit de funcție). Pentru fiecare șir funcția ar trebui sã primească
adresa de început a șirului (numele vectorului) și lungimea sa, lungime care se modifică la
anumite operații.
Pentru simplificarea listei de argumente și a utilizării funcțiilor pentru operații cu șiruri s-a
decis ca fiecare șir memorat într-un vector să fie terminat cu un octet zero (‘\0’) și să nu se mai
transmită explicit lungimea șirului. Multe funcții care produc un nou șir precum si funcțiile
standard de citire adaugă automat un octet terminator la șirul produs (citit), iar funcțiile care
prelucrează sau afișează șiruri detecteazã sfârșitul șirului la primul octet zero.
Citirea unui șir de la tastatură se poate face fie cu funcția “scanf” și descriptor “%s”, fie cu
funcția “gets” astfel:
- Citirea unei linii care poate include spații albe se va face cu “gets”.
- Citirea unui cuvânt (șir delimitat prin spații albe) se va face cu “scanf”.
Ambele funcții primesc ca argument adresa unde se citeste șirul și înlocuiesc caracterul ‘\n’
introdus de la tastatură cu terminatorul de sir (zero).

1
Schema logică a algoritmului:

Start

cuvinteGasite = 0

printf("Introduceti sirul de caractere\n");


gets(text);

cuvint = strtok(text, " ");

Cuvint != NULL

printf("Nr de cuvinte - %d", cuvinteGasite);

Stop

cuvint[0] ==
cuvint[strlen(cuvint) - 1]

cuvinteGasite++

cuvint = strtok(NULL, " ");

2
Codul (textul) programului în limbajul C:

#include <stdio.h>
#include <string.h>

int main() {
int limit = 100, i;
char text[limit];
int cuvinteGasite = 0;

printf("Introduceti sirul de caractere\n");


gets(text);

char *firstChar = "", *lastChar = "";


for (i = 0; i < strlen(text); i++) {
if (text[i] != ' ') {
if (firstChar == "") {
firstChar = text[i];
}
lastChar = text[i];
}

if (text[i] == ' ' || i == strlen(text) - 1) {


if (firstChar == lastChar && firstChar != "") {
cuvinteGasite++;
}

firstChar = "";
lastChar = "";
}
}

printf("\nNr de cuvinte - %d", cuvinteGasite);

return 0;
}

Rezultatele testării și funcţionării programulu:

3
Analiza rezultatelor și concluzii:

1. Rezultatele obţinute confirmă că programul scris lucrează în mod corect.


2.Programul scris poate fi dezvoltat în continuare prin adăugarea operațiilor de verificare a datelor
de intrare.
.
Bibliografie:

https://www.tutorialspoint.com/c_standard_library/c_function_gets.htm
https://www.tutorialspoint.com/c_standard_library/c_function_strtok.htm
http://www.cs.ucv.ro/staff/gmarian/Programare/cap5_Instructiuni.pdf
https://ocw.cs.pub.ro/courses/programare/laboratoare/lab10
http://andrei.clubcisco.ro/cursuri/f/f-sym/1pc/2009CC/cursuri/Moraru-PC2008.pdf

S-ar putea să vă placă și