Clasa a X-a · Șiruri de caractereRead in English
Parcurgerea unui șir și lungimea lui în C++
În engleză: Walking a string and its length
Ideea
Un șir de caractere în stil C este un vector de char terminat cu caracterul nul '\0'. cin.getline(s, 256) citește tot rândul, cu tot cu spații (cin >> s s-ar opri la primul spațiu). Lungimea se poate număra de mână, mergând până la '\0', sau cu funcția strlen din <cstring>; cele două valori afișate trebuie să coincidă. Pe al doilea rând afișăm caracterele separate prin cratimă, ca să se vadă și spațiile.
Descrierea în engleză
A C-style string is a char array terminated by the null character '\0'. cin.getline(s, 256) reads the whole line, spaces included (cin >> s would stop at the first space). The length can be counted by hand, going up to '\0', or with the function strlen from <cstring>; the two values printed must match. On the second line we print the characters separated by hyphens, so the spaces are visible too.
- Complexitate
- O(L), unde L este lungimea șirului
- Clasa
- Clasa a X-a (Grade 10)
- Capitol
- Șiruri de caractere
Exemple
Intrare
Ana are mere
Ieșire așteptată
12 12 A-n-a- -a-r-e- -m-e-r-e
Codul C++
Codul complet, cu comentarii în română. Îl poți modifica liber și îl poți reseta oricând.
/*
* Titlu: Parcurgerea unui șir și lungimea lui
* Clasa: 10
* Capitol: Șiruri de caractere
* Descriere: Un șir de caractere în stil C este un vector de char terminat cu
* caracterul nul '\0'. cin.getline(s, 256) citește tot rândul, cu tot
* cu spații (cin >> s s-ar opri la primul spațiu). Lungimea se poate
* număra de mână, mergând până la '\0', sau cu funcția strlen din
* <cstring>; cele două valori afișate trebuie să coincidă. Pe al doilea
* rând afișăm caracterele separate prin cratimă, ca să se vadă și spațiile.
* Complexitate: O(L), unde L este lungimea șirului
*
* Exemplu
* Intrare: Ana are mere
* Ieșire:
* 12 12
* A-n-a- -a-r-e- -m-e-r-e
*/
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[256];
cin.getline(s, 256);
int lungime = 0;
while (s[lungime] != '\0')
lungime++;
cout << lungime << ' ' << strlen(s) << '\n';
for (int i = 0; s[i] != '\0'; i++)
{
if (i > 0)
cout << '-';
cout << s[i];
}
cout << '\n';
return 0;
}
Rulează pe un g++ adevărat (C++17, -O2) prin Compiler Explorer. Programele trebuie să se termine repede: există o limită de timp.