0% au considerat acest document util (0 voturi)
3 vizualizări7 pagini

Proiect 5

Documentul prezintă un proiect de programare care se ocupă cu manipularea șirurilor de caractere și fișierelor text. Acesta include funcții pentru a determina numărul de cuvinte, cuvintele de lungime maximă și cuvintele care conțin o literă specificată de cel puțin două ori, atât în fraze, cât și în fișiere. De asemenea, programul permite transcrierea și ștergerea cuvintelor din fișiere pe baza criteriilor menționate.

Încărcat de

Veronica Gușan
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
0% au considerat acest document util (0 voturi)
3 vizualizări7 pagini

Proiect 5

Documentul prezintă un proiect de programare care se ocupă cu manipularea șirurilor de caractere și fișierelor text. Acesta include funcții pentru a determina numărul de cuvinte, cuvintele de lungime maximă și cuvintele care conțin o literă specificată de cel puțin două ori, atât în fraze, cât și în fișiere. De asemenea, programul permite transcrierea și ștergerea cuvintelor din fișiere pe baza criteriilor menționate.

Încărcat de

Veronica Gușan
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.

A elaborat: Gușan Veronica Semnătura: __________

PROIECT DE PROGRAME NR. 5. ŞIRURI DE CARACTERE. FIŞIERE TEXT

I. Formularea problemei
Tema: Cuvântul (ele) de lungimea maximă și cele care conțin o literă indicată de 2 sau mai multe ori
De efectuat următoarele operaţii:
1. De determinat numărul de cuvinte într-o frază.
2. De determinat cuvintele de lungime maximă dintr-o frază.
3. De determinat cuvintele ce conțin litera indicată de cel puțin 2 ori dintr-o frază.
4. De determinat numărul de cuvinte într-un fișier.
5. De determinat cuvintele de lungime maximă dintr-un fișier.
6. De transcris în alt fişier text cuvintele ce conțin litera indicată de cel puțin 2 ori.
7. De şters din fişierul text cuvintele ce conțin litera indicată de cel puțin 2 ori.
II. Studiu preliminar
Fișierul text din care se va citi și prelucra informația este pregătit preventiv.
III. Indicaţii metodice
1. Programul trebuie să fie universal, adică trebuie să se obţină rezultatul pentru orice date iniţiale.
2. De scris funcţii de citire şi prelucrare a datelor textuale, citite de la tastatură sau dintr-un fişier text.
IV. Programul
#include <iostream>
#include <stdio.h>
#include <iomanip>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

using namespace std;

void Afisare_fisier(char nume[]);


int Nr_cuvinte(char sir[]);
int Cuv_lung_max(char sir[]);
int Cuv_2litere(char sir[], char litera);
int Nr_cuvinte();
int Cuv_lung_max();
int Cuv_2litere(char litera);
void Delete(char litera);
int lung = 0;
int main()
{
int opt;
char litera = 'a';
char fraza[81] = "Mama si-a dus la scoala copilasii, apoi a plecat la magazin dupa produse.";
do
{
system("cls");
cout << "-------- Proiect Nr.5 elaborat de Gusan Veronica! --------" << endl;
cout << "\nTema: Cuvantul (cuvintele) de lungimea maxima" << endl;
cout << "\n 1. Numarul de cuvinte din fraza.";
cout << "\n 2. Cuvintele de lungimea maxima dintr-o fraza.";
cout << "\n 3. Cuvintele ce contin litera indicata de cel putin 2 ori dintr-o fraza";
cout << "\n 4. Numarul de cuvinte din fisier text.";

1
cout << "\n 5. Cuvintele de lungimea maxima dintr-un fisier text.";
cout << "\n 6. Cuvintele ce contin litera indicata de <= 2 ori de transcris in alt fisier text.";
cout << "\n 7. Cuvintele ce contin litera indicata de <= 2 ori de sters din fisierul text";
cout << "\n 0. STOP";
cout << "\n \t Alege (de la 0 la 7) ->";
cin >> opt;
switch(opt)
{
case 1:
puts(" Introduceti o fraza: ");
fflush(stdin); gets(fraza);
puts("Fraza initiala este: \n");
puts(fraza);
cout << "\nIn fraza sunt " << Nr_cuvinte(fraza) << " cuvinte.";
_getch();
break;
case 2:
//puts(" Introduceti o fraza: ");
//fflush(stdin); gets(fraza);
puts("Fraza initiala este: \n");
puts(fraza);
cout << "\nIn fraza cuvantul(ele) cel mai lung are " << Cuv_lung_max(fraza) << " caractere.";
_getch();
break;
case 3:
//puts(" Introduceti o fraza: ");
//fflush(stdin); gets(fraza);
puts("Fraza initiala este: \n");
puts(fraza);
cout << "\nIntrodu litera: ";
cin >> litera;
cout << "\nIn fraza sunt " << Cuv_2litere(fraza, litera) << " cuvinte ce contin litera " << litera
<< " de cel putin 2 ori.";
_getch();
break;
case 4:
puts("Fisierul initial este: \n");
Afisare_fisier("[Link]");
cout << "\nIn fisier sunt " << Nr_cuvinte() << " cuvinte.";
_getch();
break;
case 5:
puts("Fisierul initial este: \n");
Afisare_fisier("[Link]");
cout << "\nIn fisier cuvantul(ele) cel mai lung are " << Cuv_lung_max() << " caractere.";
_getch();
break;
case 6:
puts("Fisierul initial este: \n");
Afisare_fisier("[Link]");
cout << "\nIntrodu litera: ";
cin >> litera;
Cuv_2litere(litera);
cout << endl;
Afisare_fisier("date05_11.txt");

2
_getch();
break;
case 7:
puts("Fisierul initial este: \n");
Afisare_fisier("[Link]");
cout << "\nIntrodu litera: ";
cin >> litera;
Delete(litera);
cout << endl;
puts("Fisierul nou este: \n");
Afisare_fisier("date05_12.txt");
_getch();
break;
}
}
while(opt);
return 0;
}

void Afisare_fisier(char nume[])


{
FILE *f;
char fraza[81];
f = fopen(nume, "r");
while(fgets(fraza, 81, f) != NULL)
printf("%s", fraza);
fclose(f);
}

int Nr_cuvinte(char sir[])


{
char copia[81];
char *cuvant;
int n = 0;
strcpy(copia, sir);
if((cuvant = strtok(copia, " ,.!?:\n")) == NULL ) return 0;
n = 1;
while((cuvant = strtok(NULL, " ,.!?:\n")) != NULL )
n++;
return n;
}

int Cuv_lung_max(char sir[])


{
char copia[81];
char *cuvant;
int len;
int n;
strcpy(copia, sir);
if((cuvant = strtok(copia, " ,.!?:\n")) == NULL ) return 0;
len = strlen(cuvant);
while((cuvant = strtok(NULL, " ,.!?:\n")) != NULL )
if(strlen(cuvant) > len)
len = strlen(cuvant);

3
strcpy(copia, sir);
if((cuvant = strtok(copia, " ,.!?:\n")) == NULL ) return 0;
if(len == strlen(cuvant))
puts(cuvant);
while((cuvant = strtok(NULL, " ,.!?:\n")) != NULL )
if(len == strlen(cuvant))
puts(cuvant);
return len;
}

int Cuv_2litere(char sir[], char litera)


{
char copia[81];
char *cuvant;
int n, contor = 0, i;
strcpy(copia, sir);
if((cuvant = strtok(copia, " ,.!?:\n")) == NULL ) return 0;
n = 0;
for(i = 0; i < strlen(cuvant); i++)
if(cuvant[i] == litera) n++;
if(n >= 2)
{
cout << "\t";
puts(cuvant);
contor++;
}

while((cuvant = strtok(NULL, " ,.!?:\n")) != NULL )


{
n = 0;
for(i = 0; i < strlen(cuvant); i++)
if(cuvant[i] == litera) n++;
if(n >= 2)
{
cout << "\t";
puts(cuvant);
contor++;
}
}
return contor;
}

int Nr_cuvinte()
{
FILE *f;
int cont = 0;
char fraza[81];
f = fopen("[Link]", "r");
while(fgets(fraza, 81, f) != NULL)
cont += Nr_cuvinte(fraza);
fclose(f);
return cont;
}

int Cuv_lung_max()

4
{
FILE *f;
int i=0, len;
char fraza[81];
f = fopen("[Link]", "r");
while(fgets(fraza, 81, f) != NULL)
{
i++;
printf("\n In fraza cu numarul %d sunt urmatoarele cuvinte de lungime maxima: \n", i);
len = Cuv_lung_max(fraza);
if(len > lung) lung = len;
}
fclose(f);
return lung;
}

int Cuv_2litere(char litera)


{
FILE *f, *g;
char fraza[81];
char copia[81];
char *cuvant;
int n, i;
f = fopen("[Link]", "r");
g = fopen("date05_11.txt", "w");
while(fgets(fraza, 81, f) != NULL)
{
strcpy(copia, fraza);
if((cuvant = strtok(copia, " ,.!?:\n")) == NULL ) return 0;
n = 0;
for(i = 0; i < strlen(cuvant); i++)
if(cuvant[i] == litera) n++;
if(n >= 2)
{
fputs(cuvant, g);
fputs(", ", g);
}

while((cuvant = strtok(NULL, " ,.!?:\n")) != NULL )


{
n = 0;
for(i = 0; i < strlen(cuvant); i++)
if(cuvant[i] == litera) n++;
if(n >= 2)
{
fputs(cuvant, g);
fputs(", ", g);
}

}
}
fclose(f);
fclose(g);
return 1;
}

5
void Delete(char litera)
{
FILE *f, *fis;
char fraza[81];
char copia[81];
char *cuvant, *p, cuv[20];
int i;
f = fopen("[Link]", "r");
fis = fopen("date05_12.txt", "w");
while(fgets(fraza, 81, f) != NULL)
{
strcpy(copia, fraza);
if((cuvant = strtok(copia, " ,.!?:\n")) == NULL ) continue;
if((strchr(cuvant, litera) != NULL) && (strchr(cuvant, litera) != strrchr(cuvant, litera)))
{
p = strstr(fraza, cuvant);
i = p - fraza;
strcpy(&fraza[i-1], &fraza[i+strlen(cuvant)]);
}

while((cuvant = strtok(NULL, " ,.!?:\n")) != NULL )


if((strchr(cuvant, litera) != NULL) && (strchr(cuvant, litera) != strrchr(cuvant, litera)))
{
p = strstr(fraza, cuvant);
i = p - fraza;
strcpy(&fraza[i-1], &fraza[i+strlen(cuvant)]);
}
fputs(fraza, fis);
}
fclose(f);
fclose(fis);
}
V. Rezultate
1. Determinarea numărului de cuvinte din frază.

2. Determinarea cuvintelor de lungime maximă din frază.

3. Determinarea cuvintelor ce conțin litera indicată de cel puțin 2 ori din frază.

4. Determinarea numărului de cuvinte în fișier.

6
5. Determinarea cuvintelor de lungime maximă din fișier.

6. Transcrierea în alt fişier text a cuvintelor ce conțin litera indicată de cel puțin 2 ori.

7. Ștergerea din fişierul text a cuvintelor ce conțin litera indicată de cel puțin 2 ori.

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