Как поступить (сравнить) с вводом, разделенным пробелом c ++ - PullRequest
0 голосов
/ 29 марта 2020

Понятия не имею, почему компилятор выбрасывает нарушение прав доступа при вводе ile = 1000. Я знаю, что в других входах, вероятно, компилятор вводит предложения, поэтому тогда это будет выглядеть как предложение1, предложение2, но в этих предложениях слова также разделены пробелом, поэтому я совершенно не представляю, как получить этот ввод

std::operator>><char,std::char_traits<char> >()
_Istr = nullptr+117
_Str = nullptr+117
_State = 0
_Str0 = 0xE76A2E98 -> "dqecjdxmyweglskxfpnqqups..."
_Ok = std::basic_istream<char,std::char_traits<char> >::sentry{...}

I Я не уверен, какой тип ввода мне следует попробовать. Я должен проверить, являются ли входы палиндромами. Пример ввода:

12
a a
b a
abc cba
abc abc
abc bac
abc xyz
aabc abac
aabc abc
abc aabc
aabbcc abcccc

Я попытался сделать это с помощью cin, любой, как я описал в верхней части, выдает нарушение доступа, не знаю почему. Getline не работает, так как слова представляют собой 1 ввод, разделенный пробелом. Getchar выдает еще одну ошибку FAIL_STACK. Любые идеи? Мой код:

#include <iostream>
#include <string.h>

using namespace std;

void qsort(char tab[], int min, int max)
{
    if(min<max)
    {
        int min_min = min;
        for(int i=min+1;i<=max;i++)
        {
            if(tab[i]<tab[min])
            {
                swap(tab[++min_min],tab[i]);
            }
        }
        swap(tab[min],tab[min_min]);
        qsort(tab,min,min_min-1);
        qsort(tab,min_min+1,max);
    }
}
bool sprawdz(char tab[],char tab2[])
{
    for(int i=0;i<strlen(tab);i++)
    {
        if(tab[i]!=tab2[i])
        {
            return false;
            break;
        }
    }
    return true;
}

int main()
{
    char tablica1[100];
    char tablica2[100];
    int ile;
    cin>>ile;
    for(int i=0;i<ile;i++)
    {
        cin>>tablica1>>tablica2;
        qsort(tablica1,0,strlen(tablica1)-1);
        qsort(tablica2,0,strlen(tablica2)-1);
        if(sprawdz(tablica1,tablica2))
        {
            cout<<"TAK"<<endl;
        }
        else
        {
            cout<<"NIE"<<endl;
        }
        memset(tablica1,0,100);
        memset(tablica2,0,100);
    }

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...