Я пишу код, чтобы ввести несколько строк и сравнить длины строк, а затем напечатать более короткую строку для вывода на консоль. но код работает не так, как ожидалось, и при предоставлении любого набора входов вывод, который я получаю, представляет собой пустой экран (ни одна строка не отображается). Может ли кто-нибудь сказать мне, что я делаю неправильно?Почему мой код работает не так, как ожидалось?
input
массив имеет строки, предоставленные пользователем, и эти строки также присутствуют в a
, так что линия (string[i] == a[j]
) будет выполняться с истинным для конкретного значения в a
.
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
long n, m;
cin >> n >> m;
char a[m][10], b[m][10]; // will print the shorter out of these two
for (long i = 0; i < m; i++) cin >> a[i] >> b[i];
char input[n][10];
for (long i = 0; i < n; i++) cin >> input[i];
for (long i = 0; i < n; i++)
{
for (long j = 0; j < m; j++)
{
if (input[i] == a[j]) // checks which set of a,b does this input correspond to
{
if (strlen(a[j]) > strlen(b[j])) cout << b[j];
else cout << a[j];
if (i < n - 1) cout << " ";
}
}
}
}
Я думаю, что что-то не так с кодом (input[i] == a[j]
), но я не уверен, что.
Поскольку это помечено как вопрос на C++, есть ли причина, по которой вы не используете 'std :: string'? – Adam27X
Ваше название точно соответствует одной из причин «Голосовать, чтобы закрыть» .... – ravi
.. потому что вы не отлаживали ее. Если бы вы сделали какую-нибудь отладку, вы бы рассказали нам о том, что узнали, не так ли? –