Va rog scrieţi un program care citeşte de la tastatură un text înlocuind fiecare cuvânt care are lungimea para cu simbolul *. afişează pe ecran textul obţinut sau mesajul nu exista dacă nu sunt cuvinte de lungime para.(c++)
AntiEaglesDavids:
tu ce-ai incercat?
{char s[100],sep[]=" ",*a,s1[100];
int ok=0,y=0;
cin.get(s,100);
a=strtok(s,sep);
while(a)
{if(strlen(a)%2==0)
{strcat(s1," # ");
ok=1;}
else
{strcat(s1,a);
strcat(s1," ");}
a=strtok(NULL,sep);
}
if(ok==1)
cout<<s1;
else
cout<<"nu exista";
} dar nu e bun fiindca am facut al sir si eu trebuia sa inlocuiesc in sir nu sa formez alt sir si nu stiu cum sa inlocuiesc in sir
Răspunsuri la întrebare
Răspuns de
3
Ceva de genu:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[100]{}, s1[100]{};
int ok = 0;
cin.get(s, 100);
const char sep[] = " ";
char* a = strtok(s, sep);
while (a)
{
if (strlen(a) % 2 == 0)
{
strcat(s1, "* ");
ok = 1;
}
else
{
strcat(s1, a);
strcat(s1, " ");
}
a = strtok(nullptr, sep);
}
if (ok == 1)
cout << s1;
else
cout << "nu exista";
}
Cu un singur sir, desi nu sunt sigur daca pe alte compilatoare rezultatul va fi la fel:
#include <iostream>
#include <cstring>
int main()
{
const int lgMax = 100;
char s[lgMax]{};
std::cin.get(s, lgMax);
size_t lg = std::strlen(s);
bool ok = false;
for (size_t i = 0, cuvlg = 0; i < lg + 1; ++i) {
if (std::isalpha(s[i]))
++cuvlg;
else {
if (cuvlg % 2 == 0 && cuvlg) {
std::strcpy(s + i - cuvlg, s + i - 1);
s[i - cuvlg] = '*';
lg = strlen(s);
i -= cuvlg + 1;
ok = true;
}
cuvlg = 0;
}
}
if (ok)
std::cout << s;
else
std::cout << "nu exista";
}
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[100]{}, s1[100]{};
int ok = 0;
cin.get(s, 100);
const char sep[] = " ";
char* a = strtok(s, sep);
while (a)
{
if (strlen(a) % 2 == 0)
{
strcat(s1, "* ");
ok = 1;
}
else
{
strcat(s1, a);
strcat(s1, " ");
}
a = strtok(nullptr, sep);
}
if (ok == 1)
cout << s1;
else
cout << "nu exista";
}
Cu un singur sir, desi nu sunt sigur daca pe alte compilatoare rezultatul va fi la fel:
#include <iostream>
#include <cstring>
int main()
{
const int lgMax = 100;
char s[lgMax]{};
std::cin.get(s, lgMax);
size_t lg = std::strlen(s);
bool ok = false;
for (size_t i = 0, cuvlg = 0; i < lg + 1; ++i) {
if (std::isalpha(s[i]))
++cuvlg;
else {
if (cuvlg % 2 == 0 && cuvlg) {
std::strcpy(s + i - cuvlg, s + i - 1);
s[i - cuvlg] = '*';
lg = strlen(s);
i -= cuvlg + 1;
ok = true;
}
cuvlg = 0;
}
}
if (ok)
std::cout << s;
else
std::cout << "nu exista";
}
Alte întrebări interesante
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Chimie,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă