В строке убрать все запятые, пробелы и точки. Буквы нижнего регистра привести к верхнему.
input | output | Описание |
./Task22 «he,.llo,. wo.,.,.,.,r.l. d» | HELLOWORLD | На входе поступает один параметр в кавычках, вкотором есть пробел. Он убирается программой. |
./Task22 2425s,Go.oD b24.ye | 2425SGOODB24YE | На входе поступает два параметра, пробел между параметрами убирается автоматически (пробел служил разделением между параметрами). |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> #include <string.h> using namespace std; int main(int argc, char* argv[]) { string s=""; if(argc > 1){ for( int i = 1 ; i < argc; i++){ for( int j = 0; j < strlen(argv[i]); j++){ if(argv[i][j]==' '||argv[i][j]=='.'||argv[i][j]==','){ s+=""; }else{ s+=toupper(argv[i][j]); } } } }else{s="Sorry";} cout << s << endl; return 0; } |
Достаточно было обработать первый аргумент командной стоки. Но можно и так. Только добавьте тесты как обычно.
Поскольку данные передаются через командную строку и обрабатываются довольно экзотически, нужно в тестах указывать не просто входные данные, а строку запуска. Т.е. так как Вы запускаете на скриншоте koding.com пробелы в программу не попадают.
Я так понял, что первый тест (./Task22 “he,.llo,. wo.,.,.,.,r.l. d”) демонстрирует обработку одного параметра с пробелом внутри. Второй тест (./Task22 2425s,Go.oD b24.ye) — обработку двух параметров, а пробелы удаляются автоматически операционной системой.
Правильно? Может опишите это? Или пусть читатель сам догадывается?