Sunteți pe pagina 1din 12

Universitatea Tehnică a Moldovei

Facultatea Calculatoare Informatică și Microelectronică


Departamentul Ingineria Software și Automatică

RAPORT

la lucrarea de laborator nr. 5


Programarea Calculatoarelor

A efectuat: Zolotcov Adriana


A verificat: Bîrnaz Adrian

Chisinău 2022
Scopul lucrării
Scopul lucrării este de a familiariza studentul cu procesarea și utilizarea șirurilor de
caractere, utilizînd limbajul C.

Probleme pentru șiruri de caractere:

1. Scrieți un program C pentru a afla lungimea unui șir.

2. Scrieți un program C pentru a copia un șir în altul.

3. Scrieți un program C pentru a concatena două șiruri.

4. Scrieți un program C pentru a compara două șiruri.


5. Scrieți un program C pentru a converti dintr-un șir, literele minuscule în majuscule.

6. Scrieți un program C pentru a converti dintr-un șir, literele majuscule în litere mici.

8.Scrieți un program C pentru a găsi numărul total de litere, cifre sau caractere speciale
dintr-un șir.

9.Scrieți un program C pentru a număra numărul total de vocale dintr-un șir.


12.Scrieți un program C pentru a verifica dacă un șir este palindrom sau nu.

13.Scrieți un program C pentru a inversa ordinea cuvintelor dintr-un șir dat.

#include <stdio.h>

#include <stdlib.h>

#include<string.h>

#define maxSize 100

void str_comparare(char str1[maxSize],char str2[maxSize]);

int str_convert1(char str[maxSize]);

int str_convert2(char str[maxSize]);

int str_vowels(char str[maxSize]);

int polindrom(char str[maxSize]);

char *concatinare(char* str1,char* str2);

void function(char*str1);

int main()

int problem;

printf("Indtroduceti numarul problemei:");

scanf("%d",&problem);
switch(problem)

//1-Scrieți un program C pentru a afla lungimea unui șir.

case 1:

char str[maxSize];

printf("Introduuceti sirul: ");

scanf("%s ", str);

printf("lungimea sirului este: %d",strlen(str));

break;

//2-Scrieți un program C pentru a copia un șir în altul.

case 2:

char str1[maxSize];

char str2[maxSize];

printf("Introduceti un sir: ");

scanf("%s ",&str1);

printf("\nprimul sir este: = %s\n", str1);

strcpy(str2,str1);

printf("\nsirul 2 copiat este = %s\n",str2);

return 0;

break;

//4-Scrieți un program C pentru a compara două șiruri.


case 3:

char str1[maxSize];

char str2[maxSize];

int x;

printf("Introduceti primul sir : ");

scanf("%s ",str1);

printf("Introduceti al doilea sir : ");

scanf("%s ",str2);

str_comparare(str1,str2);

break;

//5-Scrieți un program C pentru a converti dintr-un șir, literele minuscule în majuscule.

case 4:

char str[maxSize];

printf(" Introduceti sirul: ");

scanf("%s ",str);

printf("Sirul modificat este: %s",str_convert1(str));

break;

//6-Scrieți un program C pentru a converti dintr-un șir, literele majuscule în litere mici.

case 5:

char str[maxSize];

printf(" Introduceti sirul: ");

scanf("%s ",str);

printf("Sirul modificat este: %s",str_convert2(str));

break;
//9-Scrieți un program C pentru a număra numărul total de vocale dintr-un șir.

case 6:

char str[maxSize];

printf(" Introduceti sirul: ");

scanf("%s ",str);

printf("numarul de vocale este: %d",str_vowels(str));

break;

//13-Scrieți un program C pentru a verifica dacă un șir este palindrom sau nu.

case 7:

char str[maxSize];

printf(" Introduceti sirul: ");

scanf("%s",str);

polindrom(str);

break;

//12-Scrieți un program C pentru a găsi inversul unui șir.

case 8:

char str[maxSize];

printf(" Introduceti sirul: ");

scanf("%s",str);

printf (" Inversul sirului este : %s ", strrev(str));

break;

case 9:

char str1[maxSize];
char str2[maxSize];

printf(" Introduceti sirul: ");

scanf("%s",str1);

printf(" Introduceti al doilea sir: ");

scanf("%s",str2);

concatinare(str1,str2);

break;

case 10:{

char str[maxSize];

printf(" Introduceti sirul: ");

scanf("%s",str);

function(str);

break;

default:

return 0;

return 0;

void str_comparare(char str1[maxSize],char str2[maxSize])

int x;

if(x==0)

x=strcmp(str1,str2);

printf("\nsirurile sunt la fel");

else
printf("\nsirurile nu sunt la fel");

int str_convert1(char str[maxSize])

int i=0;

for(i=0; str[i]!='\0'; i++)

if(str[i]>='a' && str[i]<='z')

str[i] = str[i] - 32;

return str;

int str_convert2(char str[maxSize])

int i=0;

for(i=0; str[i]!='\0'; i++)

if(str[i]>='A' && str[i]<='Z')

str[i] = str[i] + 32;

return str;

int str_vowels(char str[maxSize])

int i=0;
int vowels=0;

for(i=0;str[i]; i++)

if((str[i]>=65 && str[i]<=90)|| (str[i]>=97 && str[i]<=122))

if (str[i] == 'a' || str[i] == 'A' || str[i] == 'e' || str[i] == 'E' || str[i] == 'i' || str[i] == 'I' || str[i] =='o' ||
str[i]=='O' || str[i] == 'u' || str[i] == 'U')

vowels++;

return vowels;

int polindrom(char str[maxSize]){

int i,n,flag=0;

n=strlen(str);

for(i=0;i<n/2;i++)

if(str[i]==str[n-i-1])

flag++;

if(flag==i)

printf("siirul este polidrom");

else

printf("sirul nu este polidrom");

return flag;

char *concatinare(char* str1,char* str2){


int i;

int j = strlen(str2);

for (i = 0; str2[i] != '\0'; i++) {

str1[i + j] = str2[i];

str1[i + j] = '\0';

printf("sirul concatinat este % s\n",str1);

return str1;

void function(char*str){

int i,leters=0,numbers=0,specialcharacters=0;

for(i=0;str[i];i++)

if((str[i]>=65 && str[i]<=90)|| (str[i]>=97 && str[i]<=122) )

leters++;

else if(str[i]>=48 && str[i]<=57)

numbers++;

else

specialcharacters++;

printf("\n\tliterele sunt %d",leters);

printf("\n\tnumere sunt %d",numbers);

printf("\n\tcaractere speciale sunt %d",specialcharacters);

}
Concluzii:
Un șir de caractere este o succesiune de caractere terminate cu caracterul NULL
.Caracterul NULL este caracterul care are codul ASCII 0.În limbajuș C nu exista un tip special
pentru șirurile de caractere,acestea pot fi implementate ca vectori de caractere.
La fel, putem initializa o variabila care constituie un sir de caractere chiar de la
declarare, cu o constantă șir(în acest caz, lungimea șirului poate lipsi, fiind determinată automat).
Un șir de caractere poate fi citit cu ajutorul funcției de citire scanf(),, utilizând specificatorul de
format%s.Vor fi citite caracterele care incep cu primul caracter diferit de un caracter
alt(spațiu,tab sau newline) pâna la intâlnirea unui caracter alb. Dacă numărul de caractere citite
este mai mare decât lungimea declarată a șirului, vom obține eroare la execuția programului.Este
de remarcat faptul ca funcția scanf nu permire citirea șirurilor de caractere ce conțin caractere
albe. Pentru a citi șiruri de caractere care conțin spații sau caractere tab se poate utiliza functia
gets(),declararea in fișierul antet stdio.h.
Lungimea unui sir de catactere poate fi determinat prin intermadiul functiei predefinite: strlen()
sau cu ajutorul functiilor.

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