Когда я компилирую эту программу, я получаю статус выхода -1. Эта программа находит ранг данного слова.
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> long int factorial(long int number) { if(number == 1 || number == 0) return 1; else return factorial(number-1) * number; } long int rank(char *originalword, char *sortedword) { int i=0,j=0, ntf; long int rankofword=0; while(1) { if(sortedword[j] == '\0') j++; else if(j == strlen(originalword)) j=0; if(originalword[i] == sortedword[j]) { sortedword[j] = '\0'; i++; j=0; if(i == strlen(originalword) - 1) rankofword += 1; continue; } else { ntf = (i+1) - strlen(originalword) ; rankofword += factorial(ntf); if(ntf == 0) break; j++; } } return rankofword; } int main() { char *originalword = (char *)malloc(100 * sizeof(char)); char *sortedword = (char *)malloc(100 * sizeof(char)); int rankofword=0; strcpy(originalword, "cat"); strcpy(sortedword, "act"); rankofword = rank(originalword, sortedword); printf("The rank of the given word is %d", rankofword); free(originalword); free(sortedword); }
Этот код-всего лишь фрагмент программы. Код, размещенный здесь, - это просто функция, которая выполняет основную работу.
Функция rank принимает в качестве входных данных две строки.
Одна строка-это исходное слово, ранг которого необходимо выяснить, а другая строка-это исходное слово, отсортированное в алфавитном порядке.
Функция находит ранг слова, используя методику, упомянутую на этом сайте:
https://gradestack.com/Complete-CAT-Prep/Permutation-and/Finding-the-Rank-of-a/19142-3882-35794-study-wtw
Но когда я компилирую программу, она дает мне статус выхода -1.
Что я уже пробовал:
Остальные функции в программе работают нормально. Проблема заключается в ранговой функции. Я проверил все ошибки в функции, но не могу понять, в чем причина этого.