Когда я запускаю этот код, я получаю предупреждение: управление достигает конца не пустой функции [Wreturn-type]. Я думаю, что это может быть случай бесконечной рекурсии, но я не знаю, как это исправить.
Предполагается, что эта программа будет вводить числа, пока вы не введете что-то, что не является числом. Функция poramnet()
меняет любые 9 на 7 и возвращает их. У меня также есть условие, когда мне нужно распечатать 5 самых больших чисел, и если у меня нет 5 чисел в массиве, я должен распечатать их все.
#include <stdio.h>
#include<string.h>
#include<malloc.h>
#include<ctype.h>
int poramnet(int n, int m, int i){ //i should start with 1
if(n==0)
return m;
if(n%10==9){
m+=i*7;
}
else{
m+=i*(n%10);
return poramnet(n/10, m, i*10);
}
}
int main()
{
int array1[100], i=0, output[100], br=1, j, temp, m=0, n;
while(1){
scanf("%d", &array1[i]);
if(!isdigit(array1[i]))
break;
i++;
}
n=i;
for(i=0;i<n;i++){
output[i]=poramnet(array1[i], m, br);
}
for(i=0;i<n-1;i++){
for(j=1;i<n;j++){
if(output[i]>output[j]){
temp=output[i];
output[i]=output[j];
output[j]=temp;
}
}
}
if(n<5){
for(i=0;i<n;i++)
printf("%d ", output[i]);
}
else{
for(i=0;i<5;i++){
printf("%d ", output[i]);
}
}
return 0;
}