Sunteți pe pagina 1din 4

//Exemplul 1. a.

Următorul program ilustrează modul utilizare a funcțiilor:


strcpy(), strlen(), strcmp(), strcat(), strstr().
#include <stdio.h>
#include <string.h>
int main()
{
unsigned int l1, l2, index;
char sir1[20], sir2[20];
char *p;
strcpy(sir1, "Laborator "); //initilizam sir1 cu Laborator
strcpy(sir2, "PCLP"); //initilizam sir2 cu PCLP
l1=strlen(sir1); //determina nr. de caractere din sir1
printf("Lungimea sirului 1 este: %u \n", l1);
l2=strlen(sir2); //determina nr. de caractere din sir2
printf("Lungimea sirului 2 este: %u \n", l2);
if(!strcmp(sir1, sir2)) //compara sir1 cu sir2
printf("Cele doua siruri sunt egale \n");
else
printf("Sirurile nu sunt egale \n");
strcat(sir1, sir2); //adaugă sir2 la sfârșitul lui sir1
printf("Sirul 1 este: %s \n", sir1);
if(strstr(sir1, sir2)!= NULL)
{
printf("Sirul 2 este subsir al sirului 1 \n");
index = (strstr(sir1, sir2) -sir1) + 1;//aflam pozitia
printf("Subsirul 2 \"%s\" apare la pozitia %d in sirul 1 \n", sir2, index);
p=strstr(sir1, sir2);
printf("Subsirul continut este: ");

for(int i=1;i<=strlen(sir2);i++)
{
//afisam fiecare caracter al lui sir 2 continut in sir 1
printf("%c", *p);p++;}
}
else
printf("Sirul 2 nu este subsir al sirului 1");
return 0;}

// Exemplul 1. b. În cadrul exemplului următor numărul introdus de utilizator este


convertit în trei șiruri de caractere sub forma celor trei baze (2, 10, 16), șirul
de caractere în care se afla numărul în baza zece este convertit din șir în număr.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int n,i;
char sirz [10],sirh [10], sirb [10];
printf ("Introdu un numar: ");
scanf ("%d",&n);
itoa (n,sirz,10);
printf ("In zecimal (baza 10) nr. este: %s\n",sirz);
itoa (n,sirh,16);
printf ("In hexazecimal (baza 16) nr. este:%s\n",sirh);
itoa (n,sirb,2);
printf ("In binar (baza 2) nr. este: %s\n",sirb);
i = atoi (sirz);
printf ("Numarul introdus este %d. Dublul numarului este %d.\n",i,i*2);
return 0;
}

// Ex 1. Realizaţi un program prin care să testaţi o parola introdusă

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char pw[100],trypw[100];
int ok=0;
printf("Inregistrati o parola:\n");
scanf("%s", pw);
printf("Introduceti parola:");
do{
scanf("%s", trypw);
if(strcmp(pw,trypw)==0)
{
ok = 1;
printf("Parola corecta");
}

else
{
printf("Parola gresita");
}
}while(ok==0);
return 0;
}

//Ex 2. Să se determine prima şi ultima apariţie a unui caracter într-un şir de


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

int main ()
{
int counter, lungimeLista, firstInstance, lastInstance;
char str[100];
char literaCautata;
char * pch;
counter = 0;
lastInstance = 0;

printf ("Program care cauta o litera intr-o secventa de text.\n");

// Introducere variabile
printf ("Introdu secventa de text (MAX 99 caractere) ");
scanf("%s", str);
lungimeLista = strlen(str);
printf ("Introdu litera pe care doresti sa o cauti ");
scanf(" %c", &literaCautata);

// Confirmare introducere
printf ("Cautand litera %c in \"%s\"...\n", literaCautata, str);
// Cautare caracter
pch = strchr(str, literaCautata);
while(pch != NULL)
{
counter++; // Pentru a numara de cate ori a fost gasit caracterul si pentru a
verifica daca este prima oara cand acest loop ruleaza
if(counter == 1) // Prima oara cand caracterul este gasit, il stocam in
firstInstance
{
firstInstance = pch - str + 1;
}
printf ("Gasit ca litera %d.\n", pch - str + 1);
lastInstance = pch - str + 1; // Se actualizeaza de fiecare data pana cand se
termina loop ul
pch = strchr(pch + 1, literaCautata);
}

// Rezultat
printf ("Caracterul a fost gasit de %d ori.\n", counter);
printf ("Lungimea listei este %d.\n", lungimeLista);
printf ("Prima oara caracterul este litera cu numarul %d.\n", firstInstance);
printf ("Ultima oara caracterul este litera cu numarul %d.\n", lastInstance);
return 0;
}

// Ex 3. Realizaţi un program prin care să se citească două şiruri de caractere ce


conţin două numere întregi, adunaţi şi scădeți numerele apoi afişaţi rez.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main ()
{
char s1[5], s2[5];
int n1, n2, suma, diferenta;
printf("Program care citeste 2 siruri de caractere ce contin 2 numere intregi si
le aduna / scade.\n");
printf("Introdu primul nr: ");
gets(s1);
printf("Introdu al doilea nr: ");
gets(s2);
n1 = atoi(s1);
n2 = atoi(s2);
suma = n1 + n2;
diferenta = n1 - n2;
printf("Suma = %d\n", suma);
printf("Diferenta = %d\n", diferenta);
}

// Ex 4. Să se realizeze un program care citește intr-un sir n cuvinte. Sortați în


ordine alfabetică cuvintele citite.
#include <stdio.h>
#include <string.h>
int main()
{
int i, j, count;
char str[25][25]; // bidimensional
char temp[25];
printf("Program care citeste un sir de cuvinte si le sorteaza in ordine
alfabetica.\n");
printf("Cate cuvinte doresti sa introduci? ");
scanf("%d", &count);

// Introducere folosind gets


printf("Introdu cuvintele:\n");
for(i = 0; i <= count; i++)
{
gets(str[i]);
}

// Avanad in vedere ca literele alfabetului sunt stocate ca cifre


corespunzatoare conform tabelului ascii (de la 95 la 90 pentru literele mari si de
la 97 la 122 pentru cele mici), putem compara valorile acestora ( b > a )
// sau putem folosii strcmp

for(i = 0; i <= count; i++)


{
for(j = i + 1; j <= count; j++)
{
// Initial comparam cuv0 cu cuv1 apoi cuv0 cu cuv2... pana ajungem la
count (nr de cuvinte introduse)
if(strcmp(str[i], str[j]) > 0) // Daca strcmp este > 0, primul caracter nu
este egal cu al doilea si are o valoare mai mare decat al doilea
{
// Este fix ca exemplul cu paharele: pentru a schimba 2 variabile intre
ele (cu scopul de a le ordona, in cazul nostru, in ordine crescatoare) avem nevoie
de o a treia variabila temporara.
strcpy(temp, str[i]); // strcpy(destinatie, sursa). Copiem in temp
valoarea din str[i]
strcpy(str[i], str[j]);
strcpy(str[j], temp);
}
}
}

printf("Punand cuvintele in ordine alfabetica rezulta: ");


for(i = 0; i <= count; i++)
{
puts(str[i]);
}

return 0;
}

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