Кажется, проблема связана с объявлением par()
:
int par(char s[][80],int,int,char);
Здесь четвертый параметр - char
.Однако внутри функции main()
в строке
cout<<par(s,n1,num1,word);
вы передаете слово, которое объявлено как char[80]
, и массив легко распадается на указатели в C ++ и C. (См. https://stackoverflow.com/a/1328246/6710751 для объяснения того, почему это происходит.) В общем, вы передаете char[]
(или char*
, указатель на char
), в то время как компилятор ожидает только char
.
Конечно, более поздняя реализация par()
после метода main()
имеет правильный тип для 4-го параметра, но компилятор еще не знает об этом, глядя на код внутри main()
.Чтобы исправить это, вам нужно настроить объявление par()
, чтобы оно соответствовало реализации:
int par(char s[][80],int n1,int num1,char word[80]);
Бонус: Поскольку это C ++, а не C, вы должны предпочесть std::string
более C-стиль char[]
для любых строк.std::string
проще в обращении, он всегда знает размер (в отличие от массива символов) и переполнения буфера, утечки памяти и тому подобное, что довольно часто встречается при обработке строк в стиле Cможно избежать.