Informatică, întrebare adresată de j234mediplant, 8 ani în urmă

realizati un program care, fiind dat un sir de caractere s, format din cuvinte separate prin spatiu, va afisa cuvintele cate unul pe rand dar caracterele din fiecare cuvant separate prin spatiu.
#include

#include

#include

using namespace std;

int main()

{

char s[100], *cuv;

int i, l;


cin.getline(s, 100);

cuv = strtok(s, " ");

while (cuv) {

for (i = 0; i <= strlen(cuv) - 1; i++) {

if (i == strlen(cuv) - 1)

cout << s[i] << endl;

else

cout << s[i] << " ";

}

cuv = strtok(NULL, " ");

}


}

cu inputul: este marti

afiseaza:
e s t e
e s t e

imi poate explica cineva ce este gresit la codul de mai sus?

Răspunsuri la întrebare

Răspuns de OiLoveYouO
1

Răspuns:

Buna! O mica greseala, ai scris:

cout << s[i] << " "; si

cout << s[i] << " ";

Trebuie sa fie:

cout << cuv[i] << " ";

cout << cuv[i] << " ";

(de aia ti se afisa de 2 ori primul cuvant din s)

Uite codul modificat:

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

char s[100], *cuv;

int i, l;

cin.getline(s, 100);

cuv = strtok(s, " ");

while (cuv) {

for (i = 0; i <= strlen(cuv) - 1; i++) {

if (i == strlen(cuv) - 1)

cout << cuv[i] << endl;

else

cout << cuv[i] << " ";

}

cuv = strtok(NULL, " ");

}

return 0;

}

Anexe:
Alte întrebări interesante