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
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
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Fizică,
9 ani în urmă