2016-12-29 3 views
2

Challenge: Учитывая 2 строки ввода, вывода три линии:Переключение буквы на вызов C++

  1. Количество символов в каждой строке, разделенных пробелом;
  2. Строки, объединенные вместе;
  3. Строки, разделенные пробелом, и первая буква обоих слов заменены.

Код я продюсировал:

#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
    // Complete the program 
    string firstString, secondString; 
    cin>>firstString>>secondString; 
    cout<<firstString.length()<<" "<<secondString.length()<<"\n"; 
    cout<<firstString<<secondString<<"\n"; 
    string wierdString; 
    wierdString = secondString[0]; 
    for (int i = 1; i <= firstString.length(); i++) { 
     wierdString += firstString[i]; 
    } 
    wierdString = wierdString + " " + firstString[0]; 
    for (int j = 1; j <= secondString.length(); j++) { 
     wierdString += secondString[j]; 
    } 
    cout << wierdString; 
    return 0; 
} 

Контрольный пример:

ввода (STDIN)
abcd ef
Ваш выход (стандартный вывод)
4 2
abcdef
ebcd af
Ожидаемый результат
4 2
abcdef
ebcd af
Компилятор Сообщение
Неправильный ответ


Для меня (будучи новичком) вывод выглядит так же, как ожидаемый результат. Есть ли проблема с моим кодом (кроме using namespace std;), который может привести к тому, что это не сработает? Я все еще новичок, и я хотел бы узнать, что не так.

+0

Возможно, вы, вероятно, выводите еще несколько (невидимых) символов. Проверьте строки новой строки и т. Д. –

+0

@AlexanderTorstling Я попытался копировать ожидаемый результат и полученный результат в Notepad ++ и включил все скрытые символы. Казалось, что они соответствуют (CR/LF в конце каждой строки). –

+0

Почему весь этот цикл кода просто для обмена значениями? Существует 'std :: swap', который делает это для вас. 'std :: swap (firstString [0], secondString [0]);' – PaulMcKenzie

ответ

4

Строка s индексируется от 0 до s.length() - 1 (включительно). Вы выполняете итерацию со следующим условием: i <= firstString.length(), что означает чтение из-за конца вашей строки.

+0

В этом была проблема! Благодаря! –

+0

Извлеченный урок: Не доверяйте Notepad ++ :) Попробуйте что-то вроде «od» или «xxd» для дампа содержимого файла. Для победы я знаю только xvi32. –

2

Код, кажется, работает нормально, и вы также получаете желаемый результат. Я думаю, что с ним ничего не получится. enter image description here

+0

У вас было дополнительное пространство во втором выходе. Я этого не сделал. Проблема была решена путем запоминания того, что свойство '.length' было 0-индексированным –

Смежные вопросы