Понятия не имею, почему компилятор выбрасывает нарушение прав доступа при вводе 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;
}