4,Дан рядок. Показати номери символів, які збігаються з останнім символом рядка.
5,Дан рядок. Показати третій, шостий, дев'ятий і так далі символи.
6,Дан рядок. Визначте загальну кількість символів '+' і '-' в ньому. А також скільки таких символів, після яких йде цифра нуль.
7,Дан рядок. Визначте, який символ в ній зустрічається раніше: 'x' або 'w'. Якщо якогось із символів немає, вивести повідомлення про це.
8,Дано два рядки. Вивести більший по довжині рядок стільки раз, на скільки символів відрізняються рядки.
9,Дан рядок. Якщо він починається на 'abc', то замінити їх на 'www', інакше додати в кінець рядка 'ttt'.
10, Дан рядок. Якщо його довжина більше 10, то залишити в рядку тільки перші 6 символів, інакше доповнити рядок символами 'o' до довжини 12.
мова програмування с++
Answers & Comments
Відповідь:
4. Показати номери символів, які збігаються з останнім символом рядка:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
char last = s[s.size()-1];
for (int i = 0; i < s.size(); i++) {
if (s[i] == last) {
cout << i << " ";
}
}
return 0;
}
5. Показати третій, шостий, дев’ятий і так далі символи:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
for (int i = 2; i < s.size(); i += 3) {
cout << s[i] << " ";
}
return 0;
}
6. Визначте загальну кількість символів ‘+’ і ‘-’ в ньому. А також скільки таких символів, після яких йде цифра нуль:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
int total = 0, after_zero = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '+' || s[i] == '-') {
total++;
if (i+1 < s.size() && s[i+1] == '0') {
after_zero++;
}
}
}
cout << "Total: " << total << ", After zero: " << after_zero;
return 0;
}
7. Визначте, який символ в ній зустрічається раніше: ‘x’ або ‘w’. Якщо якогось із символів немає, вивести повідомлення про це:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
int x = s.find('x'), w = s.find('w');
if (x == string::npos && w == string::npos) {
cout << "Neither 'x' nor 'w' found";
} else if (x != string::npos && w != string::npos) {
cout << ((x < w) ? "'x' found first" : "'w' found first");
} else if (x != string::npos) {
cout << "'x' found, but 'w' not found";
} else {
cout << "'w' found, but 'x' not found";
}
return 0;
}
8. Дано два рядки. Вивести більший по довжині рядок стільки раз, на скільки символів відрізняються рядки:
#include <iostream>
#include <string>
using namespace std;
int main() {
string a, b;
getline(cin, a);
getline(cin, b);
int diff = abs(a.size() - b.size());
string& longer = (a.size() > b.size()) ? a : b;
for (int i = 0; i < diff; i++) {
cout << longer << endl;
}
}
9. Дан рядок. Якщо він починається на ‘abc’, то замінити їх на ‘www’, інакше додати в кінець рядка ‘ttt’:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
if (s.substr(0, 3) == "abc") {
s.replace(0, 3, "www");
} else {
s += "ttt";
}
}
10. Дан рядок. Якщо його довжина більше 10, то залишити в рядку тільки перші 6 символів, інакше доповнити рядок символами ‘o’ до довжини 12:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
if (s.size() > 10) {
s = s.substr(0, 6);
} else {
while (s.size() < 12) {
s += 'o';
}
}
}