Вы находитесь на странице: 1из 7

Ministerul Educatiei al Republica Moldova Facultatea Calculatoare Informatica si Microelectronica Catedra Informatica Aplicata

Raport
La disciplina Programare Calculatoarelor Lucrare de Laborator Nr:3 TEMA: : Prelucrarea irurilor de caractere V-11
A efectuat: A verificat: st.gr.Ti-111 Voloceai Petru lector.Moraru O.

Chiinu 2011

1. Scopul lucrrii:
Familizarea cu cu tehnicile de prelucrare a irurilor de caractere n TC

2. Sarcina:
nsuirea principiilor i perfecionarea tehnicii de programare cu subprograme standarde i definite pentru pentru prelucrarea datelor i irurilor de caractere n TC . nsuirea procedeilor de elaborare i utilizare efectiv a irurilor de caractere.

3. Partea teoretica:
Functii de intrare / iesire relative la siruri de caractere. Pentru a citi un sir de caractere de la intrarea standard se foloseste functia gets() avnd prototipul: char *gets(char *s); Functia gets() citeste caractere din fluxul standard de intrare stdin n zona de memorie adresata de pointerul s. Citirea continua pna la ntlnirea sfrsitului de linie. Marcajul de sfrsit de linie nu este copiat, n locul lui fiind pus caracterul nul (). Functia ntoarce adresa zonei de memorie n care se face citirea (adica s) sau NULL, daca n locul sirului de caractere a fost introdus marcajul de sfrsit de fisier. Pentru a scrie un sir de caractere terminat prin caracterul NULL, la iesirea standard stdout, se foloseste functia: int puts(char *s); Caracterul terminator nu este transmis la iesire, n locul lui punndu-se marcajul de sfrsit de linie. Caracterele citite ntr-un tablou ca un sir de caractere (cu gets()) pot fi convertite sub controlul unui format folosind functia: int sscanf(char *sir, char *format, adrese_var_formatate); Singura deosebire fata de functia scanf() consta n faptul ca datele sunt preluate dintr-o zona de memorie, adresata de primul parametru (si nu de la intrarea standard). Exemplul 26: Scrieti o functie care citeste cel mult n numere reale, pe care le plaseaza ntr-un tablou x. Functia ntoarce numarul de valori citite. Vom citi numerele ntr-un sir de caractere s. De aici vom extrage n mod repetat cte un numar, folosind functia sscanf() si l vom converti folosind un format corespunzator. Ciclul se va repeta de n ori, sau se va opri cnd se constata ca s-au terminat numerele. Vom scrie functia n 2 variante: folosind tablouri sau folosind pointeri. /* varianta cu tablouri */ int citreal(int n, double x[]) { char s[255]; int j; double y; for (j=0; j<n; j++) { if(gets(s)==NULL) return j; if(sscanf(s,%lf,&y)!=1) /*conversie ]n real*/ break; /*s-au terminat numerele*/ x[j]=y; } return j;

} /* varianta cu pointeri */ int citreal(int n, double *px) { char s[255]; int j=0; double y; double *p=px+n; while(px<p) { if(gets(s)==NULL) return j; if(sscanf(s,%lf,&y)!=1) /*conversie in real*/ break; /*s-au terminat numerele*/ *px++=y; j++; } return j; } Tablouri de pointeri. Un tablou de pointeri este definit prin: tip *nume[dimensiune]; Exemplul 27: Sa se sorteze o lista de nume. Folosirea unui tablou de siruri de caractere este lipsita de eficienta, deoarece sirurile sunt de lungimi diferite. Vom folosi un tablou de pointeri la siruri de caractere. Prin sortare nu se vor schimba sirurile de caractere, ci pointerii catre acestea.

Citirea sirurilor de caractere presupune: rezervarea de spatiu pentru siruri initializarea tabloului de pointeri cu adresele sirurilor Pentru rezervarea de spatiu se foloseste functia char *strdup(char *s); care: salveaza sirul indicat de s ntr-o zona de memorie disponibila, alocata dinamic ntoarce un pointer catre zona respectiva sau NULL. Citirea numelor este terminata prin EOF. Functia de citire ntoarce numarul de linii citite: int citire(char *tabp[]){ int j=0; char tab[80]; while(1) { gets(tab); if(tab==NULL) break; tabp[j]=strdup(tab); }

return j; } Sortarea o vom realiza cu algoritmul bulelor: daca sirul de nume ar fi ordonat, atunci doua nume consecutive s-ar afla n relatia < sau ==. Vom cauta asadar relatiile >, schimbnd de fiecare data ntre ei pointerii corespunzatori (schimbare mai eficienta dect schimbarea sirurilor). Se fac mai multe parcurgeri ale listei de nume; la fiecare trecere, o variabila martor sortat, initializata la 1 este pusa pe 0, atunci cnd se interschimba doi pointeri. Lista de nume va fi sortata n momentul n care n urma unei parcurgeri a listei se constata ca nu s-a mai facut nici o schimbare de pointeri. void sortare(char *tp[], int n) { int j, sortat; char *temp; for(sortat=0; !sortat;){ sortat=1; for(j=0;j<n-1;j++) if(strcmp(tp[j],tp[j+1])>0){ temp=tp[j], tp[j]=tp[j+1], tp[j+1]=temp, sortat=0; } } } void afisare(char *tp[], int n){ int j; for (j=0; j<n; j++) if(tp[j]) puts(tp[j]); } void main(void) { int n; char *nume[100]; n=citire(nume); sortare(nume,n); afisare(nume,n); }

4. Schema block:

Start clrscr

1 (strcmp(p_ma... Nu

p strepy(cuv[nr++],p); Nu

printf("Nu este ... Da printf("Cuvintul maxim... getch();

printf("sunt %i cuv... i=0 Nu

return0; Stop

i<nr Da puts(cuv[i]); i++

i=0 i<nr Da i++ printf("Cuvintul maxim... r Da strepy(cuv1[nr1++],r); Nu Nu

printf("Sunt %i cuvinte... i=0 i<nr Da puts(cuv1[i]); i++ Nu

i=0 Nu

i<nr Da r_max=cuv1[i]; i++

printf("Cuvintul maxim din propoz.2... 1

5. Listingul programului:
#include <conio.h> #include <string.h> #include <stdio.h> #include <stdlib.h> int main() { clrscr(); char *p_max,*r_max,text[101],text1[101], cuv[50][50], cuv1[50][50],*p,*r,separator[]=",. !?"; int i,nr=0,nr1=0, max=0,max1=0,lung_crt,lung_crt1,egal; printf("Introduceti prima propozitie:\n\a\a");gets(text);

p=strtok(text,separator); while (p) { strcpy(cuv[nr++],p); p=strtok(NULL,separator); } printf("\nSunt %i cuvinte:\n",nr); for (i=0;i<nr;i++) puts(cuv[i]); for(i=0;i<nr;i++) if((lung_crt=strlen(cuv[i]))>max) { p_max=cuv[i]; max=lung_crt; } printf("\nCuvintul maxim din propoz.1 este [%s] are [%i] litere :)",p_max, max); printf("\n\n"); printf("\nIntroduceti a doua propozitie:\n\a\a");gets(text1); r=strtok(text1,separator); while (r) { strcpy(cuv1[nr1++],r); r=strtok(NULL,separator); } printf("\nSunt %i cuvinte:\n",nr1); for (i=0;i<nr1;i++) puts(cuv1[i]); for(i=0;i<nr1;i++) if((lung_crt=strlen(cuv1[i]))>max1) { r_max=cuv1[i]; max1=lung_crt; } printf("\nCuvintul maxim din propoz.2 este [%s] are [%i] litere :)\n\n",r_max, max1); if((strcmp(p_max,r_max)==0)&&(max==max1)) printf("\nCuvintul maxim comun este [%s] si are [%d] litere :):p\n\a\a\a",p_max,max);

else printf("Nu este nici un cuvint comun :("); getchar(); return 0; }

6. Rezultatele programului :

7. Concluzie :
n rezultatul efecturii acestei lucrri de laborator am nsuit unele particularitai importante,algoritmizarea i procedeiele de scriere/citire acestui program ,am nsuit noi procedeie de elaborare i de utilizare efectiv a programelor cu procedure i funcii predefinite n prelucrarea irurilor de caractere.

8. Bibliografie:
Conspectele de la prelegerile dr. conf. univ. Manuale electronice

Вам также может понравиться

  • 1200 De Exercitii Si Probleme De Matematica. Clasa I
    1200 De Exercitii Si Probleme De Matematica. Clasa I
    От Everand
    1200 De Exercitii Si Probleme De Matematica. Clasa I
    Рейтинг: 5 из 5 звезд
    5/5 (2)
  • Siruri Probleme
    Siruri Probleme
    Документ17 страниц
    Siruri Probleme
    Mihaela Lupeş
    Оценок пока нет
  • L11 Alocare Dinamica
    L11 Alocare Dinamica
    Документ10 страниц
    L11 Alocare Dinamica
    Andreea Chiriluş
    Оценок пока нет
  • Laborator 5 Sava Victoria
    Laborator 5 Sava Victoria
    Документ8 страниц
    Laborator 5 Sava Victoria
    VictoriaSava
    Оценок пока нет
  • Laborator Is 3
    Laborator Is 3
    Документ13 страниц
    Laborator Is 3
    Victor C. Ionuț
    Оценок пока нет
  • MazurcheviciTI 162PC Lab 7 8
    MazurcheviciTI 162PC Lab 7 8
    Документ16 страниц
    MazurcheviciTI 162PC Lab 7 8
    Mazurchevici Rodica
    Оценок пока нет
  • Laborator 7 IPC
    Laborator 7 IPC
    Документ8 страниц
    Laborator 7 IPC
    Dan Chiruțac
    Оценок пока нет
  • 783 Stringuri
    783 Stringuri
    Документ5 страниц
    783 Stringuri
    informaticasitero
    Оценок пока нет
  • Raport Lucrare de Laborator 5
    Raport Lucrare de Laborator 5
    Документ5 страниц
    Raport Lucrare de Laborator 5
    Crupa Grigore
    Оценок пока нет
  • laborator 6 Sava Victoria - копия
    laborator 6 Sava Victoria - копия
    Документ10 страниц
    laborator 6 Sava Victoria - копия
    VictoriaSava
    Оценок пока нет
  • Laborator 3 - PDF
    Laborator 3 - PDF
    Документ11 страниц
    Laborator 3 - PDF
    Mircea
    Оценок пока нет
  • Limbajul C (Seiciuc)
    Limbajul C (Seiciuc)
    Документ78 страниц
    Limbajul C (Seiciuc)
    Gherman Ion
    Оценок пока нет
  • Siruri de Caractere
    Siruri de Caractere
    Документ17 страниц
    Siruri de Caractere
    Anonim Sporgi
    Оценок пока нет
  • Ionic Atestat
    Ionic Atestat
    Документ21 страница
    Ionic Atestat
    Ioana. Rusu
    Оценок пока нет
  • Laborator 11 - Pointeri Si Structuri
    Laborator 11 - Pointeri Si Structuri
    Документ16 страниц
    Laborator 11 - Pointeri Si Structuri
    Florin Diaconescu
    Оценок пока нет
  • Lab10 s1 An1 22 23
    Lab10 s1 An1 22 23
    Документ11 страниц
    Lab10 s1 An1 22 23
    David Adrian Cioloca
    Оценок пока нет
  • C# Siruri
    C# Siruri
    Документ5 страниц
    C# Siruri
    Ştefan Şălaru
    100% (1)
  • Siruri Teorie
    Siruri Teorie
    Документ16 страниц
    Siruri Teorie
    ppprof
    Оценок пока нет
  • Laborator 6
    Laborator 6
    Документ4 страницы
    Laborator 6
    cristytrs787878
    Оценок пока нет
  • Siruri de Caractere Info
    Siruri de Caractere Info
    Документ17 страниц
    Siruri de Caractere Info
    Mr Crossplane
    Оценок пока нет
  • Sedinta 1
    Sedinta 1
    Документ7 страниц
    Sedinta 1
    eaan7604
    Оценок пока нет
  • Cap 9 - 2 - 2013 - Rev - 2015 PDF
    Cap 9 - 2 - 2013 - Rev - 2015 PDF
    Документ15 страниц
    Cap 9 - 2 - 2013 - Rev - 2015 PDF
    Cosmin Buşilă
    Оценок пока нет
  • Siruri de Caractere-Teorie
    Siruri de Caractere-Teorie
    Документ7 страниц
    Siruri de Caractere-Teorie
    Unul Domn
    Оценок пока нет
  • Incepatori C/C++
    Incepatori C/C++
    Документ18 страниц
    Incepatori C/C++
    Alex Marica
    Оценок пока нет
  • Șiruri de Caractere
    Șiruri de Caractere
    Документ24 страницы
    Șiruri de Caractere
    Otello Postelnicu
    Оценок пока нет
  • Tema 5
    Tema 5
    Документ9 страниц
    Tema 5
    alexandl NoInfo
    Оценок пока нет
  • Seminar9: Limbajul C & Matrice - Part. II
    Seminar9: Limbajul C & Matrice - Part. II
    Документ14 страниц
    Seminar9: Limbajul C & Matrice - Part. II
    Gianina Chirvase
    Оценок пока нет
  • Siruri de Caractere FCT
    Siruri de Caractere FCT
    Документ31 страница
    Siruri de Caractere FCT
    Robert Gabriel
    Оценок пока нет
  • Atestatdenisifrim
    Atestatdenisifrim
    Документ31 страница
    Atestatdenisifrim
    api-610041661
    Оценок пока нет
  • Q. Siruri de Caractere
    Q. Siruri de Caractere
    Документ18 страниц
    Q. Siruri de Caractere
    Alexandru Ion
    Оценок пока нет
  • Tablouri Şi Şiruri de Caractere in C++
    Tablouri Şi Şiruri de Caractere in C++
    Документ9 страниц
    Tablouri Şi Şiruri de Caractere in C++
    Radu
    Оценок пока нет
  • Lab 10
    Lab 10
    Документ15 страниц
    Lab 10
    danyaly
    Оценок пока нет
  • Cap 9 - 2 - 2021
    Cap 9 - 2 - 2021
    Документ15 страниц
    Cap 9 - 2 - 2021
    George Radovici
    Оценок пока нет
  • Curs FP 9
    Curs FP 9
    Документ5 страниц
    Curs FP 9
    Ramona Bajan
    Оценок пока нет
  • Siruri PDF
    Siruri PDF
    Документ19 страниц
    Siruri PDF
    Generala Telesti
    Оценок пока нет
  • Siruri Pointeri
    Siruri Pointeri
    Документ8 страниц
    Siruri Pointeri
    dianaaionela
    Оценок пока нет
  • 5.pointeri Siruri de Caractere CL 10
    5.pointeri Siruri de Caractere CL 10
    Документ10 страниц
    5.pointeri Siruri de Caractere CL 10
    Alex Fechet
    Оценок пока нет
  • Functii C
    Functii C
    Документ4 страницы
    Functii C
    Mirel
    Оценок пока нет
  • Lucrarea de Laborator NR 5 1
    Lucrarea de Laborator NR 5 1
    Документ12 страниц
    Lucrarea de Laborator NR 5 1
    Adrian Cioresco
    Оценок пока нет
  • Siruri de Caractere C++
    Siruri de Caractere C++
    Документ29 страниц
    Siruri de Caractere C++
    Andrei Dascalu
    Оценок пока нет
  • Siruri de Caractere C++
    Siruri de Caractere C++
    Документ17 страниц
    Siruri de Caractere C++
    Oana Andreea
    Оценок пока нет
  • Funcții Pentru Șiruri de Caractere
    Funcții Pentru Șiruri de Caractere
    Документ5 страниц
    Funcții Pentru Șiruri de Caractere
    andreicibo
    Оценок пока нет
  • Siruri de Caractere
    Siruri de Caractere
    Документ5 страниц
    Siruri de Caractere
    Laura Ferent
    Оценок пока нет
  • Laborator 3
    Laborator 3
    Документ8 страниц
    Laborator 3
    Corynna Mbs
    Оценок пока нет
  • 08 - Programarea Calculatoarelor
    08 - Programarea Calculatoarelor
    Документ6 страниц
    08 - Programarea Calculatoarelor
    Dan Chiruțac
    Оценок пока нет
  • Siruri de Caractere
    Siruri de Caractere
    Документ22 страницы
    Siruri de Caractere
    cont cu
    Оценок пока нет
  • Tablouri Și Șiruri de Caractere
    Tablouri Și Șiruri de Caractere
    Документ5 страниц
    Tablouri Și Șiruri de Caractere
    Marcica Dranga
    Оценок пока нет
  • LL78 PR Sir Carac Fun 2019
    LL78 PR Sir Carac Fun 2019
    Документ30 страниц
    LL78 PR Sir Carac Fun 2019
    Alexandrina Bagrin
    Оценок пока нет
  • Eseu PCPL 1
    Eseu PCPL 1
    Документ10 страниц
    Eseu PCPL 1
    Papuc Adriana Loredana
    Оценок пока нет
  • Limbaj de Programare
    Limbaj de Programare
    Документ18 страниц
    Limbaj de Programare
    Daniela Szoke
    Оценок пока нет
  • Siruri de Caractere C
    Siruri de Caractere C
    Документ29 страниц
    Siruri de Caractere C
    ranca marius
    Оценок пока нет
  • Lectia - Siruri de Caractere
    Lectia - Siruri de Caractere
    Документ5 страниц
    Lectia - Siruri de Caractere
    Nicu Vlad Laurentiu
    Оценок пока нет
  • Siruri de Caractere
    Siruri de Caractere
    Документ3 страницы
    Siruri de Caractere
    andru123
    Оценок пока нет
  • Lab8bdc VLC
    Lab8bdc VLC
    Документ10 страниц
    Lab8bdc VLC
    Petru Voloceai
    Оценок пока нет
  • LAB2AC
    LAB2AC
    Документ6 страниц
    LAB2AC
    Petru Voloceai
    Оценок пока нет
  • Proces de Verificare
    Proces de Verificare
    Документ9 страниц
    Proces de Verificare
    Petru Voloceai
    Оценок пока нет
  • LAB2AC
    LAB2AC
    Документ6 страниц
    LAB2AC
    Petru Voloceai
    Оценок пока нет
  • Sabloane de Proiectare
    Sabloane de Proiectare
    Документ27 страниц
    Sabloane de Proiectare
    Petru Voloceai
    Оценок пока нет
  • Lab1 Ipp
    Lab1 Ipp
    Документ4 страницы
    Lab1 Ipp
    Petru Voloceai
    Оценок пока нет
  • Lucrare de Curs BDC
    Lucrare de Curs BDC
    Документ17 страниц
    Lucrare de Curs BDC
    Petru Voloceai
    Оценок пока нет
  • LAB2AC
    LAB2AC
    Документ6 страниц
    LAB2AC
    Petru Voloceai
    Оценок пока нет
  • Retele de Calculatoare
    Retele de Calculatoare
    Документ23 страницы
    Retele de Calculatoare
    Petru Voloceai
    Оценок пока нет
  • Retele de Calculatoare
    Retele de Calculatoare
    Документ23 страницы
    Retele de Calculatoare
    Petru Voloceai
    Оценок пока нет
  • Lucrarea Lab NR 3 ProgVLC
    Lucrarea Lab NR 3 ProgVLC
    Документ9 страниц
    Lucrarea Lab NR 3 ProgVLC
    Petru Voloceai
    Оценок пока нет